Commit 8794b8ac authored by GitLab Bot's avatar GitLab Bot

Automatic merge of gitlab-org/gitlab-ce master

parents 9ab13511 2064565a
---
title: Fix files/blob api endpoints content disposition
merge_request: 24267
author:
type: fixed
...@@ -535,7 +535,11 @@ module API ...@@ -535,7 +535,11 @@ module API
def send_git_blob(repository, blob) def send_git_blob(repository, blob)
env['api.format'] = :txt env['api.format'] = :txt
content_type 'text/plain' content_type 'text/plain'
header['Content-Disposition'] = content_disposition('attachment', blob.name) header['Content-Disposition'] = content_disposition('inline', blob.name)
# Let Workhorse examine the content and determine the better content disposition
header[Gitlab::Workhorse::DETECT_HEADER] = "true"
header(*Gitlab::Workhorse.send_git_blob(repository, blob)) header(*Gitlab::Workhorse.send_git_blob(repository, blob))
end end
......
...@@ -31,7 +31,9 @@ function ensure_namespace() { ...@@ -31,7 +31,9 @@ function ensure_namespace() {
function install_tiller() { function install_tiller() {
echo "Checking Tiller..." echo "Checking Tiller..."
helm init --upgrade helm init \
--upgrade \
--replicas 2
kubectl rollout status -n "$TILLER_NAMESPACE" -w "deployment/tiller-deploy" kubectl rollout status -n "$TILLER_NAMESPACE" -w "deployment/tiller-deploy"
if ! helm version --debug; then if ! helm version --debug; then
echo "Failed to init Tiller." echo "Failed to init Tiller."
......
...@@ -150,32 +150,36 @@ describe API::Helpers do ...@@ -150,32 +150,36 @@ describe API::Helpers do
end end
describe '#send_git_blob' do describe '#send_git_blob' do
context 'content disposition' do let(:repository) { double }
let(:repository) { double } let(:blob) { double(name: 'foobar') }
let(:blob) { double(name: 'foobar') }
let(:send_git_blob) do let(:send_git_blob) do
subject.send(:send_git_blob, repository, blob) subject.send(:send_git_blob, repository, blob)
end end
before do before do
allow(subject).to receive(:env).and_return({}) allow(subject).to receive(:env).and_return({})
allow(subject).to receive(:content_type) allow(subject).to receive(:content_type)
allow(subject).to receive(:header).and_return({}) allow(subject).to receive(:header).and_return({})
allow(Gitlab::Workhorse).to receive(:send_git_blob) allow(Gitlab::Workhorse).to receive(:send_git_blob)
end end
it 'sets Gitlab::Workhorse::DETECT_HEADER header' do
expect(send_git_blob[Gitlab::Workhorse::DETECT_HEADER]).to eq "true"
end
context 'content disposition' do
context 'when blob name is null' do context 'when blob name is null' do
let(:blob) { double(name: nil) } let(:blob) { double(name: nil) }
it 'returns only the disposition' do it 'returns only the disposition' do
expect(send_git_blob['Content-Disposition']).to eq 'attachment' expect(send_git_blob['Content-Disposition']).to eq 'inline'
end end
end end
context 'when blob name is not null' do context 'when blob name is not null' do
it 'returns disposition with the blob name' do it 'returns disposition with the blob name' do
expect(send_git_blob['Content-Disposition']).to eq 'attachment; filename="foobar"' expect(send_git_blob['Content-Disposition']).to eq 'inline; filename="foobar"'
end end
end end
end end
......
...@@ -183,14 +183,15 @@ describe API::Files do ...@@ -183,14 +183,15 @@ describe API::Files do
get api(url, current_user), params: params get api(url, current_user), params: params
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
expect(headers[Gitlab::Workhorse::DETECT_HEADER]).to eq "true"
end end
it 'forces attachment content disposition' do it 'sets inline content disposition by default' do
url = route(file_path) + "/raw" url = route(file_path) + "/raw"
get api(url, current_user), params: params get api(url, current_user), params: params
expect(headers['Content-Disposition']).to eq('attachment; filename="popen.rb"') expect(headers['Content-Disposition']).to eq('inline; filename="popen.rb"')
end end
context 'when mandatory params are not given' do context 'when mandatory params are not given' do
......
...@@ -166,12 +166,13 @@ describe API::Repositories do ...@@ -166,12 +166,13 @@ describe API::Repositories do
get api(route, current_user) get api(route, current_user)
expect(response).to have_gitlab_http_status(200) expect(response).to have_gitlab_http_status(200)
expect(headers[Gitlab::Workhorse::DETECT_HEADER]).to eq "true"
end end
it 'forces attachment content disposition' do it 'sets inline content disposition by default' do
get api(route, current_user) get api(route, current_user)
expect(headers['Content-Disposition']).to eq 'attachment' expect(headers['Content-Disposition']).to eq 'inline'
end end
context 'when sha does not exist' do context 'when sha does not exist' do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment