Skip to content

Commit fdb0df6

Browse files
committed
Ignore integrity unless request is ssl
1 parent 92aa451 commit fdb0df6

File tree

2 files changed

+52
-6
lines changed

2 files changed

+52
-6
lines changed

lib/sprockets/rails/helper.rb

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -124,11 +124,13 @@ def asset_integrity(path, options = {})
124124
def javascript_include_tag(*sources)
125125
options = sources.extract_options!.stringify_keys
126126

127+
unless request_ssl?
128+
options.delete("integrity")
129+
end
130+
127131
case options["integrity"]
128-
when true
132+
when true, false, nil
129133
compute_integrity = options.delete("integrity")
130-
when false, nil
131-
options.delete("integrity")
132134
end
133135

134136
if options["debug"] != false && request_debug_assets?
@@ -156,11 +158,13 @@ def javascript_include_tag(*sources)
156158
def stylesheet_link_tag(*sources)
157159
options = sources.extract_options!.stringify_keys
158160

161+
unless request_ssl?
162+
options.delete("integrity")
163+
end
164+
159165
case options["integrity"]
160-
when true
166+
when true, false, nil
161167
compute_integrity = options.delete("integrity")
162-
when false, nil
163-
options.delete("integrity")
164168
end
165169

166170
if options["debug"] != false && request_debug_assets?
@@ -183,6 +187,10 @@ def stylesheet_link_tag(*sources)
183187
end
184188

185189
protected
190+
def request_ssl?
191+
respond_to?(:request) && self.request && self.request.ssl?
192+
end
193+
186194
# Enable split asset debugging. Eventually will be deprecated
187195
# and replaced by source maps in Sprockets 3.x.
188196
def request_debug_assets?

test/test_helper.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,44 @@ def test_stylesheet_path
172172
end
173173
end
174174

175+
class NoSSLHelperTest < NoHostHelperTest
176+
def setup
177+
super
178+
179+
@view.request = nil
180+
end
181+
182+
def test_javascript_include_tag_integrity
183+
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
184+
@view.javascript_include_tag("static", integrity: true)
185+
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
186+
@view.javascript_include_tag("static", integrity: false)
187+
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
188+
@view.javascript_include_tag("static", integrity: nil)
189+
190+
assert_dom_equal %(<script src="/javascripts/static.js"></script>),
191+
@view.javascript_include_tag("static", integrity: "ni:///sha-256;TvVUHzSfftWg1rcfL6TIJ0XKEGrgLyEq6lEpcmrG9qs?ct=application/javascript")
192+
193+
assert_dom_equal %(<script src="/assets/foo.js"></script>),
194+
@view.javascript_include_tag("foo", integrity: true)
195+
end
196+
197+
def test_stylesheet_link_tag_integrity
198+
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
199+
@view.stylesheet_link_tag("static", integrity: true)
200+
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
201+
@view.stylesheet_link_tag("static", integrity: false)
202+
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
203+
@view.stylesheet_link_tag("static", integrity: nil)
204+
205+
assert_dom_equal %(<link href="/stylesheets/static.css" media="screen" rel="stylesheet" />),
206+
@view.stylesheet_link_tag("static", integrity: "ni:///sha-256;5YzTQPuOJz_EpeXfN_-v1sxsjAj_dw8q26abiHZM3A4?ct=text/css")
207+
208+
assert_dom_equal %(<link href="/assets/foo.css" media="screen" rel="stylesheet" />),
209+
@view.stylesheet_link_tag("foo", integrity: true)
210+
end
211+
end
212+
175213
class RelativeHostHelperTest < HelperTest
176214
def setup
177215
super

0 commit comments

Comments
 (0)