Remove PATCH logs/:job_id
endpoint
To eradicate unnecessary inconsistency. Spec to test the existing `GET logs/:id` remains.
This commit is contained in:
parent
d9e5eaaeeb
commit
dfffe8e405
|
@ -3,8 +3,6 @@ require 'travis/api/app'
|
||||||
class Travis::Api::App
|
class Travis::Api::App
|
||||||
class Endpoint
|
class Endpoint
|
||||||
class Jobs < Endpoint
|
class Jobs < Endpoint
|
||||||
include Helpers
|
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
prefer_follower do
|
prefer_follower do
|
||||||
respond_with service(:find_jobs, params)
|
respond_with service(:find_jobs, params)
|
||||||
|
@ -67,7 +65,18 @@ class Travis::Api::App
|
||||||
end
|
end
|
||||||
|
|
||||||
patch '/:id/log', scope: :private do |id|
|
patch '/:id/log', scope: :private do |id|
|
||||||
respond_with patch_log_for_job(params)
|
begin
|
||||||
|
self.service(:remove_log, params).run
|
||||||
|
rescue Travis::AuthorizationDenied => ade
|
||||||
|
status 401
|
||||||
|
{ error: { message: ade.message } }
|
||||||
|
rescue Travis::JobUnfinished, Travis::LogAlreadyRemoved => e
|
||||||
|
status 409
|
||||||
|
{ error: { message: e.message } }
|
||||||
|
rescue => e
|
||||||
|
status 500
|
||||||
|
{ error: { message: "Unexpected error occurred: #{e.message}" } }
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
get "/:job_id/annotations" do
|
get "/:job_id/annotations" do
|
||||||
|
|
|
@ -4,17 +4,10 @@ class Travis::Api::App
|
||||||
class Endpoint
|
class Endpoint
|
||||||
# Logs are generated by builds.
|
# Logs are generated by builds.
|
||||||
class Logs < Endpoint
|
class Logs < Endpoint
|
||||||
include Helpers
|
|
||||||
# Fetches a log by its *id*.
|
# Fetches a log by its *id*.
|
||||||
get '/:id' do |id|
|
get '/:id' do |id|
|
||||||
respond_with service(:find_log, params)
|
respond_with service(:find_log, params)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Clears up the content of the log by the *job id*
|
|
||||||
# Optionally takes parameter *reason*
|
|
||||||
patch '/:id' do
|
|
||||||
respond_with patch_log_for_job(params)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -4,18 +4,5 @@ class Travis::Api::App
|
||||||
# Namespace for helpers.
|
# Namespace for helpers.
|
||||||
module Helpers
|
module Helpers
|
||||||
Backports.require_relative_dir 'helpers'
|
Backports.require_relative_dir 'helpers'
|
||||||
|
|
||||||
def patch_log_for_job(params)
|
|
||||||
self.service(:remove_log, params).run
|
|
||||||
rescue Travis::AuthorizationDenied => ade
|
|
||||||
status 401
|
|
||||||
{ error: { message: ade.message } }
|
|
||||||
rescue Travis::JobUnfinished, Travis::LogAlreadyRemoved => e
|
|
||||||
status 409
|
|
||||||
{ error: { message: e.message } }
|
|
||||||
rescue => e
|
|
||||||
status 500
|
|
||||||
{ error: { message: "Unexpected error occurred: #{e.message}" } }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,38 +1,11 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Travis::Api::App::Endpoint::Logs do
|
describe Travis::Api::App::Endpoint::Logs do
|
||||||
let(:user) { Factory(:user) }
|
let(:job) { Factory(:test) }
|
||||||
let(:job) { Factory(:test, owner: user, log: Factory(:log)) }
|
|
||||||
let(:provider) { Factory(:annotation_provider) }
|
|
||||||
|
|
||||||
describe "GET /logs/:id/" do
|
describe "GET /logs/:id/" do
|
||||||
it "finds log successfully" do
|
it "finds log successfully" do
|
||||||
get("/logs/#{job.log.id}", {}, "HTTP_ACCEPT" => "application/vnd.travis-ci.2+json, */*; q=0.01").should be_ok
|
get("/logs/#{job.log.id}", {}, "HTTP_ACCEPT" => "application/vnd.travis-ci.2+json, */*; q=0.01").should be_ok
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "PATCH /logs/:id/" do
|
|
||||||
before do
|
|
||||||
Travis::Services::RemoveLog.any_instance.stubs(:current_user).returns user
|
|
||||||
end
|
|
||||||
|
|
||||||
context "user is unauthorized" do
|
|
||||||
it 'returns status 401' do
|
|
||||||
response = patch("/logs/#{job.id}")
|
|
||||||
response.status.should == 401
|
|
||||||
JSON.parse(response.body)['error']['message'].should =~ Regexp.new("insufficient permission")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'job is still running' do
|
|
||||||
it 'returns status 409' do
|
|
||||||
job.stubs(:finished?).returns false
|
|
||||||
user.stubs(:permission?).with(:push, anything).returns true
|
|
||||||
|
|
||||||
response = patch("/logs/#{job.id}")
|
|
||||||
response.status.should == 409
|
|
||||||
JSON.parse(response.body)['error']['message'].should =~ Regexp.new("Job .*is (not |un)finished")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
||||||
"Konstantin Haase",
|
"Konstantin Haase",
|
||||||
"Sven Fuchs",
|
"Sven Fuchs",
|
||||||
"Mathias Meyer",
|
"Mathias Meyer",
|
||||||
"Josh Kalderimis",
|
|
||||||
"Hiro Asari",
|
"Hiro Asari",
|
||||||
|
"Josh Kalderimis",
|
||||||
"Henrik Hodne",
|
"Henrik Hodne",
|
||||||
"Andre Arko",
|
"Andre Arko",
|
||||||
"Erik Michaels-Ober",
|
"Erik Michaels-Ober",
|
||||||
|
@ -35,8 +35,8 @@ Gem::Specification.new do |s|
|
||||||
"konstantin.mailinglists@googlemail.com",
|
"konstantin.mailinglists@googlemail.com",
|
||||||
"me@svenfuchs.com",
|
"me@svenfuchs.com",
|
||||||
"meyer@paperplanes.de",
|
"meyer@paperplanes.de",
|
||||||
"josh.kalderimis@gmail.com",
|
|
||||||
"asari.ruby@gmail.com",
|
"asari.ruby@gmail.com",
|
||||||
|
"josh.kalderimis@gmail.com",
|
||||||
"me@henrikhodne.com",
|
"me@henrikhodne.com",
|
||||||
"henrik@hodne.io",
|
"henrik@hodne.io",
|
||||||
"konstantin.haase@gmail.com",
|
"konstantin.haase@gmail.com",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user