diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-06-08 08:29:35 +0300 |
---|---|---|
committer | Kamil TrzciĆski <ayufan@ayufan.eu> | 2018-02-28 22:00:27 +0300 |
commit | 52c3b8f31264230814d2ffa79d0987c1491676b3 (patch) | |
tree | d5827bc9bd891c1dd602eb3cdd4e4062d2e85589 /spec/requests/api/v3 | |
parent | 64701b51aeacf4f4f932f205a2d831880b757a43 (diff) |
Merge branch 'zj-object-store-artifacts' into 'master'
Object store for artifacts
Closes gitlab-ce#29203
See merge request !1762
Diffstat (limited to 'spec/requests/api/v3')
-rw-r--r-- | spec/requests/api/v3/builds_spec.rb | 61 |
1 files changed, 44 insertions, 17 deletions
diff --git a/spec/requests/api/v3/builds_spec.rb b/spec/requests/api/v3/builds_spec.rb index dc95599546c..37710aedbb1 100644 --- a/spec/requests/api/v3/builds_spec.rb +++ b/spec/requests/api/v3/builds_spec.rb @@ -7,13 +7,14 @@ describe API::V3::Builds do let!(:developer) { create(:project_member, :developer, user: user, project: project) } let(:reporter) { create(:project_member, :reporter, project: project) } let(:guest) { create(:project_member, :guest, project: project) } - let!(:pipeline) { create(:ci_empty_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) } - let!(:build) { create(:ci_build, pipeline: pipeline) } + let(:pipeline) { create(:ci_empty_pipeline, project: project, sha: project.commit.id, ref: project.default_branch) } + let(:build) { create(:ci_build, pipeline: pipeline) } describe 'GET /projects/:id/builds ' do let(:query) { '' } before do + build create(:ci_build, :skipped, pipeline: pipeline) get v3_api("/projects/#{project.id}/builds?#{query}", api_user) @@ -87,6 +88,10 @@ describe API::V3::Builds do end describe 'GET /projects/:id/repository/commits/:sha/builds' do + before do + build + end + context 'when commit does not exist in repository' do before do get v3_api("/projects/#{project.id}/repository/commits/1a271fd1/builds", api_user) @@ -187,22 +192,33 @@ describe API::V3::Builds do describe 'GET /projects/:id/builds/:build_id/artifacts' do before do + stub_artifacts_object_storage get v3_api("/projects/#{project.id}/builds/#{build.id}/artifacts", api_user) end context 'job with artifacts' do - let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) } + context 'when artifacts are stored locally' do + let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) } + + context 'authorized user' do + let(:download_headers) do + { 'Content-Transfer-Encoding' => 'binary', + 'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' } + end - context 'authorized user' do - let(:download_headers) do - { 'Content-Transfer-Encoding' => 'binary', - 'Content-Disposition' => 'attachment; filename=ci_build_artifacts.zip' } + it 'returns specific job artifacts' do + expect(response).to have_http_status(200) + expect(response.headers).to include(download_headers) + expect(response.body).to match_file(build.artifacts_file.file.file) + end end + end - it 'returns specific job artifacts' do - expect(response).to have_http_status(200) - expect(response.headers).to include(download_headers) - expect(response.body).to match_file(build.artifacts_file.file.file) + context 'when artifacts are stored remotely' do + let(:build) { create(:ci_build, :artifacts, :remote_store, pipeline: pipeline) } + + it 'returns location redirect' do + expect(response).to have_http_status(302) end end @@ -225,6 +241,7 @@ describe API::V3::Builds do let(:build) { create(:ci_build, :artifacts, pipeline: pipeline) } before do + stub_artifacts_object_storage build.success end @@ -280,14 +297,24 @@ describe API::V3::Builds do context 'find proper job' do shared_examples 'a valid file' do - let(:download_headers) do - { 'Content-Transfer-Encoding' => 'binary', - 'Content-Disposition' => - "attachment; filename=#{build.artifacts_file.filename}" } + context 'when artifacts are stored locally' do + let(:download_headers) do + { 'Content-Transfer-Encoding' => 'binary', + 'Content-Disposition' => + "attachment; filename=#{build.artifacts_file.filename}" } + end + + it { expect(response).to have_http_status(200) } + it { expect(response.headers).to include(download_headers) } end - it { expect(response).to have_http_status(200) } - it { expect(response.headers).to include(download_headers) } + context 'when artifacts are stored remotely' do + let(:build) { create(:ci_build, :artifacts, :remote_store, pipeline: pipeline) } + + it 'returns location redirect' do + expect(response).to have_http_status(302) + end + end end context 'with regular branch' do |