Add PUT /jobs/:id/metadata endpoint

This commit is contained in:
Henrik Hodne 2013-07-09 18:41:47 -07:00
parent b103a7ccb1
commit 16a73d9e0b
3 changed files with 43 additions and 1 deletions

View File

@ -32,6 +32,18 @@ class Travis::Api::App
respond_with service(:find_metadata, params)
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)
"https://s3.amazonaws.com/#{hostname('archive')}#{path}"
end

View File

@ -76,10 +76,35 @@ describe 'Jobs' do
end
end
it "/jobs/:id/metadata" do
it "GET /jobs/:id/metadata" do
metadata_provider = Factory(:metadata_provider)
metadata = metadata_provider.metadata.create(job_id: job.id, description: "Foobar")
response = get "/jobs/#{job.id}/metadata", {}, headers
response.should deliver_json_for(Metadata.where(id: metadata.id), version: 'v2')
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

View File

@ -2,8 +2,13 @@ require 'spec_helper'
describe Travis::Api::App::Endpoint::Jobs do
let(:job) { Factory(:test) }
let(:provider) { Factory(:metadata_provider) }
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
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