summaryrefslogtreecommitdiff
path: root/spec/requests
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-01-13 09:56:05 +0100
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-01-14 12:48:16 +0100
commit0b946029a1fb429db39fbec0cddccf40f7e2aa08 (patch)
tree361c3e02ce3199700d693fdead687331ee3be510 /spec/requests
parent6d7a77074fcdd57ccdc33e3cb39146da4afdc0f4 (diff)
downloadgitlab-ce-0b946029a1fb429db39fbec0cddccf40f7e2aa08.tar.gz
Update build artifacts API
We do not want to allow runners to upload a metadata file. This needs to be generated by Workhorse only.
Diffstat (limited to 'spec/requests')
-rw-r--r--spec/requests/ci/api/builds_spec.rb48
1 files changed, 35 insertions, 13 deletions
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