summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-05-07 21:28:04 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-05-07 21:28:04 +0200
commit3b6da79254e750e7d5b250afd0deb77a978c105b (patch)
tree14f46d5cb6d1aa0d66f86655f52b3a1629c7f655
parent45ef8d5edaf3904f44d850d97863bbc53e8c4a1f (diff)
downloadgitlab-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.rb4
-rw-r--r--spec/lib/banzai/filter/upload_link_filter_spec.rb18
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