From e8995f9fd5c12882eafcf3766627f64a3d6f623d Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Tue, 12 Jan 2016 14:39:15 +0100 Subject: Modify artifacts upload API endpoint, add artifacts metadata --- spec/requests/ci/api/builds_spec.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'spec/requests/ci/api') diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index c27e87c4acc..4eb5f2e6828 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -210,6 +210,31 @@ describe Ci::API::API do end end + context "should post artifacts metadata" do + let!(:artifacts) { file_upload } + let!(:metadata) { file_upload2 } + + before do + build.run! + + post_data = { + 'file.path' => artifacts.path, + 'file.name' => artifacts.original_filename, + 'metadata.path' => metadata.path, + 'metadata.name' => metadata.original_filename + } + + post post_url, post_data, headers_with_token + end + + it 'stores artifacts and artifacts metadata' do + expect(response.status).to eq(201) + expect(json_response['artifacts_file']['filename']).to eq(artifacts.original_filename) + expect(json_response['artifacts_metadata']['filename']).to eq(metadata.original_filename) + end + end + + context "should fail to post too large artifact" do before do build.run! -- cgit v1.2.1 From 0b946029a1fb429db39fbec0cddccf40f7e2aa08 Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 13 Jan 2016 09:56:05 +0100 Subject: Update build artifacts API We do not want to allow runners to upload a metadata file. This needs to be generated by Workhorse only. --- spec/requests/ci/api/builds_spec.rb | 48 +++++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 13 deletions(-) (limited to 'spec/requests/ci/api') diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index 4eb5f2e6828..f47ffb00e33 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -210,27 +210,49 @@ describe Ci::API::API do end end - context "should post artifacts metadata" do + context 'should post artifacts file and metadata file' do let!(:artifacts) { file_upload } let!(:metadata) { file_upload2 } + let(:stored_artifacts_file) { build.reload.artifacts_file.file } + let(:stored_metadata_file) { build.reload.artifacts_metadata.file } + before do build.run! + post(post_url, post_data, headers_with_token) + end - post_data = { - 'file.path' => artifacts.path, - 'file.name' => artifacts.original_filename, - 'metadata.path' => metadata.path, - 'metadata.name' => metadata.original_filename - } - - post post_url, post_data, headers_with_token + context 'post data accelerated by workhorse is correct' do + let(:post_data) do + { 'file.path' => artifacts.path, + 'file.name' => artifacts.original_filename, + 'metadata.path' => metadata.path, + 'metadata.name' => metadata.original_filename } + end + + it 'responds with valid status' do + expect(response.status).to eq(201) + end + + it 'stores artifacts and artifacts metadata' do + expect(stored_artifacts_file.original_filename).to eq(artifacts.original_filename) + expect(stored_metadata_file.original_filename).to eq(metadata.original_filename) + end end - it 'stores artifacts and artifacts metadata' do - expect(response.status).to eq(201) - expect(json_response['artifacts_file']['filename']).to eq(artifacts.original_filename) - expect(json_response['artifacts_metadata']['filename']).to eq(metadata.original_filename) + context 'runner sends metadata file' do + let(:post_data) do + { 'file' => artifacts, 'metadata' => metadata } + end + + it 'is expected to respond with forbbiden' do + expect(response.status).to eq(403) + end + + it 'does not store artifacts or metadata' do + expect(stored_artifacts_file).to be_nil + expect(stored_metadata_file).to be_nil + end end end -- cgit v1.2.1 From 154b8ceba4ac2d92a2387ad50d7f2b4ed5b2dd8a Mon Sep 17 00:00:00 2001 From: Grzegorz Bizon Date: Wed, 13 Jan 2016 14:02:36 +0100 Subject: Refactor build artifacts upload API endpoint --- spec/requests/ci/api/builds_spec.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'spec/requests/ci/api') diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index f47ffb00e33..648ea0d5f50 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -240,17 +240,16 @@ describe Ci::API::API do end end - context 'runner sends metadata file' do + context 'no artifacts file in post data' do let(:post_data) do - { 'file' => artifacts, 'metadata' => metadata } + { 'metadata' => metadata } end - it 'is expected to respond with forbbiden' do - expect(response.status).to eq(403) + it 'is expected to respond with bad request' do + expect(response.status).to eq(400) end - it 'does not store artifacts or metadata' do - expect(stored_artifacts_file).to be_nil + it 'does not store metadata' do expect(stored_metadata_file).to be_nil end end -- cgit v1.2.1 From ac652d82f17d378e485dcef15a8fabdcf9bad76b Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Thu, 14 Jan 2016 19:45:43 +0100 Subject: Let the CI runner know about builds that this build depends on This allows us to implement artifacts passing: runner will download artifacts from all prior builds --- spec/requests/ci/api/builds_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'spec/requests/ci/api') diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index 648ea0d5f50..1c3e27abb9f 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -101,6 +101,18 @@ describe Ci::API::API do { "key" => "TRIGGER_KEY", "value" => "TRIGGER_VALUE", "public" => false }, ]) end + + it "returns dependent builds" do + commit = FactoryGirl.create(:ci_commit, project: project) + commit.create_builds('master', false, nil, nil) + commit.builds.where(stage: 'test').each(&:success) + + post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } + + expect(response.status).to eq(201) + expect(json_response["dependencies"]["builds"].count).to eq(2) + expect(json_response["dependencies"]["builds"][0]["name"]).to eq("rspec") + end end describe "PUT /builds/:id" do -- cgit v1.2.1 From 1ce766367eb529fe88068be2f34315f87d74a349 Mon Sep 17 00:00:00 2001 From: Kamil Trzcinski Date: Fri, 15 Jan 2016 15:35:33 +0100 Subject: Change dependencies.builds to depends_on_builds --- spec/requests/ci/api/builds_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'spec/requests/ci/api') diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb index 1c3e27abb9f..eec927102aa 100644 --- a/spec/requests/ci/api/builds_spec.rb +++ b/spec/requests/ci/api/builds_spec.rb @@ -110,8 +110,8 @@ describe Ci::API::API do post ci_api("/builds/register"), token: runner.token, info: { platform: :darwin } expect(response.status).to eq(201) - expect(json_response["dependencies"]["builds"].count).to eq(2) - expect(json_response["dependencies"]["builds"][0]["name"]).to eq("rspec") + expect(json_response["depends_on_builds"].count).to eq(2) + expect(json_response["depends_on_builds"][0]["name"]).to eq("rspec") end end -- cgit v1.2.1