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
build.trace = 'BUILD TRACE'
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
......@@ -151,8 +151,8 @@ describe Ci::API::API do
context "Artifacts" do
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(:commit) { FactoryGirl.create(:ci_commit, project: project) }
let(:build) { FactoryGirl.create(:ci_build, commit: commit, runner_id: runner.id) }
let(:commit) { create(:ci_commit, project: project) }
let(:build) { create(:ci_build, commit: commit, runner_id: runner.id) }
let(:authorize_url) { ci_api("/builds/#{build.id}/artifacts/authorize") }
let(:post_url) { ci_api("/builds/#{build.id}/artifacts") }
let(:delete_url) { ci_api("/builds/#{build.id}/artifacts") }
......@@ -349,33 +349,46 @@ describe Ci::API::API do
end
end
describe "DELETE /builds/:id/artifacts" do
before do
build.run!
post delete_url, token: build.token, file: file_upload
end
describe 'DELETE /builds/:id/artifacts' do
let(:build) { create(:ci_build, :artifacts) }
before { delete delete_url, token: build.token }
it "should delete artifact build" do
build.success
delete delete_url, token: build.token
it 'should respond valid status' do
expect(response.status).to eq(200)
end
end
describe "GET /builds/:id/artifacts" do
before do
build.run!
it 'should remove artifacts file' do
expect(build.artifacts_file.exists?).to be_falsy
end
it "should download artifact" do
build.update_attributes(artifacts_file: file_upload)
get get_url, token: build.token
expect(response.status).to eq(200)
it 'should remove artifacts metadata' do
expect(build.artifacts_metadata.exists?).to be_falsy
end
end
describe 'GET /builds/:id/artifacts' do
before { 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)
end
it 'should download artifact' do
expect(response.headers).to include download_headers
end
end
it "should fail to download if no artifact uploaded" do
get get_url, token: build.token
expect(response.status).to eq(404)
context 'build does not has artifacts' do
it 'should respond with not found' do
expect(response.status).to eq(404)
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