Add RemoveLog service endpoint to jobs/:id/log
This replaces https://github.com/travis-ci/travis-api/pull/107.
This commit is contained in:
parent
851c2b2db2
commit
1cf298464a
|
@ -45,7 +45,7 @@ GIT
|
|||
|
||||
GIT
|
||||
remote: git://github.com/travis-ci/travis-core.git
|
||||
revision: c5141bb7ffa3ef9c7dac9ce5a1ed17a19b02f7ba
|
||||
revision: a8d8e4c9c92e436645e80c6fb486fff8a442e6f6
|
||||
specs:
|
||||
travis-core (0.0.1)
|
||||
actionmailer (~> 3.2.12)
|
||||
|
|
|
@ -64,6 +64,20 @@ class Travis::Api::App
|
|||
end
|
||||
end
|
||||
|
||||
patch '/:id/log', scope: :private do
|
||||
# PATCH method for `RemoveLog` service, since we are replacing log content
|
||||
service = self.service(:remove_log, params)
|
||||
begin
|
||||
respond_with service.run
|
||||
rescue Travis::AuthorizationDenied => e
|
||||
status 401
|
||||
{ error: { message: e.message } }
|
||||
rescue Travis::JobUnfinished, Travis::LogAlreadyRemoved => e
|
||||
status 409
|
||||
{ error: { message: e.message } }
|
||||
end
|
||||
end
|
||||
|
||||
get "/:job_id/annotations" do
|
||||
respond_with service(:find_annotations, params)
|
||||
end
|
||||
|
|
|
@ -76,6 +76,58 @@ describe 'Jobs' do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'PATCH /jobs/:job_id/log' do
|
||||
let(:user) { User.where(login: 'svenfuchs').first }
|
||||
let(:token) { Travis::Api::App::AccessToken.create(user: user, app_id: -1) }
|
||||
|
||||
before :each do
|
||||
headers.merge! 'HTTP_AUTHORIZATION' => "token #{token}"
|
||||
end
|
||||
|
||||
context 'when user does not have push permissions' do
|
||||
before :each do
|
||||
user.permissions.create!(repository_id: job.repository.id, :push => false)
|
||||
end
|
||||
|
||||
it 'returns status 401' do
|
||||
response = patch "/jobs/#{job.id}/log", { reason: 'Because reason!' }, headers
|
||||
response.status.should == 401
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user has push permission' do
|
||||
context 'when job is not finished' do
|
||||
before :each do
|
||||
job.stubs(:finished?).returns false
|
||||
user.permissions.create!(repository_id: job.repository.id, :push => true)
|
||||
end
|
||||
|
||||
it 'returns status 409' do
|
||||
response = patch "/jobs/#{job.id}/log", { reason: 'Because reason!' }, headers
|
||||
response.status.should == 409
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is finished' do
|
||||
let(:finished_job) { Factory(:test, state: 'passed') }
|
||||
|
||||
before :each do
|
||||
user.permissions.create!(repository_id: finished_job.repository.id, :push => true)
|
||||
end
|
||||
|
||||
it 'returns status 200' do
|
||||
response = patch "/jobs/#{finished_job.id}/log", { reason: 'Because reason!' }, headers
|
||||
response.status.should == 200
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
context 'when job is not found' do
|
||||
# TODO
|
||||
end
|
||||
end
|
||||
|
||||
it "GET /jobs/:id/annotations" do
|
||||
annotation_provider = Factory(:annotation_provider)
|
||||
annotation = annotation_provider.annotations.create(job_id: job.id, status: "passed", description: "Foobar")
|
||||
|
|
|
@ -14,8 +14,8 @@ Gem::Specification.new do |s|
|
|||
"Sven Fuchs",
|
||||
"Mathias Meyer",
|
||||
"Josh Kalderimis",
|
||||
"Henrik Hodne",
|
||||
"Hiro Asari",
|
||||
"Henrik Hodne",
|
||||
"Andre Arko",
|
||||
"Erik Michaels-Ober",
|
||||
"Brian Ford",
|
||||
|
@ -158,6 +158,7 @@ Gem::Specification.new do |s|
|
|||
"public/images/result/unknown.svg",
|
||||
"script/console",
|
||||
"script/server",
|
||||
"set_up_travis_logs.sh",
|
||||
"spec/integration/formats_handling_spec.rb",
|
||||
"spec/integration/responders_spec.rb",
|
||||
"spec/integration/routes.backup.rb",
|
||||
|
|
Loading…
Reference in New Issue
Block a user