From dfffe8e405cb528c2cd1519c5a1c4e97f61b4554 Mon Sep 17 00:00:00 2001
From: Hiro Asari <asari.ruby@gmail.com>
Date: Thu, 12 Jun 2014 07:20:47 -0400
Subject: [PATCH] Remove `PATCH logs/:job_id` endpoint

To eradicate unnecessary inconsistency.

Spec to test the existing `GET logs/:id` remains.
---
 lib/travis/api/app/endpoint/jobs.rb | 15 ++++++++++++---
 lib/travis/api/app/endpoint/logs.rb |  7 -------
 lib/travis/api/app/helpers.rb       | 13 -------------
 spec/unit/endpoint/logs_spec.rb     | 29 +----------------------------
 travis-api.gemspec                  |  4 ++--
 5 files changed, 15 insertions(+), 53 deletions(-)

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",