File tree Expand file tree Collapse file tree 2 files changed +9
-1
lines changed
Expand file tree Collapse file tree 2 files changed +9
-1
lines changed Original file line number Diff line number Diff line change @@ -218,7 +218,7 @@ def combine_policies(original, additions)
218218 # when each hash contains a value for a given key.
219219 original . merge ( additions ) do |directive , lhs , rhs |
220220 if source_list? ( directive )
221- ( lhs . to_a + rhs ) . uniq . compact
221+ ( lhs . to_a + rhs . to_a ) . compact . uniq
222222 else
223223 rhs
224224 end
@@ -343,6 +343,8 @@ def build_value
343343 #
344344 # Returns a string representing a directive.
345345 def build_directive ( directive_name )
346+ return if @config [ directive_name ] . nil?
347+
346348 source_list = @config [ directive_name ] . compact
347349 return if source_list . empty?
348350
Original file line number Diff line number Diff line change @@ -155,6 +155,7 @@ module SecureHeaders
155155 specify { expect ( ContentSecurityPolicy . idempotent_additions? ( { script_src : %w( a.com b.com ) } , script_src : %w( ) ) ) . to be true }
156156 specify { expect ( ContentSecurityPolicy . idempotent_additions? ( { script_src : %w( a.com b.com ) } , script_src : [ nil ] ) ) . to be true }
157157 specify { expect ( ContentSecurityPolicy . idempotent_additions? ( { script_src : %w( a.com b.com ) } , style_src : [ nil ] ) ) . to be true }
158+ specify { expect ( ContentSecurityPolicy . idempotent_additions? ( { script_src : %w( a.com b.com ) } , style_src : nil ) ) . to be true }
158159 end
159160
160161 describe "#value" do
@@ -201,6 +202,11 @@ module SecureHeaders
201202 expect ( csp . value ) . to eq ( "default-src example.org" )
202203 end
203204
205+ it "does not add a directive if the value is nil" do
206+ csp = ContentSecurityPolicy . new ( default_src : [ "https://example.org" ] , script_src : nil )
207+ expect ( csp . value ) . to eq ( "default-src example.org" )
208+ end
209+
204210 it "deduplicates any source expressions" do
205211 csp = ContentSecurityPolicy . new ( default_src : %w( example.org example.org example.org ) )
206212 expect ( csp . value ) . to eq ( "default-src example.org" )
You can’t perform that action at this time.
0 commit comments