test/scrubbers_test.rb in rails-html-sanitizer-1.4.1 vs test/scrubbers_test.rb in rails-html-sanitizer-1.4.2

- old
+ new

@@ -39,10 +39,20 @@ def test_default_scrub_behavior assert_scrubbed '<tag>hello</tag>', 'hello' end + def test_default_scrub_removes_comments + assert_scrubbed('<div>one</div><!-- two --><span>three</span>', + '<div>one</div><span>three</span>') + end + + def test_default_scrub_removes_processing_instructions + assert_scrubbed('<div>one</div><?div two><span>three</span>', + '<div>one</div><span>three</span>') + end + def test_default_attributes_removal_behavior assert_scrubbed '<p cooler="hello">hello</p>', '<p>hello</p>' end def test_leaves_supplied_tags @@ -54,10 +64,16 @@ html = '<tag>leave me <span>now</span></tag>' @scrubber.tags = %w(tag) assert_scrubbed html, '<tag>leave me now</tag>' end + def test_leaves_comments_when_supplied_as_tag + @scrubber.tags = %w(div comment) + assert_scrubbed('<div>one</div><!-- two --><span>three</span>', + '<div>one</div><!-- two -->three') + end + def test_leaves_only_supplied_tags_nested html = '<tag>leave <em>me <span>now</span></em></tag>' @scrubber.tags = %w(tag) assert_scrubbed html, '<tag>leave me now</tag>' end @@ -107,53 +123,9 @@ @scrubber.attributes = 'cooler' end assert_equal "You should pass :attributes as an Enumerable", e.message assert_nil @scrubber.attributes, "Attributes should be nil when validation fails" - end -end - -class PermitScrubberSubclassTest < ScrubberTest - def setup - @scrubber = Class.new(::Rails::Html::PermitScrubber) do - attr :nodes_seen - - def initialize - super() - @nodes_seen = [] - end - - def keep_node?(node) - @nodes_seen << node.name - super(node) - end - end.new - end - - def test_elements_are_checked - html = %Q("<div></div><a></a><tr></tr>") - Loofah.scrub_fragment(html, @scrubber) - assert_includes(@scrubber.nodes_seen, "div") - assert_includes(@scrubber.nodes_seen, "a") - assert_includes(@scrubber.nodes_seen, "tr") - end - - def test_comments_are_checked - # this passes in v1.3.0 but fails in v1.4.0 - html = %Q("<div></div><!-- ohai --><tr></tr>") - Loofah.scrub_fragment(html, @scrubber) - assert_includes(@scrubber.nodes_seen, "div") - assert_includes(@scrubber.nodes_seen, "comment") - assert_includes(@scrubber.nodes_seen, "tr") - end - - def test_craftily_named_processing_instructions_are_not_checked - # this fails in v1.3.0 but passes in v1.4.0 - html = %Q("<div></div><?a content><tr></tr>") - Loofah.scrub_fragment(html, @scrubber) - assert_includes(@scrubber.nodes_seen, "div") - refute_includes(@scrubber.nodes_seen, "a") - assert_includes(@scrubber.nodes_seen, "tr") end end class TargetScrubberTest < ScrubberTest def setup