From facc4f3c0aa4d6affb28797692920a3df64015b8 Mon Sep 17 00:00:00 2001 From: Timm Date: Fri, 13 Sep 2013 22:38:09 +0200 Subject: Added some test coverage for PermitScrubber. --- .../test/template/scrubbers/scrubbers_test.rb | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 actionview/test/template/scrubbers/scrubbers_test.rb (limited to 'actionview/test') diff --git a/actionview/test/template/scrubbers/scrubbers_test.rb b/actionview/test/template/scrubbers/scrubbers_test.rb new file mode 100644 index 0000000000..15df5b8e22 --- /dev/null +++ b/actionview/test/template/scrubbers/scrubbers_test.rb @@ -0,0 +1,80 @@ +require 'loofah' +require 'abstract_unit' + +class PermitScrubberTest < ActionView::TestCase + + def setup + @scrubber = PermitScrubber.new + end + + def test_responds_to_scrub + assert @scrubber.respond_to?(:scrub) + end + + def test_default_scrub_behavior + assert_scrubbed 'hello', 'hello' + end + + def test_default_attributes_removal_behavior + assert_scrubbed '

hello

', '

hello

' + end + + def test_leaves_supplied_tags + @scrubber.tags = %w(a) + assert_scrubbed 'hello' + end + + def test_leaves_only_supplied_tags + html = 'leave me now' + @scrubber.tags = %w(tag) + assert_scrubbed html, 'leave me now' + end + + def test_leaves_only_supplied_tags_nested + html = 'leave me now' + @scrubber.tags = %w(tag) + assert_scrubbed html, 'leave me now' + end + + def test_leaves_supplied_attributes + @scrubber.attributes = %w(cooler) + assert_scrubbed '' + end + + def test_leaves_only_supplied_attributes + @scrubber.attributes = %w(cooler) + assert_scrubbed '', '' + end + + def test_leaves_supplied_tags_and_attributes + @scrubber.tags = %w(tag) + @scrubber.attributes = %w(cooler) + assert_scrubbed '' + end + + def test_leaves_only_supplied_tags_and_attributes + @scrubber.tags = %w(tag) + @scrubber.attributes = %w(cooler) + html = '' + assert_scrubbed html, '' + end + + def test_leaves_text + assert_scrubbed('some text') + end + + def test_skips_text_nodes + assert_node_skipped 'some text' + end + + protected + def assert_scrubbed(html, expected = html) + output = Loofah.scrub_fragment(html, @scrubber).to_s + assert_equal expected, output + end + + def assert_node_skipped(text) + node = Loofah.fragment(text).children.first + assert_equal Loofah::Scrubber::CONTINUE, @scrubber.scrub(node) + end +end \ No newline at end of file -- cgit v1.2.3