File tree Expand file tree Collapse file tree 2 files changed +38
-1
lines changed Expand file tree Collapse file tree 2 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -72,7 +72,8 @@ def scrub(node)
72
72
return CONTINUE if skip_node? ( node )
73
73
74
74
unless ( node . element? || node . comment? ) && keep_node? ( node )
75
- return STOP if scrub_node ( node ) == STOP
75
+ scrub_node ( node )
76
+ return STOP
76
77
end
77
78
78
79
scrub_attributes ( node )
Original file line number Diff line number Diff line change @@ -215,3 +215,39 @@ def test_returns_stop_from_scrub_if_scrub_node_does
215
215
assert_scrub_stopped "<script>remove me</script>"
216
216
end
217
217
end
218
+
219
+ class PermitScrubberMinimalOperationsTest < ScrubberTest
220
+ class TestPermitScrubber < Rails ::HTML ::PermitScrubber
221
+ def initialize
222
+ @scrub_attribute_args = [ ]
223
+ @scrub_attributes_args = [ ]
224
+
225
+ super
226
+
227
+ self . tags = [ "div" ]
228
+ self . attributes = [ "class" ]
229
+ end
230
+
231
+ def scrub_attributes ( node )
232
+ @scrub_attributes_args << node . name
233
+
234
+ super
235
+ end
236
+
237
+ def scrub_attribute ( node , attr )
238
+ @scrub_attribute_args << [ node . name , attr . name ]
239
+
240
+ super
241
+ end
242
+ end
243
+
244
+ def test_does_not_scrub_attributes_of_a_removed_node
245
+ @scrubber = TestPermitScrubber . new
246
+
247
+ input = "<div class='foo' href='bar'><svg xlink:href='asdf'><set></set></svg></div>"
248
+ frag = scrub_fragment ( input )
249
+ assert_equal ( "<div class=\" foo\" ></div>" , frag )
250
+
251
+ assert_equal ( [ "div" ] , @scrubber . instance_variable_get ( :@scrub_attributes_args ) )
252
+ end
253
+ end
You can’t perform that action at this time.
0 commit comments