# Offense count: 560
Minitest/MultipleAssertions:
- Max: 52
+ Max: 54
# Offense count: 1
# Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
Sanitize::Config::OSM = Sanitize::Config.merge(
Sanitize::Config::RELAXED,
:elements => Sanitize::Config::RELAXED[:elements] - %w[div style],
- :add_attributes => { "a" => { "rel" => "nofollow noopener noreferrer" } },
:remove_contents => %w[script style],
:transformers => lambda do |env|
env[:node].remove_class
env[:node].kwattr_remove("style", nil)
env[:node].add_class("table table-sm w-auto") if env[:node_name] == "table"
+
+ if env[:node_name] == "a"
+ rel = env[:node]["rel"] || ""
+
+ env[:node]["rel"] = rel.split.select { |r| r == "me" }.append("nofollow", "noopener", "noreferrer").sort.join(" ")
+ end
end
)
assert_select "a[rel='nofollow noopener noreferrer']", 1
end
+ r = RichText.new("html", "foo <a rel='junk me trash' href='http://example.com/'>bar</a> baz")
+ assert_html r do
+ assert_select "a", 1
+ assert_select "a[href='http://example.com/']", 1
+ assert_select "a[rel='me nofollow noopener noreferrer']", 1
+ end
+
r = RichText.new("html", "foo example@example.com bar")
assert_html r do
assert_select "a", 0
assert_select "a[rel='nofollow noopener noreferrer']", 1
end
+ r = RichText.new("markdown", "foo <a rel='junk me trash' href='http://example.com/'>bar</a>) baz")
+ assert_html r do
+ assert_select "a", 1
+ assert_select "a[href='http://example.com/']", 1
+ assert_select "a[rel='me nofollow noopener noreferrer']", 1
+ end
+
r = RichText.new("markdown", "foo example@example.com bar")
assert_html r do
assert_select "a", 1