diff options
author | Robert Speicher <rspeicher@gmail.com> | 2015-05-27 15:39:08 -0400 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-05-27 15:39:08 -0400 |
commit | 7424d2fa5bd52b7f41ec4359bf80b1649b59706b (patch) | |
tree | cef2d5cecb4f2682de18eb379e4bea0d76087239 /spec/lib | |
parent | c843e092f309d22281205e34658221f17642ea33 (diff) | |
download | gitlab-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.rb | 33 |
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 |