Merge branch 'fix/using-uploads-in-global-snippets' into 'master'
Fix using link to uploads in global snippets Closes #17342, closes #17363 See merge request !4085
This commit is contained in:
commit
0cc8cee6cd
3 changed files with 26 additions and 1 deletions
|
@ -1,6 +1,7 @@
|
|||
Please view this file on the master branch, on stable branches it's out of date.
|
||||
|
||||
v 8.8.0 (unreleased)
|
||||
- Fix error when using link to uploads in global snippets
|
||||
- Assign labels and milestone to target project when moving issue. !3934 (Long Nguyen)
|
||||
- Use a case-insensitive comparison in sanitizing URI schemes
|
||||
- Project#open_branches has been cleaned up and no longer loads entire records into memory.
|
||||
|
|
|
@ -8,6 +8,8 @@ module Banzai
|
|||
#
|
||||
class UploadLinkFilter < HTML::Pipeline::Filter
|
||||
def call
|
||||
return doc unless project
|
||||
|
||||
doc.search('a').each do |el|
|
||||
process_link_attr el.attribute('href')
|
||||
end
|
||||
|
@ -31,7 +33,11 @@ module Banzai
|
|||
end
|
||||
|
||||
def build_url(uri)
|
||||
File.join(Gitlab.config.gitlab.url, context[:project].path_with_namespace, uri)
|
||||
File.join(Gitlab.config.gitlab.url, project.path_with_namespace, uri)
|
||||
end
|
||||
|
||||
def project
|
||||
context[:project]
|
||||
end
|
||||
|
||||
# Ensure that a :project key exists in context
|
||||
|
|
|
@ -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) }.not_to raise_error
|
||||
end
|
||||
|
||||
it 'does not rewrite link' do
|
||||
doc = raw_filter(upload_link, project: nil)
|
||||
|
||||
expect(doc.to_html).to eq upload_link
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue