Commit 6c4d48b8 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'rs-remove-link-to-override'

Signed-off-by: default avatarDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>

Conflicts:
	spec/helpers/application_helper_spec.rb
parents 9179dc6d 54365ecc
......@@ -233,39 +233,6 @@ module ApplicationHelper
Gitlab::MarkupHelper.asciidoc?(filename)
end
# Overrides ActionView::Helpers::UrlHelper#link_to to add `rel="nofollow"` to
# external links
def link_to(name = nil, options = nil, html_options = {})
if options.kind_of?(String)
if !options.start_with?('#', '/')
html_options = add_nofollow(options, html_options)
end
end
super
end
# Add `"rel=nofollow"` to external links
#
# link - String link to check
# html_options - Hash of `html_options` passed to `link_to`
#
# Returns `html_options`, adding `rel: nofollow` for external links
def add_nofollow(link, html_options = {})
begin
uri = URI(link)
if uri && uri.absolute? && uri.host != Gitlab.config.gitlab.host
rel = html_options.fetch(:rel, '')
html_options[:rel] = (rel + ' nofollow').strip
end
rescue URI::Error
# noop
end
html_options
end
def promo_host
'about.gitlab.com'
end
......
......@@ -203,43 +203,6 @@ describe ApplicationHelper do
end
end
describe 'link_to' do
it 'should not include rel=nofollow for internal links' do
expect(link_to('Home', root_path)).to eq('<a href="/">Home</a>')
end
it 'should include rel=nofollow for external links' do
expect(link_to('Example', 'http://www.example.com')).
to eq '<a href="http://www.example.com" rel="nofollow">Example</a>'
end
it 'should include rel=nofollow for external links and honor existing html_options' do
expect(link_to('Example', 'http://www.example.com', class: 'toggle', data: {toggle: 'dropdown'}))
.to eq '<a class="toggle" data-toggle="dropdown" href="http://www.example.com" rel="nofollow">Example</a>'
end
it 'should include rel=nofollow for external links and preserve other rel values' do
expect(link_to('Example', 'http://www.example.com', rel: 'noreferrer'))
.to eq '<a href="http://www.example.com" rel="noreferrer nofollow">Example</a>'
end
it 'should not include rel=nofollow for external links on the same host as GitLab' do
expect(Gitlab.config.gitlab).to receive(:host).and_return('example.foo')
expect(link_to('Example', 'http://example.foo/bar')).
to eq '<a href="http://example.foo/bar">Example</a>'
end
it 'should not raise an error when given a bad URI' do
expect { link_to('default', 'if real=1 RANDOM; if real>1 IDLHS; if real>500 LHS') }.
not_to raise_error
end
it 'should not raise an error when given a bad mailto URL' do
expect { link_to('email', 'mailto://foo.bar@example.es?subject=Subject%20Line') }.
not_to raise_error
end
end
describe 'time_ago_with_tooltip' do
def element(*arguments)
Time.zone = 'UTC'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment