@@ -112,6 +112,50 @@ def test_attributes_accessor_validation
112112  end 
113113end 
114114
115+ class  PermitScrubberSubclassTest  < ScrubberTest 
116+   def  setup 
117+     @scrubber  =  Class . new ( ::Rails ::Html ::PermitScrubber )  do 
118+       attr  :nodes_seen 
119+ 
120+       def  initialize 
121+         super ( ) 
122+         @nodes_seen  =  [ ] 
123+       end 
124+ 
125+       def  keep_node? ( node ) 
126+         @nodes_seen  << node . name 
127+         super ( node ) 
128+       end 
129+     end . new 
130+   end 
131+ 
132+   def  test_elements_are_checked 
133+     html  =  %Q("<div></div><a></a><tr></tr>") 
134+     Loofah . scrub_fragment ( html ,  @scrubber ) 
135+     assert_includes ( @scrubber . nodes_seen ,  "div" ) 
136+     assert_includes ( @scrubber . nodes_seen ,  "a" ) 
137+     assert_includes ( @scrubber . nodes_seen ,  "tr" ) 
138+   end 
139+ 
140+   def  test_comments_are_checked 
141+     # this passes in v1.3.0 but fails in v1.4.0 
142+     html  =  %Q("<div></div><!-- ohai --><tr></tr>") 
143+     Loofah . scrub_fragment ( html ,  @scrubber ) 
144+     assert_includes ( @scrubber . nodes_seen ,  "div" ) 
145+     assert_includes ( @scrubber . nodes_seen ,  "comment" ) 
146+     assert_includes ( @scrubber . nodes_seen ,  "tr" ) 
147+   end 
148+ 
149+   def  test_craftily_named_processing_instructions_are_not_checked 
150+     # this fails in v1.3.0 but passes in v1.4.0 
151+     html  =  %Q("<div></div><?a content><tr></tr>") 
152+     Loofah . scrub_fragment ( html ,  @scrubber ) 
153+     assert_includes ( @scrubber . nodes_seen ,  "div" ) 
154+     refute_includes ( @scrubber . nodes_seen ,  "a" ) 
155+     assert_includes ( @scrubber . nodes_seen ,  "tr" ) 
156+   end 
157+ end 
158+ 
115159class  TargetScrubberTest  < ScrubberTest 
116160  def  setup 
117161    @scrubber  =  Rails ::Html ::TargetScrubber . new 
0 commit comments