Skip to content

Commit e462489

Browse files
committed
Merge pull request rails#17221 from StefanH/fix-unknown-http-method-message
Invalid HTTP method will raise I18n::InvalidLocale if :en is not a valid locale. Conflicts: actionpack/lib/action_dispatch/http/request.rb
1 parent 6dbaea6 commit e462489

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

actionpack/lib/action_dispatch/http/request.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ def parse_query(qs)
324324
private
325325

326326
def check_method(name)
327-
HTTP_METHOD_LOOKUP[name] || raise(ActionController::UnknownHttpMethod, "#{name}, accepted HTTP methods are #{HTTP_METHODS.to_sentence(:locale => :en)}")
327+
HTTP_METHOD_LOOKUP[name] || raise(ActionController::UnknownHttpMethod, "#{name}, accepted HTTP methods are #{HTTP_METHODS[0...-1].join(', ')}, and #{HTTP_METHODS[-1]}")
328328
name
329329
end
330330
end

actionpack/test/dispatch/request_test.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -459,6 +459,22 @@ def url_for(options = {})
459459
end
460460
end
461461

462+
test "exception on invalid HTTP method unaffected by I18n settings" do
463+
old_locales = I18n.available_locales
464+
old_enforce = I18n.config.enforce_available_locales
465+
466+
begin
467+
I18n.available_locales = [:nl]
468+
I18n.config.enforce_available_locales = true
469+
assert_raise(ActionController::UnknownHttpMethod) do
470+
stub_request('REQUEST_METHOD' => '_RANDOM_METHOD').method
471+
end
472+
ensure
473+
I18n.available_locales = old_locales
474+
I18n.config.enforce_available_locales = old_enforce
475+
end
476+
end
477+
462478
test "post masquerading as patch" do
463479
request = stub_request 'REQUEST_METHOD' => 'PATCH', "rack.methodoverride.original_method" => "POST"
464480
assert_equal "POST", request.method

0 commit comments

Comments
 (0)