@@ -34,6 +34,9 @@ def setup
34
34
@assets . context_class . assets_prefix = @view . assets_prefix
35
35
@assets . context_class . config = @view . config
36
36
37
+ @foo_js_integrity = @assets [ 'foo.js' ] . integrity
38
+ @foo_css_integrity = @assets [ 'foo.css' ] . integrity
39
+
37
40
@foo_js_digest = @assets [ 'foo.js' ] . etag
38
41
@foo_css_digest = @assets [ 'foo.css' ] . etag
39
42
@bar_js_digest = @assets [ 'bar.js' ] . etag
@@ -391,14 +394,14 @@ def test_javascript_include_tag_integrity
391
394
assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js"></script>) ,
392
395
@view . javascript_include_tag ( "foo" , integrity : nil )
393
396
394
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
397
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
395
398
@view . javascript_include_tag ( "foo" , integrity : true )
396
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
399
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
397
400
@view . javascript_include_tag ( "foo.js" , integrity : true )
398
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
401
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
399
402
@view . javascript_include_tag ( :foo , integrity : true )
400
403
401
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>\n <script src="/assets/bar-#{ @bar_js_digest } .js" integrity="sha256-g0JYFeYSYGXe376R0JrRzS6CpYpC1HiqtwBsVt/XAWU="></script>) ,
404
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>\n <script src="/assets/bar-#{ @bar_js_digest } .js" integrity="sha256-g0JYFeYSYGXe376R0JrRzS6CpYpC1HiqtwBsVt/XAWU="></script>) ,
402
405
@view . javascript_include_tag ( :foo , :bar , integrity : true )
403
406
end
404
407
@@ -410,14 +413,14 @@ def test_stylesheet_link_tag_integrity
410
413
assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" />) ,
411
414
@view . stylesheet_link_tag ( "foo" , integrity : nil )
412
415
413
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
416
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
414
417
@view . stylesheet_link_tag ( "foo" , integrity : true )
415
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
418
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
416
419
@view . stylesheet_link_tag ( "foo.css" , integrity : true )
417
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
420
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
418
421
@view . stylesheet_link_tag ( :foo , integrity : true )
419
422
420
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />\n <link href="/assets/bar-#{ @bar_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-Vd370+VAW4D96CVpZcjFLXyeHoagI0VHwofmzRXetuE=" />) ,
423
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />\n <link href="/assets/bar-#{ @bar_css_digest } .css" media="screen" rel="stylesheet" integrity="sha256-Vd370+VAW4D96CVpZcjFLXyeHoagI0VHwofmzRXetuE=" />) ,
421
424
@view . stylesheet_link_tag ( :foo , :bar , integrity : true )
422
425
end
423
426
@@ -636,12 +639,8 @@ def setup
636
639
@manifest . assets [ "foo.js" ] = "foo-#{ @foo_js_digest } .js"
637
640
@manifest . assets [ "foo.css" ] = "foo-#{ @foo_css_digest } .css"
638
641
639
- @manifest . files [ "foo-#{ @foo_js_digest } .js" ] = {
640
- "integrity" => "sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs="
641
- }
642
- @manifest . files [ "foo-#{ @foo_css_digest } .css" ] = {
643
- "integrity" => "sha-256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4="
644
- }
642
+ @manifest . files [ "foo-#{ @foo_js_digest } .js" ] = { "integrity" => @foo_js_integrity }
643
+ @manifest . files [ "foo-#{ @foo_css_digest } .css" ] = { "integrity" => @foo_css_integrity }
645
644
646
645
@view . digest_assets = true
647
646
@view . assets_environment = nil
@@ -673,22 +672,22 @@ def test_stylesheet_link_tag
673
672
def test_javascript_include_tag_integrity
674
673
super
675
674
676
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
675
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
677
676
@view . javascript_include_tag ( "foo" , integrity : true )
678
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
677
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
679
678
@view . javascript_include_tag ( "foo.js" , integrity : true )
680
- assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="sha-256-TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs= "></script>) ,
679
+ assert_dom_equal %(<script src="/assets/foo-#{ @foo_js_digest } .js" integrity="#{ @foo_js_integrity } "></script>) ,
681
680
@view . javascript_include_tag ( :foo , integrity : true )
682
681
end
683
682
684
683
def test_stylesheet_link_tag_integrity
685
684
super
686
685
687
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha-256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
686
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
688
687
@view . stylesheet_link_tag ( "foo" , integrity : true )
689
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha-256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
688
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
690
689
@view . stylesheet_link_tag ( "foo.css" , integrity : true )
691
- assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="sha-256-5YzTQPuOJz/EpeXfN/+v1sxsjAj/dw8q26abiHZM3A4= " />) ,
690
+ assert_dom_equal %(<link href="/assets/foo-#{ @foo_css_digest } .css" media="screen" rel="stylesheet" integrity="#{ @foo_css_integrity } " />) ,
692
691
@view . stylesheet_link_tag ( :foo , integrity : true )
693
692
end
694
693
@@ -728,6 +727,34 @@ def test_stylesheet_link_tag_integrity
728
727
end
729
728
end
730
729
730
+ class StaleManifestVsEnvironmentHelperTest < HelperTest
731
+ def setup
732
+ super
733
+
734
+ @view . digest_assets = true
735
+
736
+ @view . assets_manifest = Sprockets ::Manifest . new ( @assets , FIXTURES_PATH ) . tap do |stale |
737
+ stale . assets [ "foo.js" ] = "foo-stale.js"
738
+ @manifest . files [ "foo-stale.js" ] = { "integrity" => "stale-manifest" }
739
+ @manifest . files [ "foo-#{ @foo_js_digest } .js" ] = { "integrity" => "current-manifest" }
740
+
741
+ stale . assets [ "foo.css" ] = "foo-stale.css"
742
+ @manifest . files [ "foo-stale.css" ] = { "integrity" => "stale-manifest" }
743
+ @manifest . files [ "foo-#{ @foo_css_digest } .css" ] = { "integrity" => "current-manifest" }
744
+ end
745
+ end
746
+
747
+ def test_digest_prefers_asset_environment_over_manifest
748
+ assert_equal "foo-#{ @foo_js_digest } .js" , @view . asset_digest_path ( "foo.js" )
749
+ assert_equal "foo-#{ @foo_css_digest } .css" , @view . asset_digest_path ( "foo.css" )
750
+ end
751
+
752
+ def test_digest_prefers_asset_environment_over_manifest
753
+ assert_equal @foo_js_integrity , @view . asset_integrity ( "foo.js" )
754
+ assert_equal @foo_css_integrity , @view . asset_integrity ( "foo.css" )
755
+ end
756
+ end
757
+
731
758
class AssetUrlHelperLinksTarget < HelperTest
732
759
def test_precompile_allows_links
733
760
@view . assets_precompile = [ "url.css" ]
0 commit comments