debian-mirror-gitlab/spec/controllers/projects/raw_controller_spec.rb

99 lines
3.4 KiB
Ruby
Raw Normal View History

2015-09-25 12:07:36 +05:30
require 'spec_helper'
describe Projects::RawController do
2017-08-17 22:00:37 +05:30
let(:public_project) { create(:project, :public, :repository) }
2015-09-25 12:07:36 +05:30
2017-08-17 22:00:37 +05:30
describe '#show' do
2015-09-25 12:07:36 +05:30
context 'regular filename' do
let(:id) { 'master/README.md' }
it 'delivers ASCII file' do
get(:show,
namespace_id: public_project.namespace.to_param,
2017-08-17 22:00:37 +05:30
project_id: public_project,
2015-09-25 12:07:36 +05:30
id: id)
2018-03-17 18:26:18 +05:30
expect(response).to have_gitlab_http_status(200)
2015-09-25 12:07:36 +05:30
expect(response.header['Content-Type']).to eq('text/plain; charset=utf-8')
2017-09-10 17:25:29 +05:30
expect(response.header['Content-Disposition'])
.to eq('inline')
2017-08-17 22:00:37 +05:30
expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with('git-blob:')
2015-09-25 12:07:36 +05:30
end
end
context 'image header' do
let(:id) { 'master/files/images/6049019_460s.jpg' }
2016-09-13 17:45:13 +05:30
it 'sets image content type header' do
2015-09-25 12:07:36 +05:30
get(:show,
namespace_id: public_project.namespace.to_param,
2017-08-17 22:00:37 +05:30
project_id: public_project,
2015-09-25 12:07:36 +05:30
id: id)
2018-03-17 18:26:18 +05:30
expect(response).to have_gitlab_http_status(200)
2015-09-25 12:07:36 +05:30
expect(response.header['Content-Type']).to eq('image/jpeg')
2017-08-17 22:00:37 +05:30
expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with('git-blob:')
2015-09-25 12:07:36 +05:30
end
end
2015-12-23 02:04:40 +05:30
context 'lfs object' do
let(:id) { 'be93687/files/lfs/lfs_object.iso' }
let!(:lfs_object) { create(:lfs_object, oid: '91eff75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897', size: '1575078') }
2017-08-17 22:00:37 +05:30
context 'when lfs is enabled' do
2015-12-23 02:04:40 +05:30
before do
2017-08-17 22:00:37 +05:30
allow_any_instance_of(Project).to receive(:lfs_enabled?).and_return(true)
2015-12-23 02:04:40 +05:30
end
2017-08-17 22:00:37 +05:30
context 'when project has access' do
before do
public_project.lfs_objects << lfs_object
allow_any_instance_of(LfsObjectUploader).to receive(:exists?).and_return(true)
allow(controller).to receive(:send_file) { controller.head :ok }
end
2015-12-23 02:04:40 +05:30
2017-08-17 22:00:37 +05:30
it 'serves the file' do
2018-03-17 18:26:18 +05:30
expect(controller).to receive(:send_file).with("#{LfsObjectUploader.root}/91/ef/f75a492a3ed0dfcb544d7f31326bc4014c8551849c192fd1e48d4dd2c897", filename: 'lfs_object.iso', disposition: 'attachment')
2017-08-17 22:00:37 +05:30
get(:show,
namespace_id: public_project.namespace.to_param,
project_id: public_project,
id: id)
2018-03-17 18:26:18 +05:30
expect(response).to have_gitlab_http_status(200)
2017-08-17 22:00:37 +05:30
end
end
context 'when project does not have access' do
it 'does not serve the file' do
get(:show,
namespace_id: public_project.namespace.to_param,
project_id: public_project,
id: id)
2018-03-17 18:26:18 +05:30
expect(response).to have_gitlab_http_status(404)
2017-08-17 22:00:37 +05:30
end
2015-12-23 02:04:40 +05:30
end
end
2017-08-17 22:00:37 +05:30
context 'when lfs is not enabled' do
before do
allow_any_instance_of(Project).to receive(:lfs_enabled?).and_return(false)
end
it 'delivers ASCII file' do
2015-12-23 02:04:40 +05:30
get(:show,
namespace_id: public_project.namespace.to_param,
2017-08-17 22:00:37 +05:30
project_id: public_project,
2015-12-23 02:04:40 +05:30
id: id)
2018-03-17 18:26:18 +05:30
expect(response).to have_gitlab_http_status(200)
2017-08-17 22:00:37 +05:30
expect(response.header['Content-Type']).to eq('text/plain; charset=utf-8')
2017-09-10 17:25:29 +05:30
expect(response.header['Content-Disposition'])
.to eq('inline')
2017-08-17 22:00:37 +05:30
expect(response.header[Gitlab::Workhorse::SEND_DATA_HEADER]).to start_with('git-blob:')
2015-12-23 02:04:40 +05:30
end
end
end
2015-09-25 12:07:36 +05:30
end
end