From 6fd8346400f99c33cf207d422a22730427420dbb Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Fri, 23 May 2014 10:52:58 -0700 Subject: pass the correct custom request to the recognize method --- actionpack/lib/action_dispatch/journey/router.rb | 4 +--- .../lib/action_dispatch/routing/route_set.rb | 2 +- actionpack/test/journey/router_test.rb | 23 ++++++++++------------ 3 files changed, 12 insertions(+), 17 deletions(-) (limited to 'actionpack') diff --git a/actionpack/lib/action_dispatch/journey/router.rb b/actionpack/lib/action_dispatch/journey/router.rb index 218c9e9d55..6bd77925a2 100644 --- a/actionpack/lib/action_dispatch/journey/router.rb +++ b/actionpack/lib/action_dispatch/journey/router.rb @@ -57,9 +57,7 @@ module ActionDispatch return [404, {'X-Cascade' => 'pass'}, ['Not Found']] end - def recognize(req) - rails_req = request_class.new(req.env) - + def recognize(rails_req) find_routes(rails_req).each do |match, parameters, route| unless route.path.anchored rails_req.script_name = match.to_s diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 9d7164eef2..d2366bb300 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -699,7 +699,7 @@ module ActionDispatch raise ActionController::RoutingError, e.message end - req = @request_class.new(env) + req = request_class.new(env) @router.recognize(req) do |route, params| params.merge!(extras) params.each do |key, value| diff --git a/actionpack/test/journey/router_test.rb b/actionpack/test/journey/router_test.rb index d37fe1c625..0b3dd530a3 100644 --- a/actionpack/test/journey/router_test.rb +++ b/actionpack/test/journey/router_test.rb @@ -75,7 +75,7 @@ module ActionDispatch def test_request_class_and_requirements_success klass = FakeRequestFeeler.new nil - router = Router.new(routes, {:request_class => klass }) + router = Router.new(routes, {}) requirements = { :hello => /world/ } @@ -84,7 +84,7 @@ module ActionDispatch routes.add_route nil, path, requirements, {:id => nil}, {} - env = rails_env 'PATH_INFO' => '/foo/10' + env = rails_env({'PATH_INFO' => '/foo/10'}, klass) router.recognize(env) do |r, params| assert_equal({:id => '10'}, params) end @@ -95,7 +95,7 @@ module ActionDispatch def test_request_class_and_requirements_fail klass = FakeRequestFeeler.new nil - router = Router.new(routes, {:request_class => klass }) + router = Router.new(routes, {}) requirements = { :hello => /mom/ } @@ -104,7 +104,7 @@ module ActionDispatch router.routes.add_route nil, path, requirements, {:id => nil}, {} - env = rails_env 'PATH_INFO' => '/foo/10' + env = rails_env({'PATH_INFO' => '/foo/10'}, klass) router.recognize(env) do |r, params| flunk 'route should not be found' end @@ -131,7 +131,8 @@ module ActionDispatch routes.add_route nil, path, {}, {}, {} - env = rails_env 'PATH_INFO' => '/foo', 'custom.path_info' => '/bar' + env = rails_env({'PATH_INFO' => '/foo', + 'custom.path_info' => '/bar'}, CustomPathRequest) recognized = false router.recognize(env) do |r, params| @@ -213,7 +214,7 @@ module ActionDispatch def test_X_Cascade add_routes @router, [ "/messages(.:format)" ] - resp = @router.serve(make_req({ 'REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/lol' })) + resp = @router.serve(rails_env({ 'REQUEST_METHOD' => 'GET', 'PATH_INFO' => '/lol' })) assert_equal ['Not Found'], resp.last assert_equal 'pass', resp[1]['X-Cascade'] assert_equal 404, resp.first @@ -226,7 +227,7 @@ module ActionDispatch @router.routes.add_route(app, path, {}, {}, {}) env = rack_env('SCRIPT_NAME' => '', 'PATH_INFO' => '/weblog') - resp = @router.serve make_req env + resp = @router.serve rails_env env assert_equal ['success!'], resp.last assert_equal '', env['SCRIPT_NAME'] end @@ -567,12 +568,8 @@ module ActionDispatch RailsEnv = Struct.new(:env) - def rails_env env - RailsEnv.new rack_env env - end - - def make_req env - ActionDispatch::Request.new env + def rails_env env, klass = ActionDispatch::Request + klass.new env end def rack_env env -- cgit v1.2.3