From e55d70a380a8d7408cc495086ff49af6c6e406d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 5 Jan 2010 23:40:56 +0100 Subject: redirect in routes takes port into account [#3653 status:resolved] --- actionpack/lib/action_dispatch/routing/mapper.rb | 1 + actionpack/test/dispatch/routing_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+) (limited to 'actionpack') diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb index 8b46790fd2..2a25a8c4ea 100644 --- a/actionpack/lib/action_dispatch/routing/mapper.rb +++ b/actionpack/lib/action_dispatch/routing/mapper.rb @@ -208,6 +208,7 @@ module ActionDispatch uri = URI.parse(path_proc.call(req.params)) uri.scheme ||= req.scheme uri.host ||= req.host + uri.port ||= req.port unless req.port == 80 headers = { 'Location' => uri.to_s, diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb index 21bd7d5ac0..a746c7e2ed 100644 --- a/actionpack/test/dispatch/routing_test.rb +++ b/actionpack/test/dispatch/routing_test.rb @@ -507,6 +507,18 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest end end + def test_redirect_with_port + previous_host, self.host = self.host, 'www.example.com:3000' + with_test_routes do + get '/account/login' + assert_equal 301, @response.status + assert_equal 'http://www.example.com:3000/login', @response.headers['Location'] + assert_equal 'Moved Permanently', @response.body + end + ensure + self.host = previous_host + end + private def with_test_routes real_routes, temp_routes = ActionController::Routing::Routes, Routes -- cgit v1.2.3