diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-05-07 21:28:04 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2016-05-07 21:28:04 +0200 |
commit | 3b6da79254e750e7d5b250afd0deb77a978c105b (patch) | |
tree | 14f46d5cb6d1aa0d66f86655f52b3a1629c7f655 | |
parent | 45ef8d5edaf3904f44d850d97863bbc53e8c4a1f (diff) | |
download | gitlab-ce-3b6da79254e750e7d5b250afd0deb77a978c105b.tar.gz |
Fix using link to uploads in global snippets
Closes #17342, closes #17363
-rw-r--r-- | lib/banzai/filter/upload_link_filter.rb | 4 | ||||
-rw-r--r-- | spec/lib/banzai/filter/upload_link_filter_spec.rb | 18 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/banzai/filter/upload_link_filter.rb b/lib/banzai/filter/upload_link_filter.rb index 7edfe5ade2d..483d40c46df 100644 --- a/lib/banzai/filter/upload_link_filter.rb +++ b/lib/banzai/filter/upload_link_filter.rb @@ -31,7 +31,9 @@ module Banzai end def build_url(uri) - File.join(Gitlab.config.gitlab.url, context[:project].path_with_namespace, uri) + return '#' unless project = context[:project] + + File.join(Gitlab.config.gitlab.url, project.path_with_namespace, uri) end # Ensure that a :project key exists in context diff --git a/spec/lib/banzai/filter/upload_link_filter_spec.rb b/spec/lib/banzai/filter/upload_link_filter_spec.rb index 3b073a90a95..7a7103079ea 100644 --- a/spec/lib/banzai/filter/upload_link_filter_spec.rb +++ b/spec/lib/banzai/filter/upload_link_filter_spec.rb @@ -8,6 +8,10 @@ describe Banzai::Filter::UploadLinkFilter, lib: true do project: project }) + raw_filter(doc, contexts) + end + + def raw_filter(doc, contexts = {}) described_class.call(doc, contexts) end @@ -70,4 +74,18 @@ describe Banzai::Filter::UploadLinkFilter, lib: true do expect(doc.at_css('img')['src']).to match "#{Gitlab.config.gitlab.url}/#{project.path_with_namespace}/uploads/%ED%95%9C%EA%B8%80.png" end end + + context 'when project context does not exist' do + let(:upload_link) { link('/uploads/e90decf88d8f96fe9e1389afc2e4a91f/test.jpg') } + + it 'does not raise error' do + expect { raw_filter(upload_link, project: nil) }.to_not raise_error + end + + it 'provides an empty link' do + doc = raw_filter(upload_link, project: nil) + + expect(doc.at_css('a')['href']).to eq '#' + end + end end |