2017-07-24 20:20:53 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-08-06 16:54:50 +00:00
|
|
|
require "abstract_unit"
|
2004-11-24 01:04:44 +00:00
|
|
|
|
2016-05-31 03:15:49 +00:00
|
|
|
class Workshop
|
|
|
|
extend ActiveModel::Naming
|
|
|
|
include ActiveModel::Conversion
|
2018-08-28 03:36:39 +00:00
|
|
|
|
|
|
|
OUT_OF_SCOPE_BLOCK = proc do
|
|
|
|
raise "Not executed in controller's context" unless RedirectController === self
|
|
|
|
request.original_url
|
|
|
|
end
|
|
|
|
|
2016-05-31 03:15:49 +00:00
|
|
|
attr_accessor :id
|
|
|
|
|
|
|
|
def initialize(id)
|
|
|
|
@id = id
|
|
|
|
end
|
|
|
|
|
|
|
|
def persisted?
|
|
|
|
id.present?
|
|
|
|
end
|
|
|
|
|
|
|
|
def to_s
|
|
|
|
id.to_s
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2005-02-23 14:57:08 +00:00
|
|
|
class RedirectController < ActionController::Base
|
2011-08-14 16:58:29 +00:00
|
|
|
# empty method not used anywhere to ensure methods like
|
|
|
|
# `status` and `location` aren't called on `redirect_to` calls
|
2017-02-20 17:10:28 +00:00
|
|
|
def status; raise "Should not be called!"; end
|
|
|
|
def location; raise "Should not be called!"; end
|
2011-08-14 16:58:29 +00:00
|
|
|
|
2005-02-23 14:57:08 +00:00
|
|
|
def simple_redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to action: "hello_world"
|
2005-02-23 14:57:08 +00:00
|
|
|
end
|
2007-03-13 05:44:18 +00:00
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def redirect_with_status
|
2016-08-06 17:44:11 +00:00
|
|
|
redirect_to(action: "hello_world", status: 301)
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
2007-10-09 23:07:36 +00:00
|
|
|
|
|
|
|
def redirect_with_status_hash
|
2017-08-12 11:31:46 +00:00
|
|
|
redirect_to({ action: "hello_world" }, { status: 301 })
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
2007-10-09 23:07:36 +00:00
|
|
|
|
2009-08-08 19:40:08 +00:00
|
|
|
def redirect_with_protocol
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to action: "hello_world", protocol: "https"
|
2009-08-08 19:40:08 +00:00
|
|
|
end
|
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def url_redirect_with_status
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to("http://www.example.com", status: :moved_permanently)
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def url_redirect_with_status_hash
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to("http://www.example.com", status: 301)
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
2007-10-09 23:07:36 +00:00
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def relative_url_redirect_with_status
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to("/things/stuff", status: :found)
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
|
|
|
|
2007-10-09 23:07:36 +00:00
|
|
|
def relative_url_redirect_with_status_hash
|
2016-08-06 17:44:11 +00:00
|
|
|
redirect_to("/things/stuff", status: 301)
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
|
|
|
|
2015-12-16 01:17:32 +00:00
|
|
|
def redirect_back_with_status
|
2020-11-24 09:17:11 +00:00
|
|
|
redirect_back_or_to "/things/stuff", status: 307
|
2015-12-16 01:17:32 +00:00
|
|
|
end
|
|
|
|
|
2019-01-25 15:46:06 +00:00
|
|
|
def redirect_back_with_status_and_fallback_location_to_another_host
|
2020-11-24 09:17:11 +00:00
|
|
|
redirect_back_or_to "http://www.rubyonrails.org/", status: 307
|
2019-01-25 15:46:06 +00:00
|
|
|
end
|
|
|
|
|
2017-10-10 11:15:56 +00:00
|
|
|
def safe_redirect_back_with_status
|
2020-11-24 09:17:11 +00:00
|
|
|
redirect_back_or_to "/things/stuff", status: 307, allow_other_host: false
|
2017-10-10 11:15:56 +00:00
|
|
|
end
|
|
|
|
|
2019-01-25 15:46:06 +00:00
|
|
|
def safe_redirect_back_with_status_and_fallback_location_to_another_host
|
2020-11-24 09:17:11 +00:00
|
|
|
redirect_back_or_to "http://www.rubyonrails.org/", status: 307, allow_other_host: false
|
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_back_with_explicit_fallback_kwarg
|
|
|
|
redirect_back(fallback_location: "/things/stuff", status: 307)
|
2019-01-25 15:46:06 +00:00
|
|
|
end
|
|
|
|
|
2005-04-30 08:34:02 +00:00
|
|
|
def host_redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to action: "other_host", only_path: false, host: "other.test.host"
|
2005-04-30 08:34:02 +00:00
|
|
|
end
|
|
|
|
|
2005-07-02 18:16:38 +00:00
|
|
|
def module_redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to controller: "module_test/module_redirect", action: "hello_world"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
|
2008-04-02 12:48:59 +00:00
|
|
|
def redirect_to_url
|
|
|
|
redirect_to "http://www.rubyonrails.org/"
|
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_to_url_with_unescaped_query_string
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to "http://example.com/query?status=new"
|
2008-04-02 12:48:59 +00:00
|
|
|
end
|
|
|
|
|
2008-10-30 19:03:47 +00:00
|
|
|
def redirect_to_url_with_complex_scheme
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to "x-test+scheme.complex:redirect"
|
2008-10-30 19:03:47 +00:00
|
|
|
end
|
|
|
|
|
2011-12-05 10:14:21 +00:00
|
|
|
def redirect_to_url_with_network_path_reference
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to "//www.rubyonrails.org/"
|
2011-12-05 10:14:21 +00:00
|
|
|
end
|
|
|
|
|
2007-05-12 21:12:31 +00:00
|
|
|
def redirect_to_existing_record
|
2010-02-21 10:09:21 +00:00
|
|
|
redirect_to Workshop.new(5)
|
2007-05-12 21:12:31 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_to_new_record
|
2010-02-21 10:09:21 +00:00
|
|
|
redirect_to Workshop.new(nil)
|
2007-05-12 21:12:31 +00:00
|
|
|
end
|
|
|
|
|
2008-01-12 03:09:39 +00:00
|
|
|
def redirect_to_nil
|
|
|
|
redirect_to nil
|
|
|
|
end
|
|
|
|
|
2014-07-16 15:21:46 +00:00
|
|
|
def redirect_to_params
|
2016-08-06 16:54:50 +00:00
|
|
|
redirect_to ActionController::Parameters.new(status: 200, protocol: "javascript", f: "%0Aeval(name)")
|
2014-07-16 15:21:46 +00:00
|
|
|
end
|
|
|
|
|
2010-09-18 23:36:44 +00:00
|
|
|
def redirect_to_with_block
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to proc { "http://www.rubyonrails.org/" }
|
2010-09-18 23:36:44 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_to_with_block_and_assigns
|
|
|
|
@url = "http://www.rubyonrails.org/"
|
2019-01-22 16:40:13 +00:00
|
|
|
redirect_to proc { @url }
|
2010-09-18 23:36:44 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_to_with_block_and_options
|
2016-08-16 07:30:11 +00:00
|
|
|
redirect_to proc { { action: "hello_world" } }
|
2010-09-18 23:36:44 +00:00
|
|
|
end
|
|
|
|
|
2018-08-28 03:36:39 +00:00
|
|
|
def redirect_to_out_of_scope_block
|
|
|
|
redirect_to Workshop::OUT_OF_SCOPE_BLOCK
|
|
|
|
end
|
|
|
|
|
2012-03-15 21:42:57 +00:00
|
|
|
def redirect_with_header_break
|
|
|
|
redirect_to "/lol\r\nwat"
|
|
|
|
end
|
|
|
|
|
|
|
|
def redirect_with_null_bytes
|
|
|
|
redirect_to "\000/lol\r\nwat"
|
|
|
|
end
|
|
|
|
|
2005-02-23 14:57:08 +00:00
|
|
|
def rescue_errors(e) raise e end
|
2008-07-24 18:41:51 +00:00
|
|
|
|
2016-12-23 14:40:07 +00:00
|
|
|
private
|
2005-02-23 14:57:08 +00:00
|
|
|
def dashbord_url(id, message)
|
2016-08-06 17:35:13 +00:00
|
|
|
url_for action: "dashboard", params: { "id" => id, "message" => message }
|
2005-02-23 14:57:08 +00:00
|
|
|
end
|
|
|
|
end
|
2004-11-24 01:04:44 +00:00
|
|
|
|
2008-11-07 20:42:34 +00:00
|
|
|
class RedirectTest < ActionController::TestCase
|
|
|
|
tests RedirectController
|
2004-11-24 01:04:44 +00:00
|
|
|
|
|
|
|
def test_simple_redirect
|
2005-02-23 14:57:08 +00:00
|
|
|
get :simple_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
2004-11-24 01:04:44 +00:00
|
|
|
end
|
|
|
|
|
2012-03-15 21:42:57 +00:00
|
|
|
def test_redirect_with_header_break
|
|
|
|
get :redirect_with_header_break
|
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "http://test.host/lolwat", redirect_to_url
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_redirect_with_null_bytes
|
2012-03-15 22:15:10 +00:00
|
|
|
get :redirect_with_null_bytes
|
2012-03-15 21:42:57 +00:00
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "http://test.host/lolwat", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2007-10-09 23:07:36 +00:00
|
|
|
def test_redirect_with_no_status
|
|
|
|
get :simple_redirect
|
|
|
|
assert_response 302
|
|
|
|
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def test_redirect_with_status
|
|
|
|
get :redirect_with_status
|
|
|
|
assert_response 301
|
|
|
|
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
|
|
end
|
2007-10-09 23:07:36 +00:00
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def test_redirect_with_status_hash
|
2007-10-09 23:07:36 +00:00
|
|
|
get :redirect_with_status_hash
|
2008-07-24 18:41:51 +00:00
|
|
|
assert_response 301
|
|
|
|
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2009-08-08 19:40:08 +00:00
|
|
|
def test_redirect_with_protocol
|
|
|
|
get :redirect_with_protocol
|
|
|
|
assert_response 302
|
|
|
|
assert_equal "https://test.host/redirect/hello_world", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def test_url_redirect_with_status
|
|
|
|
get :url_redirect_with_status
|
|
|
|
assert_response 301
|
|
|
|
assert_equal "http://www.example.com", redirect_to_url
|
2007-10-09 23:07:36 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_url_redirect_with_status_hash
|
|
|
|
get :url_redirect_with_status_hash
|
2008-07-24 18:41:51 +00:00
|
|
|
assert_response 301
|
|
|
|
assert_equal "http://www.example.com", redirect_to_url
|
|
|
|
end
|
2007-10-09 23:07:36 +00:00
|
|
|
|
2008-07-24 18:41:51 +00:00
|
|
|
def test_relative_url_redirect_with_status
|
|
|
|
get :relative_url_redirect_with_status
|
2007-10-09 23:07:36 +00:00
|
|
|
assert_response 302
|
2008-07-24 18:41:51 +00:00
|
|
|
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2007-10-09 23:07:36 +00:00
|
|
|
def test_relative_url_redirect_with_status_hash
|
|
|
|
get :relative_url_redirect_with_status_hash
|
2008-07-24 18:41:51 +00:00
|
|
|
assert_response 301
|
|
|
|
assert_equal "http://test.host/things/stuff", redirect_to_url
|
2018-09-21 01:01:37 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_relative_url_redirect_host_with_port
|
|
|
|
request.host = "test.host:1234"
|
|
|
|
get :relative_url_redirect_with_status
|
|
|
|
assert_response 302
|
|
|
|
assert_equal "http://test.host:1234/things/stuff", redirect_to_url
|
2008-07-24 18:41:51 +00:00
|
|
|
end
|
|
|
|
|
2005-04-30 08:34:02 +00:00
|
|
|
def test_simple_redirect_using_options
|
|
|
|
get :host_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
assert_redirected_to action: "other_host", only_path: false, host: "other.test.host"
|
2005-04-30 08:34:02 +00:00
|
|
|
end
|
2005-07-02 18:16:38 +00:00
|
|
|
|
|
|
|
def test_module_redirect
|
|
|
|
get :module_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://test.host/module_test/module_redirect/hello_world"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_module_redirect_using_options
|
|
|
|
get :module_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
assert_redirected_to controller: "module_test/module_redirect", action: "hello_world"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
2005-07-31 12:16:21 +00:00
|
|
|
|
2008-04-02 12:48:59 +00:00
|
|
|
def test_redirect_to_url
|
|
|
|
get :redirect_to_url
|
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://www.rubyonrails.org/"
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_redirect_to_url_with_unescaped_query_string
|
|
|
|
get :redirect_to_url_with_unescaped_query_string
|
|
|
|
assert_response :redirect
|
2015-03-22 04:04:01 +00:00
|
|
|
assert_redirected_to "http://example.com/query?status=new"
|
2008-04-02 12:48:59 +00:00
|
|
|
end
|
|
|
|
|
2008-10-30 19:03:47 +00:00
|
|
|
def test_redirect_to_url_with_complex_scheme
|
|
|
|
get :redirect_to_url_with_complex_scheme
|
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "x-test+scheme.complex:redirect", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2011-12-05 10:14:21 +00:00
|
|
|
def test_redirect_to_url_with_network_path_reference
|
|
|
|
get :redirect_to_url_with_network_path_reference
|
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "//www.rubyonrails.org/", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2015-12-16 01:17:32 +00:00
|
|
|
def test_redirect_back
|
|
|
|
referer = "http://www.example.com/coming/from"
|
|
|
|
@request.env["HTTP_REFERER"] = referer
|
|
|
|
|
|
|
|
get :redirect_back_with_status
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal referer, redirect_to_url
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_redirect_back_with_no_referer
|
|
|
|
get :redirect_back_with_status
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2019-01-25 15:46:06 +00:00
|
|
|
def test_redirect_back_with_no_referer_redirects_to_another_host
|
|
|
|
get :redirect_back_with_status_and_fallback_location_to_another_host
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal "http://www.rubyonrails.org/", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2017-10-10 11:15:56 +00:00
|
|
|
def test_safe_redirect_back_from_other_host
|
|
|
|
@request.env["HTTP_REFERER"] = "http://another.host/coming/from"
|
|
|
|
get :safe_redirect_back_with_status
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_safe_redirect_back_from_the_same_host
|
|
|
|
referer = "http://test.host/coming/from"
|
|
|
|
@request.env["HTTP_REFERER"] = referer
|
|
|
|
get :safe_redirect_back_with_status
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal referer, redirect_to_url
|
|
|
|
end
|
|
|
|
|
2019-01-25 15:46:06 +00:00
|
|
|
def test_safe_redirect_back_with_no_referer
|
|
|
|
get :safe_redirect_back_with_status
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal "http://test.host/things/stuff", redirect_to_url
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_safe_redirect_back_with_no_referer_redirects_to_another_host
|
|
|
|
get :safe_redirect_back_with_status_and_fallback_location_to_another_host
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal "http://www.rubyonrails.org/", redirect_to_url
|
|
|
|
end
|
|
|
|
|
2020-11-24 09:17:11 +00:00
|
|
|
def test_redirect_back_with_explicit_fallback_kwarg
|
|
|
|
referer = "http://www.example.com/coming/from"
|
|
|
|
@request.env["HTTP_REFERER"] = referer
|
|
|
|
|
|
|
|
get :redirect_back_with_explicit_fallback_kwarg
|
|
|
|
|
|
|
|
assert_response 307
|
|
|
|
assert_equal referer, redirect_to_url
|
|
|
|
end
|
|
|
|
|
2007-05-12 21:12:31 +00:00
|
|
|
def test_redirect_to_record
|
2009-08-17 02:14:26 +00:00
|
|
|
with_routing do |set|
|
2010-08-05 13:44:23 +00:00
|
|
|
set.draw do
|
2009-12-08 22:52:26 +00:00
|
|
|
resources :workshops
|
2016-03-01 08:48:53 +00:00
|
|
|
|
|
|
|
ActiveSupport::Deprecation.silence do
|
2016-08-06 16:54:50 +00:00
|
|
|
get ":controller/:action"
|
2016-03-01 08:48:53 +00:00
|
|
|
end
|
2009-08-17 02:14:26 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
get :redirect_to_existing_record
|
|
|
|
assert_equal "http://test.host/workshops/5", redirect_to_url
|
2010-02-21 10:09:21 +00:00
|
|
|
assert_redirected_to Workshop.new(5)
|
2009-08-17 02:14:26 +00:00
|
|
|
|
|
|
|
get :redirect_to_new_record
|
|
|
|
assert_equal "http://test.host/workshops", redirect_to_url
|
2010-02-21 10:09:21 +00:00
|
|
|
assert_redirected_to Workshop.new(nil)
|
2007-05-12 21:12:31 +00:00
|
|
|
end
|
|
|
|
end
|
2008-01-12 03:09:39 +00:00
|
|
|
|
|
|
|
def test_redirect_to_nil
|
2015-09-21 16:32:03 +00:00
|
|
|
error = assert_raise(ActionController::ActionControllerError) do
|
2008-01-12 03:09:39 +00:00
|
|
|
get :redirect_to_nil
|
|
|
|
end
|
2015-09-21 16:32:03 +00:00
|
|
|
assert_equal "Cannot redirect to nil!", error.message
|
2008-01-12 03:09:39 +00:00
|
|
|
end
|
2010-09-18 23:36:44 +00:00
|
|
|
|
2014-07-16 15:21:46 +00:00
|
|
|
def test_redirect_to_params
|
2017-04-17 22:55:21 +00:00
|
|
|
error = assert_raise(ActionController::UnfilteredParameters) do
|
2014-07-16 15:21:46 +00:00
|
|
|
get :redirect_to_params
|
|
|
|
end
|
2017-04-17 22:55:21 +00:00
|
|
|
assert_equal "unable to convert unpermitted parameters to hash", error.message
|
2014-07-16 15:21:46 +00:00
|
|
|
end
|
|
|
|
|
2010-09-18 23:36:44 +00:00
|
|
|
def test_redirect_to_with_block
|
|
|
|
get :redirect_to_with_block
|
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://www.rubyonrails.org/"
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_redirect_to_with_block_and_assigns
|
|
|
|
get :redirect_to_with_block_and_assigns
|
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://www.rubyonrails.org/"
|
|
|
|
end
|
|
|
|
|
2018-08-28 03:36:39 +00:00
|
|
|
def test_redirect_to_out_of_scope_block
|
|
|
|
get :redirect_to_out_of_scope_block
|
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://test.host/redirect/redirect_to_out_of_scope_block"
|
|
|
|
end
|
|
|
|
|
2010-09-18 23:36:44 +00:00
|
|
|
def test_redirect_to_with_block_and_accepted_options
|
|
|
|
with_routing do |set|
|
|
|
|
set.draw do
|
2016-03-01 08:48:53 +00:00
|
|
|
ActiveSupport::Deprecation.silence do
|
2016-08-06 16:54:50 +00:00
|
|
|
get ":controller/:action"
|
2016-03-01 08:48:53 +00:00
|
|
|
end
|
2010-09-18 23:36:44 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
get :redirect_to_with_block_and_options
|
|
|
|
|
|
|
|
assert_response :redirect
|
|
|
|
assert_redirected_to "http://test.host/redirect/hello_world"
|
|
|
|
end
|
|
|
|
end
|
2005-04-30 08:34:02 +00:00
|
|
|
end
|
2005-07-02 18:16:38 +00:00
|
|
|
|
|
|
|
module ModuleTest
|
|
|
|
class ModuleRedirectController < ::RedirectController
|
|
|
|
def module_redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
redirect_to controller: "/redirect", action: "hello_world"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2008-11-07 20:42:34 +00:00
|
|
|
class ModuleRedirectTest < ActionController::TestCase
|
|
|
|
tests ModuleRedirectController
|
2007-03-13 05:44:18 +00:00
|
|
|
|
2005-07-02 18:16:38 +00:00
|
|
|
def test_simple_redirect
|
|
|
|
get :simple_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "http://test.host/module_test/module_redirect/hello_world", redirect_to_url
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
2007-03-13 05:44:18 +00:00
|
|
|
|
2005-07-02 18:16:38 +00:00
|
|
|
def test_simple_redirect_using_options
|
|
|
|
get :host_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
assert_redirected_to action: "other_host", only_path: false, host: "other.test.host"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_module_redirect
|
|
|
|
get :module_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
|
|
|
assert_equal "http://test.host/redirect/hello_world", redirect_to_url
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
def test_module_redirect_using_options
|
|
|
|
get :module_redirect
|
2006-09-04 05:05:11 +00:00
|
|
|
assert_response :redirect
|
2016-08-06 17:35:13 +00:00
|
|
|
assert_redirected_to controller: "/redirect", action: "hello_world"
|
2005-07-02 18:16:38 +00:00
|
|
|
end
|
|
|
|
end
|
2005-07-23 09:00:05 +00:00
|
|
|
end
|