@@ -49,6 +49,11 @@ def setup
4949 def test_truth
5050 end
5151
52+ def test_foo_and_bar_different_digests
53+ refute_equal @foo_js_digest , @bar_js_digest
54+ refute_equal @foo_css_digest , @bar_css_digest
55+ end
56+
5257 def assert_servable_asset_url ( url )
5358 path , query = url . split ( "?" , 2 )
5459 path = path . sub ( @view . assets_prefix , "" )
@@ -115,6 +120,22 @@ def test_stylesheet_link_tag
115120 @view . stylesheet_link_tag ( "print" , :media => "<hax>" )
116121 end
117122
123+ def test_javascript_include_tag_integrity
124+ assert_dom_equal %(<script src="/javascripts/static.js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
125+ @view . javascript_include_tag ( "static" , integrity : "ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript" )
126+
127+ assert_dom_equal %(<script src="/javascripts/static.js"></script>) ,
128+ @view . javascript_include_tag ( "static" , integrity : true )
129+ end
130+
131+ def test_stylesheet_link_tag_integrity
132+ assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
133+ @view . stylesheet_link_tag ( "static" , integrity : "ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" )
134+
135+ assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />) ,
136+ @view . stylesheet_link_tag ( "static" , integrity : true )
137+ end
138+
118139 def test_javascript_path
119140 assert_equal "/javascripts/xmlhr.js" , @view . javascript_path ( "xmlhr" )
120141 assert_equal "/javascripts/xmlhr.js" , @view . javascript_path ( "xmlhr.js" )
@@ -266,6 +287,9 @@ def test_javascript_include_tag
266287 assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js"></script>) ,
267288 @view . javascript_include_tag ( :foo )
268289
290+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js"></script>\n <script src="/assets/bar-#{ @bar_js_digest } .js"></script>) ,
291+ @view . javascript_include_tag ( :foo , :bar )
292+
269293 assert_servable_asset_url "/assets/foo-#{ @foo_js_digest } .js"
270294 end
271295
@@ -279,9 +303,40 @@ def test_stylesheet_link_tag
279303 assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" />) ,
280304 @view . stylesheet_link_tag ( :foo )
281305
306+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" />\n <link href="/assets/bar-#{ @bar_css_digest } .css" media="screen" rel="stylesheet" />) ,
307+ @view . stylesheet_link_tag ( :foo , :bar )
308+
282309 assert_servable_asset_url "/assets/foo-#{ @foo_css_digest } .css"
283310 end
284311
312+ def test_javascript_include_tag_integrity
313+ super
314+
315+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
316+ @view . javascript_include_tag ( "foo" , integrity : true )
317+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
318+ @view . javascript_include_tag ( "foo.js" , integrity : true )
319+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
320+ @view . javascript_include_tag ( :foo , integrity : true )
321+
322+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>\n <script src="/assets/bar-#{ @bar_js_digest } .js" integrity="ni:///sha-256;g0JYFeYSYGXe376R0JrRzS6CpYpC1HiqtwBsVt_XAWU?ct=application/javascript"></script>) ,
323+ @view . javascript_include_tag ( :foo , :bar , integrity : true )
324+ end
325+
326+ def test_stylesheet_link_tag_integrity
327+ super
328+
329+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
330+ @view . stylesheet_link_tag ( "foo" , integrity : true )
331+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
332+ @view . stylesheet_link_tag ( "foo.css" , integrity : true )
333+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
334+ @view . stylesheet_link_tag ( :foo , integrity : true )
335+
336+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />\n <link href="/assets/bar-#{ @bar_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;Vd370-VAW4D96CVpZcjFLXyeHoagI0VHwofmzRXetuE?ct=text/css" />) ,
337+ @view . stylesheet_link_tag ( :foo , :bar , integrity : true )
338+ end
339+
285340 def test_javascript_path
286341 super
287342
@@ -437,6 +492,13 @@ def setup
437492 @manifest . assets [ "foo.js" ] = "foo-#{ @foo_js_digest } .js"
438493 @manifest . assets [ "foo.css" ] = "foo-#{ @foo_css_digest } .css"
439494
495+ @manifest . files [ "foo-#{ @foo_js_digest } .js" ] = {
496+ "integrity" => "ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"
497+ }
498+ @manifest . files [ "foo-#{ @foo_css_digest } .css" ] = {
499+ "integrity" => "ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css"
500+ }
501+
440502 @view . digest_assets = true
441503 @view . assets_environment = nil
442504 @view . assets_manifest = @manifest
@@ -464,6 +526,28 @@ def test_stylesheet_link_tag
464526 @view . stylesheet_link_tag ( :foo )
465527 end
466528
529+ def test_javascript_include_tag_integrity
530+ super
531+
532+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
533+ @view . javascript_include_tag ( "foo" , integrity : true )
534+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
535+ @view . javascript_include_tag ( "foo.js" , integrity : true )
536+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript"></script>) ,
537+ @view . javascript_include_tag ( :foo , integrity : true )
538+ end
539+
540+ def test_stylesheet_link_tag_integrity
541+ super
542+
543+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
544+ @view . stylesheet_link_tag ( "foo" , integrity : true )
545+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
546+ @view . stylesheet_link_tag ( "foo.css" , integrity : true )
547+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css" />) ,
548+ @view . stylesheet_link_tag ( :foo , integrity : true )
549+ end
550+
467551 def test_javascript_path
468552 super
469553
@@ -492,6 +576,12 @@ def setup
492576
493577 @view . debug_assets = true
494578 end
579+
580+ def test_javascript_include_tag_integrity
581+ end
582+
583+ def test_stylesheet_link_tag_integrity
584+ end
495585end
496586
497587class AssetUrlHelperLinksTarget < HelperTest
0 commit comments