diff options
author | Agis Anastasopoulos <agis.anast@gmail.com> | 2015-10-19 17:18:09 +0300 |
---|---|---|
committer | Agis Anastasopoulos <agis.anast@gmail.com> | 2015-10-19 17:36:22 +0300 |
commit | 3f81b3753ffdca8617422e518e1fddd581f5a712 (patch) | |
tree | 68abd2546ae7b8289007def1f32719916b7a3ca1 /actionpack/test/dispatch | |
parent | dd2c94aea6de51b58f75f192e5de16e791b9d2d9 (diff) | |
download | rails-3f81b3753ffdca8617422e518e1fddd581f5a712.tar.gz rails-3f81b3753ffdca8617422e518e1fddd581f5a712.tar.bz2 rails-3f81b3753ffdca8617422e518e1fddd581f5a712.zip |
Show helpful messages on invalid param. encodings
Prior to this change, given a route:
# config/routes.rb
get ':a' => "foo#bar"
If one pointed to http://example.com/%BE (param `a` has invalid encoding),
a `BadRequest` would be raised with the following non-informative message:
ActionController::BadRequest
From now on the message displayed is:
Invalid parameter encoding: hi => "\xBE"
Fixes #21923.
Diffstat (limited to 'actionpack/test/dispatch')
-rw-r--r-- | actionpack/test/dispatch/request_test.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb index af2ed24f43..dfedc8ae25 100644 --- a/actionpack/test/dispatch/request_test.rb +++ b/actionpack/test/dispatch/request_test.rb @@ -961,6 +961,20 @@ class RequestParameters < BaseRequestTest end end + test "path parameters with invalid UTF8 encoding" do + request = stub_request( + "action_dispatch.request.path_parameters" => { foo: "\xBE" } + ) + + err = assert_raises(ActionController::BadRequest) do + request.check_path_parameters! + end + + assert_match "Invalid parameter encoding", err.message + assert_match "foo", err.message + assert_match "\\xBE", err.message + end + test "parameters not accessible after rack parse error of invalid UTF8 character" do request = stub_request("QUERY_STRING" => "foo%81E=1") |