diff options
author | Douglas Barbosa Alexandre <dbalexandre@gmail.com> | 2019-02-13 22:56:32 +0300 |
---|---|---|
committer | GitLab Release Tools Bot <robert+release-tools@gitlab.com> | 2019-02-14 19:10:30 +0300 |
commit | 17380cf90ce6f12ae06384d2d7a1d04bd928e6a5 (patch) | |
tree | f321ee73d678833b4d0486b01b48e8a262d99883 | |
parent | 72defb15ba8392af22040f2b918643f6d108305d (diff) |
Merge branch 'sh-fix-content-disposition-inline' into 'master'
Fix Content-Disposition hard-coded to attachments
Closes #57660
See merge request gitlab-org/gitlab-ce!25214
(cherry picked from commit a77a1e1b4faaa1240e831b5da7903cd1d52e75a3)
134420f2 Fix Content-Disposition hard-coded to attachments
-rw-r--r-- | app/controllers/concerns/send_file_upload.rb | 2 | ||||
-rw-r--r-- | spec/controllers/concerns/send_file_upload_spec.rb | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/app/controllers/concerns/send_file_upload.rb b/app/controllers/concerns/send_file_upload.rb index 9ca54c5519b..28e4cece548 100644 --- a/app/controllers/concerns/send_file_upload.rb +++ b/app/controllers/concerns/send_file_upload.rb @@ -3,7 +3,7 @@ module SendFileUpload def send_upload(file_upload, send_params: {}, redirect_params: {}, attachment: nil, proxy: false, disposition: 'attachment') if attachment - response_disposition = ::Gitlab::ContentDisposition.format(disposition: 'attachment', filename: attachment) + response_disposition = ::Gitlab::ContentDisposition.format(disposition: disposition, filename: attachment) # Response-Content-Type will not override an existing Content-Type in # Google Cloud Storage, so the metadata needs to be cleared on GCS for diff --git a/spec/controllers/concerns/send_file_upload_spec.rb b/spec/controllers/concerns/send_file_upload_spec.rb index a07113a6156..cf3b24f50a3 100644 --- a/spec/controllers/concerns/send_file_upload_spec.rb +++ b/spec/controllers/concerns/send_file_upload_spec.rb @@ -52,6 +52,23 @@ describe SendFileUpload do end end + context 'with inline image' do + let(:filename) { 'test.png' } + let(:params) { { disposition: 'inline', attachment: filename } } + + it 'sends a file with inline disposition' do + # Notice the filename= is omitted from the disposition; this is because + # Rails 5 will append this header in send_file + expected_params = { + filename: 'test.png', + disposition: "inline; filename*=UTF-8''test.png" + } + expect(controller).to receive(:send_file).with(uploader.path, expected_params) + + subject + end + end + context 'with attachment' do let(:filename) { 'test.js' } let(:params) { { attachment: filename } } |