diff --git a/lib/travis/api/app/endpoint/jobs.rb b/lib/travis/api/app/endpoint/jobs.rb index 29eecdee..0c497a58 100644 --- a/lib/travis/api/app/endpoint/jobs.rb +++ b/lib/travis/api/app/endpoint/jobs.rb @@ -3,8 +3,6 @@ require 'travis/api/app' class Travis::Api::App class Endpoint class Jobs < Endpoint - include Helpers - get '/' do prefer_follower do respond_with service(:find_jobs, params) @@ -67,7 +65,18 @@ class Travis::Api::App end 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 get "/:job_id/annotations" do diff --git a/lib/travis/api/app/endpoint/logs.rb b/lib/travis/api/app/endpoint/logs.rb index edf59467..5dee65d9 100644 --- a/lib/travis/api/app/endpoint/logs.rb +++ b/lib/travis/api/app/endpoint/logs.rb @@ -4,17 +4,10 @@ class Travis::Api::App class Endpoint # Logs are generated by builds. class Logs < Endpoint - include Helpers # Fetches a log by its *id*. get '/:id' do |id| respond_with service(:find_log, params) 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 diff --git a/lib/travis/api/app/helpers.rb b/lib/travis/api/app/helpers.rb index 1522f8f0..a009b025 100644 --- a/lib/travis/api/app/helpers.rb +++ b/lib/travis/api/app/helpers.rb @@ -4,18 +4,5 @@ class Travis::Api::App # Namespace for helpers. module 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 diff --git a/spec/unit/endpoint/logs_spec.rb b/spec/unit/endpoint/logs_spec.rb index 20b4e83b..7f13049f 100644 --- a/spec/unit/endpoint/logs_spec.rb +++ b/spec/unit/endpoint/logs_spec.rb @@ -1,38 +1,11 @@ require 'spec_helper' describe Travis::Api::App::Endpoint::Logs do - let(:user) { Factory(:user) } - let(:job) { Factory(:test, owner: user, log: Factory(:log)) } - let(:provider) { Factory(:annotation_provider) } + let(:job) { Factory(:test) } describe "GET /logs/:id/" 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 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 diff --git a/travis-api.gemspec b/travis-api.gemspec index c0d53e10..244aadfa 100644 --- a/travis-api.gemspec +++ b/travis-api.gemspec @@ -13,8 +13,8 @@ Gem::Specification.new do |s| "Konstantin Haase", "Sven Fuchs", "Mathias Meyer", - "Josh Kalderimis", "Hiro Asari", + "Josh Kalderimis", "Henrik Hodne", "Andre Arko", "Erik Michaels-Ober", @@ -35,8 +35,8 @@ Gem::Specification.new do |s| "konstantin.mailinglists@googlemail.com", "me@svenfuchs.com", "meyer@paperplanes.de", - "josh.kalderimis@gmail.com", "asari.ruby@gmail.com", + "josh.kalderimis@gmail.com", "me@henrikhodne.com", "henrik@hodne.io", "konstantin.haase@gmail.com",