Commit 020623f3 authored by Grzegorz Bizon's avatar Grzegorz Bizon Committed by Grzegorz Bizon

Improve CI API specs related to operations on build

Conflicts:
	spec/factories/ci/builds.rb
parent 3b080be3
...@@ -65,5 +65,20 @@ FactoryGirl.define do ...@@ -65,5 +65,20 @@ FactoryGirl.define do
build.trace = 'BUILD TRACE' build.trace = 'BUILD TRACE'
end end
end end
trait :artifacts do
after(:create) do |build, _|
build.artifacts_file =
fixture_file_upload(Rails.root +
'spec/fixtures/ci_build_artifacts.zip',
'application/zip')
build.artifacts_metadata =
fixture_file_upload(Rails.root +
'spec/fixtures/ci_build_artifacts_metadata.gz',
'application/x-gzip')
build.save!
end
end
end end
end end
...@@ -151,8 +151,8 @@ describe Ci::API::API do ...@@ -151,8 +151,8 @@ describe Ci::API::API do
context "Artifacts" do context "Artifacts" do
let(:file_upload) { fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif') } let(:file_upload) { fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif') }
let(:file_upload2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/gif') } let(:file_upload2) { fixture_file_upload(Rails.root + 'spec/fixtures/dk.png', 'image/gif') }
let(:commit) { FactoryGirl.create(:ci_commit, project: project) } let(:commit) { create(:ci_commit, project: project) }
let(:build) { FactoryGirl.create(:ci_build, commit: commit, runner_id: runner.id) } let(:build) { create(:ci_build, commit: commit, runner_id: runner.id) }
let(:authorize_url) { ci_api("/builds/#{build.id}/artifacts/authorize") } let(:authorize_url) { ci_api("/builds/#{build.id}/artifacts/authorize") }
let(:post_url) { ci_api("/builds/#{build.id}/artifacts") } let(:post_url) { ci_api("/builds/#{build.id}/artifacts") }
let(:delete_url) { ci_api("/builds/#{build.id}/artifacts") } let(:delete_url) { ci_api("/builds/#{build.id}/artifacts") }
...@@ -349,35 +349,48 @@ describe Ci::API::API do ...@@ -349,35 +349,48 @@ describe Ci::API::API do
end end
end end
describe "DELETE /builds/:id/artifacts" do describe 'DELETE /builds/:id/artifacts' do
before do let(:build) { create(:ci_build, :artifacts) }
build.run! before { delete delete_url, token: build.token }
post delete_url, token: build.token, file: file_upload
end
it "should delete artifact build" do it 'should respond valid status' do
build.success
delete delete_url, token: build.token
expect(response.status).to eq(200) expect(response.status).to eq(200)
end end
it 'should remove artifacts file' do
expect(build.artifacts_file.exists?).to be_falsy
end end
describe "GET /builds/:id/artifacts" do it 'should remove artifacts metadata' do
before do expect(build.artifacts_metadata.exists?).to be_falsy
build.run! end
end end
it "should download artifact" do describe 'GET /builds/:id/artifacts' do
build.update_attributes(artifacts_file: file_upload) before { get get_url, token: build.token }
get get_url, token: build.token
context 'build has artifacts' do
let(:build) { create(:ci_build, :artifacts) }
let(:download_headers) do
{ 'Content-Transfer-Encoding'=>'binary',
'Content-Disposition'=>'attachment; filename=ci_build_artifacts.zip' }
end
it 'should respond with valid status' do
expect(response.status).to eq(200) expect(response.status).to eq(200)
end end
it "should fail to download if no artifact uploaded" do it 'should download artifact' do
get get_url, token: build.token expect(response.headers).to include download_headers
end
end
context 'build does not has artifacts' do
it 'should respond with not found' do
expect(response.status).to eq(404) expect(response.status).to eq(404)
end end
end end
end end
end end
end
end end
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