summaryrefslogtreecommitdiff
path: root/spec/lib
diff options
context:
space:
mode:
authorRobert Speicher <rspeicher@gmail.com>2015-05-27 15:39:08 -0400
committerRobert Speicher <rspeicher@gmail.com>2015-05-27 15:39:08 -0400
commit7424d2fa5bd52b7f41ec4359bf80b1649b59706b (patch)
treecef2d5cecb4f2682de18eb379e4bea0d76087239 /spec/lib
parentc843e092f309d22281205e34658221f17642ea33 (diff)
downloadgitlab-ce-7424d2fa5bd52b7f41ec4359bf80b1649b59706b.tar.gz
Add ExternalLinkFilter to Markdown pipeliners-dont-follow-me
Forces a `rel="nofollow"` attribute on all external links.
Diffstat (limited to 'spec/lib')
-rw-r--r--spec/lib/gitlab/markdown/external_link_filter_spec.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/spec/lib/gitlab/markdown/external_link_filter_spec.rb b/spec/lib/gitlab/markdown/external_link_filter_spec.rb
new file mode 100644
index 00000000000..c2ff4f80a42
--- /dev/null
+++ b/spec/lib/gitlab/markdown/external_link_filter_spec.rb
@@ -0,0 +1,33 @@
+require 'spec_helper'
+
+module Gitlab::Markdown
+ describe ExternalLinkFilter do
+ def filter(html, options = {})
+ described_class.call(html, options)
+ end
+
+ it 'ignores elements without an href attribute' do
+ exp = act = %q(<a id="ignored">Ignore Me</a>)
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'ignores non-HTTP(S) links' do
+ exp = act = %q(<a href="irc://irc.freenode.net/gitlab">IRC</a>)
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'skips internal links' do
+ internal = Gitlab.config.gitlab.url
+ exp = act = %Q(<a href="#{internal}/sign_in">Login</a>)
+ expect(filter(act).to_html).to eq exp
+ end
+
+ it 'adds rel="nofollow" to external links' do
+ act = %q(<a href="https://google.com/">Google</a>)
+ doc = filter(act)
+
+ expect(doc.at_css('a')).to have_attribute('rel')
+ expect(doc.at_css('a')['rel']).to eq 'nofollow'
+ end
+ end
+end