@@ -82,7 +82,7 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
8282
8383 describe "#normalize_csp_options" do
8484 before ( :each ) do
85- default_opts [ :script_src ] << ' self none'
85+ default_opts [ :script_src ] << " ' self' ' none'"
8686 @opts = default_opts
8787 end
8888
@@ -106,7 +106,7 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
106106
107107 it "accepts procs for report-uris" do
108108 opts = {
109- :default_src => 'self' ,
109+ :default_src => " 'self'" ,
110110 :report_uri => proc { "http://lambda/result" }
111111 }
112112
@@ -131,7 +131,7 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
131131
132132 allow ( controller ) . to receive ( :current_user ) . and_return ( user )
133133 opts = {
134- :default_src => "self" ,
134+ :default_src => "' self' " ,
135135 :enforce => lambda { |c | c . current_user . beta_testing? }
136136 }
137137 csp = ContentSecurityPolicy . new ( opts , :controller => controller )
@@ -150,22 +150,22 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
150150
151151 context "auto-whitelists data: uris for img-src" do
152152 it "sets the value if no img-src specified" do
153- csp = ContentSecurityPolicy . new ( { :default_src => 'self' } , :request => request_for ( CHROME ) )
153+ csp = ContentSecurityPolicy . new ( { :default_src => " 'self'" } , :request => request_for ( CHROME ) )
154154 expect ( csp . value ) . to eq ( "default-src 'self'; img-src 'self' data:;" )
155155 end
156156
157157 it "appends the value if img-src is specified" do
158- csp = ContentSecurityPolicy . new ( { :default_src => 'self' , :img_src => 'self' } , :request => request_for ( CHROME ) )
158+ csp = ContentSecurityPolicy . new ( { :default_src => " 'self'" , :img_src => " 'self'" } , :request => request_for ( CHROME ) )
159159 expect ( csp . value ) . to eq ( "default-src 'self'; img-src 'self' data:;" )
160160 end
161161
162162 it "doesn't add a duplicate data uri if img-src specifies it already" do
163- csp = ContentSecurityPolicy . new ( { :default_src => 'self' , :img_src => 'self data:' } , :request => request_for ( CHROME ) )
163+ csp = ContentSecurityPolicy . new ( { :default_src => " 'self'" , :img_src => " 'self' data:" } , :request => request_for ( CHROME ) )
164164 expect ( csp . value ) . to eq ( "default-src 'self'; img-src 'self' data:;" )
165165 end
166166
167167 it "allows the user to disable img-src data: uris auto-whitelisting" do
168- csp = ContentSecurityPolicy . new ( { :default_src => 'self' , :img_src => 'self' , :disable_img_src_data_uri => true } , :request => request_for ( CHROME ) )
168+ csp = ContentSecurityPolicy . new ( { :default_src => " 'self'" , :img_src => " 'self'" , :disable_img_src_data_uri => true } , :request => request_for ( CHROME ) )
169169 expect ( csp . value ) . to eq ( "default-src 'self'; img-src 'self';" )
170170 end
171171 end
@@ -191,47 +191,47 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
191191
192192 context "when using a nonce" do
193193 it "adds a nonce and unsafe-inline to the script-src value when using chrome" do
194- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
194+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
195195 expect ( header . value ) . to include ( "script-src 'self' 'nonce-#{ header . nonce } ' 'unsafe-inline'" )
196196 end
197197
198198 it "adds a nonce and unsafe-inline to the script-src value when using firefox" do
199- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce" ) , :request => request_for ( FIREFOX ) , :controller => controller )
199+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce" ) , :request => request_for ( FIREFOX ) , :controller => controller )
200200 expect ( header . value ) . to include ( "script-src 'self' 'nonce-#{ header . nonce } ' 'unsafe-inline'" )
201201 end
202202
203203 it "adds a nonce and unsafe-inline to the script-src value when using opera" do
204- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce" ) , :request => request_for ( OPERA ) , :controller => controller )
204+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce" ) , :request => request_for ( OPERA ) , :controller => controller )
205205 expect ( header . value ) . to include ( "script-src 'self' 'nonce-#{ header . nonce } ' 'unsafe-inline'" )
206206 end
207207
208208 it "does not add a nonce and unsafe-inline to the script-src value when using Safari" do
209- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce" ) , :request => request_for ( SAFARI ) , :controller => controller )
209+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce" ) , :request => request_for ( SAFARI ) , :controller => controller )
210210 expect ( header . value ) . to include ( "script-src 'self' 'unsafe-inline'" )
211211 expect ( header . value ) . not_to include ( "nonce" )
212212 end
213213
214214 it "does not add a nonce and unsafe-inline to the script-src value when using IE" do
215- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce" ) , :request => request_for ( IE ) , :controller => controller )
215+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce" ) , :request => request_for ( IE ) , :controller => controller )
216216 expect ( header . value ) . to include ( "script-src 'self' 'unsafe-inline'" )
217217 expect ( header . value ) . not_to include ( "nonce" )
218218 end
219219
220220 it "adds a nonce and unsafe-inline to the style-src value" do
221- header = ContentSecurityPolicy . new ( default_opts . merge ( :style_src => "self nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
221+ header = ContentSecurityPolicy . new ( default_opts . merge ( :style_src => "' self' nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
222222 expect ( header . value ) . to include ( "style-src 'self' 'nonce-#{ header . nonce } ' 'unsafe-inline'" )
223223 end
224224
225225 it "adds an identical nonce to the style and script-src directives" do
226- header = ContentSecurityPolicy . new ( default_opts . merge ( :style_src => "self nonce" , :script_src => "self nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
226+ header = ContentSecurityPolicy . new ( default_opts . merge ( :style_src => "' self' nonce" , :script_src => "' self' nonce" ) , :request => request_for ( CHROME ) , :controller => controller )
227227 nonce = header . nonce
228228 value = header . value
229229 expect ( value ) . to include ( "style-src 'self' 'nonce-#{ nonce } ' 'unsafe-inline'" )
230230 expect ( value ) . to include ( "script-src 'self' 'nonce-#{ nonce } ' 'unsafe-inline'" )
231231 end
232232
233233 it "does not add 'unsafe-inline' twice" do
234- header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "self nonce 'unsafe-inline'" ) , :request => request_for ( CHROME ) , :controller => controller )
234+ header = ContentSecurityPolicy . new ( default_opts . merge ( :script_src => "' self' nonce 'unsafe-inline'" ) , :request => request_for ( CHROME ) , :controller => controller )
235235 expect ( header . value ) . to include ( "script-src 'self' 'nonce-#{ header . nonce } ' 'unsafe-inline';" )
236236 end
237237 end
@@ -279,7 +279,7 @@ def request_for user_agent, request_uri=nil, options={:ssl => false}
279279
280280 describe ".add_to_env" do
281281 let ( :controller ) { double }
282- let ( :config ) { { :default_src => 'self' } }
282+ let ( :config ) { { :default_src => " 'self'" } }
283283 let ( :options ) { { :controller => controller } }
284284
285285 it "adds metadata to env" do
0 commit comments