aboutsummaryrefslogtreecommitdiffstats
path: root/actionview
diff options
context:
space:
mode:
authorTimm <kaspth@gmail.com>2013-08-17 11:02:09 +0200
committerTimm <kaspth@gmail.com>2014-06-16 21:04:10 +0200
commit62171784fe374d101aa7cfcb0d1e32c89a3629f8 (patch)
treedaef8553fa9c9bf8f87cfb85453b41d827866c02 /actionview
parentc1a786493021b184ebd5729eb21979eab1f774e4 (diff)
downloadrails-62171784fe374d101aa7cfcb0d1e32c89a3629f8.tar.gz
rails-62171784fe374d101aa7cfcb0d1e32c89a3629f8.tar.bz2
rails-62171784fe374d101aa7cfcb0d1e32c89a3629f8.zip
Simplified the removal of xpaths in remove_xpaths. Added more tests for remove_xpaths.
Diffstat (limited to 'actionview')
-rw-r--r--actionview/lib/action_view/helpers/sanitize_helper/sanitizers.rb2
-rw-r--r--actionview/test/template/sanitizers_test.rb19
2 files changed, 12 insertions, 9 deletions
diff --git a/actionview/lib/action_view/helpers/sanitize_helper/sanitizers.rb b/actionview/lib/action_view/helpers/sanitize_helper/sanitizers.rb
index 01ab9830f3..75ba1a7deb 100644
--- a/actionview/lib/action_view/helpers/sanitize_helper/sanitizers.rb
+++ b/actionview/lib/action_view/helpers/sanitize_helper/sanitizers.rb
@@ -13,7 +13,7 @@ module ActionView
def remove_xpaths(html, xpaths)
if html.respond_to?(:xpath)
- xpaths.each { |xpath| html.xpath(xpath).remove }
+ html.xpath(*xpaths).remove
html
else
remove_xpaths(Loofah.fragment(html), xpaths).to_s
diff --git a/actionview/test/template/sanitizers_test.rb b/actionview/test/template/sanitizers_test.rb
index 6769c765fa..bd5b25a305 100644
--- a/actionview/test/template/sanitizers_test.rb
+++ b/actionview/test/template/sanitizers_test.rb
@@ -23,23 +23,26 @@ class SanitizersTest < ActionController::TestCase
assert_equal %(<section><header></header><p>hello </p></section>), sanitizer.remove_xpaths(html, %w(.//script))
end
- def test_remove_xpaths_not_enumerable_xpaths_parameter
+ def test_remove_xpaths_called_with_faulty_xpath
sanitizer = ActionView::Sanitizer.new
- assert_raises NoMethodError do
- sanitizer.remove_xpaths('<h1>hello<h1>', './not_enumerable')
+ assert_raises Nokogiri::XML::XPath::SyntaxError do
+ sanitizer.remove_xpaths('<h1>hello<h1>', %w(..faulty_xpath))
end
end
- def test_remove_xpaths_faulty_xpath
+ def test_remove_xpaths_called_with_xpath_string
sanitizer = ActionView::Sanitizer.new
- assert_raises Nokogiri::XML::XPath::SyntaxError do
- sanitizer.remove_xpaths('<h1>hello<h1>', %w(..faulty_xpath))
- end
+ assert_equal '', sanitizer.remove_xpaths('<a></a>', './/a')
+ end
+
+ def test_remove_xpaths_called_with_enumerable_xpaths
+ sanitizer = ActionView::Sanitizer.new
+ assert_equal '', sanitizer.remove_xpaths('<a><span></span></a>', %w(.//a .//span))
end
def test_remove_xpaths_called_with_string_returns_string
sanitizer = ActionView::Sanitizer.new
- assert '<a></a>', sanitizer.remove_xpaths('<a></a>', [])
+ assert_equal '<a></a>', sanitizer.remove_xpaths('<a></a>', [])
end
def test_remove_xpaths_called_with_fragment_returns_fragment