Add PUT /jobs/:id/metadata endpoint
This commit is contained in:
parent
b103a7ccb1
commit
16a73d9e0b
|
@ -32,6 +32,18 @@ class Travis::Api::App
|
||||||
respond_with service(:find_metadata, params)
|
respond_with service(:find_metadata, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
put "/:job_id/metadata" do
|
||||||
|
if params[:description]
|
||||||
|
metadata = service(:update_metadata, params).run
|
||||||
|
|
||||||
|
status metadata ? 204 : 401
|
||||||
|
else
|
||||||
|
status 422
|
||||||
|
|
||||||
|
{ "error" => "Must include a description" }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def archive_url(path)
|
def archive_url(path)
|
||||||
"https://s3.amazonaws.com/#{hostname('archive')}#{path}"
|
"https://s3.amazonaws.com/#{hostname('archive')}#{path}"
|
||||||
end
|
end
|
||||||
|
|
|
@ -76,10 +76,35 @@ describe 'Jobs' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "/jobs/:id/metadata" do
|
it "GET /jobs/:id/metadata" do
|
||||||
metadata_provider = Factory(:metadata_provider)
|
metadata_provider = Factory(:metadata_provider)
|
||||||
metadata = metadata_provider.metadata.create(job_id: job.id, description: "Foobar")
|
metadata = metadata_provider.metadata.create(job_id: job.id, description: "Foobar")
|
||||||
response = get "/jobs/#{job.id}/metadata", {}, headers
|
response = get "/jobs/#{job.id}/metadata", {}, headers
|
||||||
response.should deliver_json_for(Metadata.where(id: metadata.id), version: 'v2')
|
response.should deliver_json_for(Metadata.where(id: metadata.id), version: 'v2')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "PUT /jobs/:id/metadata" do
|
||||||
|
context "with valid credentials" do
|
||||||
|
it "responds with a 204" do
|
||||||
|
metadata_provider = Factory(:metadata_provider)
|
||||||
|
response = put "/jobs/#{job.id}/metadata", { username: metadata_provider.api_username, key: metadata_provider.api_key, description: "Foobar" }, headers
|
||||||
|
response.status.should eq(204)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "without a description" do
|
||||||
|
it "responds with a 422" do
|
||||||
|
metadata_provider = Factory(:metadata_provider)
|
||||||
|
response = put "/jobs/#{job.id}/metadata", { username: metadata_provider.api_username, key: metadata_provider.api_key }, headers
|
||||||
|
response.status.should eq(422)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context "with invalid credentials" do
|
||||||
|
it "responds with a 401" do
|
||||||
|
response = put "/jobs/#{job.id}/metadata", { username: "invalid-username", key: "invalid-key", description: "Foobar" }, headers
|
||||||
|
response.status.should eq(401)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,8 +2,13 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe Travis::Api::App::Endpoint::Jobs do
|
describe Travis::Api::App::Endpoint::Jobs do
|
||||||
let(:job) { Factory(:test) }
|
let(:job) { Factory(:test) }
|
||||||
|
let(:provider) { Factory(:metadata_provider) }
|
||||||
|
|
||||||
it "GET /jobs/:id/metadata" do
|
it "GET /jobs/:id/metadata" do
|
||||||
get("/jobs/#{job.id}/metadata", {}, "HTTP_ACCEPT" => "application/vnd.travis-ci.2+json, */*; q=0.01").should be_ok
|
get("/jobs/#{job.id}/metadata", {}, "HTTP_ACCEPT" => "application/vnd.travis-ci.2+json, */*; q=0.01").should be_ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "PUT /jobs/:id/metadata" do
|
||||||
|
response = put("/jobs/#{job.id}/metadata", { "username" => provider.api_username, "key" => provider.api_key, "description" => "Foobar" }, "HTTP_ACCEPT" => "application/vnd.travis-ci.2+json, */*; q=0.01").should be_successful
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user