Merge pull request #229 from travis-ci/error-handling

create MethodNotAllowed error
This commit is contained in:
Konstantin Haase 2016-02-25 15:21:07 +01:00
commit fa5f65606e
3 changed files with 18 additions and 1 deletions

View File

@ -35,6 +35,7 @@ module Travis
NotImplemented = ServerError .create('request not (yet) implemented', status: 501)
RequestLimitReached = ClientError .create('request limit reached for resource', status: 429)
AlreadySyncing = ClientError .create('sync already in progress', status: 409)
MethodNotAllowed = ClientError .create('method not allowed', status: 405)
end
end
end

View File

@ -15,8 +15,9 @@ module Travis::API::V3
return service_index(env) if env['PATH_INFO'.freeze] == ?/.freeze
metrics = @metrics_processor.create
access_control = AccessControl.new(env)
factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze])
env_params = params(env)
factory, params = routes.factory_for(env['REQUEST_METHOD'.freeze], env['PATH_INFO'.freeze])
raise NotFound unless factory
metrics.name_after(factory)

View File

@ -0,0 +1,15 @@
require 'spec_helper'
describe Travis::API::V3::ServiceIndex do
let(:headers) {{ }}
let(:path) { "/v3/repo/1/enable" }
let(:json) { JSON.load(response.body) }
let(:response) { get(path, {}, headers) }
let(:resources) { json.fetch('resources') }
it "handles wrong HTTP method with 405 status" do
response.status.should == 405
end
end