diff options
author | Timm <kaspth@gmail.com> | 2013-09-13 22:38:09 +0200 |
---|---|---|
committer | Timm <kaspth@gmail.com> | 2014-06-16 21:04:14 +0200 |
commit | facc4f3c0aa4d6affb28797692920a3df64015b8 (patch) | |
tree | e03adb5b891574fada3ee0cf50bf4666060e2506 /actionview/test | |
parent | ddc24fda90f8f4086e3af4ff2699409452a64640 (diff) | |
download | rails-facc4f3c0aa4d6affb28797692920a3df64015b8.tar.gz rails-facc4f3c0aa4d6affb28797692920a3df64015b8.tar.bz2 rails-facc4f3c0aa4d6affb28797692920a3df64015b8.zip |
Added some test coverage for PermitScrubber.
Diffstat (limited to 'actionview/test')
-rw-r--r-- | actionview/test/template/scrubbers/scrubbers_test.rb | 80 |
1 files changed, 80 insertions, 0 deletions
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 '<tag>hello</tag>', 'hello' + end + + def test_default_attributes_removal_behavior + assert_scrubbed '<p cooler="hello">hello</p>', '<p>hello</p>' + end + + def test_leaves_supplied_tags + @scrubber.tags = %w(a) + assert_scrubbed '<a>hello</a>' + end + + def test_leaves_only_supplied_tags + html = '<tag>leave me <span>now</span></tag>' + @scrubber.tags = %w(tag) + assert_scrubbed html, '<tag>leave me now</tag>' + 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 + + def test_leaves_supplied_attributes + @scrubber.attributes = %w(cooler) + assert_scrubbed '<a cooler="hello"></a>' + end + + def test_leaves_only_supplied_attributes + @scrubber.attributes = %w(cooler) + assert_scrubbed '<a cooler="hello" b="c" d="e"></a>', '<a cooler="hello"></a>' + end + + def test_leaves_supplied_tags_and_attributes + @scrubber.tags = %w(tag) + @scrubber.attributes = %w(cooler) + assert_scrubbed '<tag cooler="hello"></tag>' + end + + def test_leaves_only_supplied_tags_and_attributes + @scrubber.tags = %w(tag) + @scrubber.attributes = %w(cooler) + html = '<a></a><tag href=""></tag><tag cooler=""></tag>' + assert_scrubbed html, '<tag></tag><tag cooler=""></tag>' + 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 |