From b4db5f3a443ad36350f71bf049eb05e49319b3c6 Mon Sep 17 00:00:00 2001 From: Miles Egan Date: Sat, 10 Jul 2010 14:29:08 -0700 Subject: [PATCH] add patch and test to handle rack parse typeerror [#3030 state:resolved] --- actionpack/lib/action_dispatch/http/parameters.rb | 2 +- actionpack/test/dispatch/request_test.rb | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletions(-) diff --git a/actionpack/lib/action_dispatch/http/parameters.rb b/actionpack/lib/action_dispatch/http/parameters.rb index add8cab..772ab25 100644 --- a/actionpack/lib/action_dispatch/http/parameters.rb +++ b/actionpack/lib/action_dispatch/http/parameters.rb @@ -7,7 +7,7 @@ module ActionDispatch # Returns both GET and POST \parameters in a single hash. def parameters @env["action_dispatch.request.parameters"] ||= begin - params = request_parameters.merge(query_parameters) + params = request_parameters.merge(query_parameters || {}) params.merge!(path_parameters) encode_params(params).with_indifferent_access end diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb index e5ee412..7216de9 100644 --- a/actionpack/test/dispatch/request_test.rb +++ b/actionpack/test/dispatch/request_test.rb @@ -346,6 +346,16 @@ class RequestTest < ActiveSupport::TestCase assert_equal({"bar" => 2}, request.query_parameters) end + test "parameter parse error" do + mock_rack_env = { "QUERY_STRING" => "x[y]=1&x[y][][w]=2", "rack.input" => "foo" } + request = nil + assert_raise TypeError do + request = stub_request(mock_rack_env) + request.parameters + end + assert_equal({}, request.parameters) + end + test "formats with accept header" do request = stub_request 'HTTP_ACCEPT' => 'text/html' request.expects(:parameters).at_least_once.returns({}) -- 1.7.0.4