Skip to content

Commit 6b35a04

Browse files
committed
The default status code returned from error\! has been changed from 403 to 500.
1 parent 35a6180 commit 6b35a04

File tree

8 files changed

+15
-14
lines changed

8 files changed

+15
-14
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Next Release
66
* [#510](https://github.com/intridea/grape/pull/510): Support lambda-based default values for params - [@myitcv](https://github.com/myitcv).
77
* [#511](https://github.com/intridea/grape/pull/511): Add `required` option for OAuth2 middleware - [@bcm](https://github.com/bcm).
88
* [#520](https://github.com/intridea/grape/pull/520): Use `default_error_status` to specify the default status code returned from `error!` - [@salimane](https://github.com/salimane).
9+
* [#525](https://github.com/intridea/grape/pull/525): The default status code returned from `error!` has been changed from 403 to 500 - [@dblock](https://github.com/dblock).
910
* Your contribution here.
1011

1112
#### Fixes

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ error!({ "error" => "unexpected error", "detail" => "missing widget" }, 500)
690690

691691
### Default Error HTTP Status Code
692692

693-
By default Grape returns a 403 status code from `error!`. You can change this with `default_error_status`.
693+
By default Grape returns a 500 status code from `error!`. You can change this with `default_error_status`.
694694

695695
``` ruby
696696
class API < Grape::API

lib/grape/endpoint.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ def version
202202
# end user with the specified message.
203203
#
204204
# @param message [String] The message to display.
205-
# @param status [Integer] the HTTP Status Code. Defaults to default_error_status, 403 if not set.
205+
# @param status [Integer] the HTTP Status Code. Defaults to default_error_status, 500 if not set.
206206
def error!(message, status = nil)
207207
status = settings[:default_error_status] unless status
208208
throw :error, message: message, status: status
@@ -406,7 +406,7 @@ def build_middleware
406406
b.use Rack::Head
407407
b.use Grape::Middleware::Error,
408408
format: settings[:format],
409-
default_status: settings[:default_error_status] || 403,
409+
default_status: settings[:default_error_status] || 500,
410410
rescue_all: settings[:rescue_all],
411411
rescued_errors: aggregate_setting(:rescued_errors),
412412
default_error_formatter: settings[:default_error_formatter],

lib/grape/middleware/error.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module Middleware
55
class Error < Base
66
def default_options
77
{
8-
default_status: 403, # default status returned on error
8+
default_status: 500, # default status returned on error
99
default_message: "",
1010
format: :txt,
1111
formatters: {},

spec/grape/api_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,7 @@ def three
993993
raise "rain!"
994994
end
995995
get '/exception'
996-
last_response.status.should eql 403
996+
last_response.status.should eql 500
997997
end
998998

999999
it 'rescues only certain errors if rescue_from is called with specific errors' do
@@ -1002,7 +1002,7 @@ def three
10021002
subject.get('/unrescued') { raise "beefcake" }
10031003

10041004
get '/rescued'
1005-
last_response.status.should eql 403
1005+
last_response.status.should eql 500
10061006

10071007
lambda { get '/unrescued' }.should raise_error
10081008
end
@@ -1477,7 +1477,7 @@ def self.call(object, env)
14771477
raise "rain!"
14781478
end
14791479
get '/exception'
1480-
last_response.status.should eql 403
1480+
last_response.status.should eql 500
14811481
end
14821482
it 'uses the default error status in error!' do
14831483
subject.rescue_from :all

spec/grape/endpoint_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,7 @@ def app
464464
end
465465

466466
get '/hey'
467-
last_response.status.should == 403
467+
last_response.status.should == 500
468468
last_response.body.should == "This is not valid."
469469
end
470470

spec/grape/middleware/error_spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ def app
3131
last_response.body.should == 'Awesome stuff.'
3232
end
3333

34-
it 'defaults to a 403 status' do
34+
it 'defaults to a 500 status' do
3535
ErrApp.error = {}
3636
get '/'
37-
last_response.status.should == 403
37+
last_response.status.should == 500
3838
end
3939

4040
it 'has a default message' do

spec/grape/middleware/exception_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def call(env)
1515
# raises a hash error
1616
class ErrorHashApp
1717
class << self
18-
def error!(message, status = 403)
18+
def error!(message, status)
1919
throw :error, message: { error: message, detail: "missing widget" }, status: status
2020
end
2121

@@ -28,7 +28,7 @@ def call(env)
2828
# raises an error!
2929
class AccessDeniedApp
3030
class << self
31-
def error!(message, status = 403)
31+
def error!(message, status)
3232
throw :error, message: message, status: status
3333
end
3434

@@ -70,13 +70,13 @@ def call(env)
7070
last_response.body.should == "rain!"
7171
end
7272

73-
it 'defaults to a 403 status' do
73+
it 'defaults to a 500 status' do
7474
@app ||= Rack::Builder.app do
7575
use Grape::Middleware::Error, rescue_all: true
7676
run ExceptionApp
7777
end
7878
get '/'
79-
last_response.status.should == 403
79+
last_response.status.should == 500
8080
end
8181

8282
it 'is possible to specify a different default status code' do

0 commit comments

Comments
 (0)