summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Barbosa Alexandre <dbalexandre@gmail.com>2019-02-13 19:56:32 +0000
committerDouglas Barbosa Alexandre <dbalexandre@gmail.com>2019-02-13 19:56:32 +0000
commita77a1e1b4faaa1240e831b5da7903cd1d52e75a3 (patch)
treefe949bc731e00567c144f445409a09601a53b1d1
parentc470a77937c79169f3ba78a31c249bd71b5c6070 (diff)
parent134420f2eff904f9e40165751fcd8700b0770157 (diff)
downloadgitlab-ce-a77a1e1b4faaa1240e831b5da7903cd1d52e75a3.tar.gz
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
-rw-r--r--app/controllers/concerns/send_file_upload.rb2
-rw-r--r--spec/controllers/concerns/send_file_upload_spec.rb17
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 } }