url
end
- def redirect_back_or_default(default)
+ def redirect_back_or_default(default, options={})
back_url = params[:back_url].to_s
if back_url.present?
begin
logger.warn("Could not redirect to invalid URL #{back_url}")
# redirect to default
end
+ elsif options[:referer]
+ redirect_to_referer_or default
+ return
end
redirect_to default
false
assert_select 'input[name=password]'
end
- def test_get_login_while_logged_in_should_redirect_to_home
+ def test_get_login_while_logged_in_should_redirect_to_back_url_if_present
+ @request.session[:user_id] = 2
+ @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1'
+
+ get :login, :back_url => 'http://test.host/issues/show/1'
+ assert_redirected_to '/issues/show/1'
+ assert_equal 2, @request.session[:user_id]
+ end
+
+ def test_get_login_while_logged_in_should_redirect_to_referer_without_back_url
+ @request.session[:user_id] = 2
+ @request.env["HTTP_REFERER"] = 'http://test.host/issues/show/1'
+
+ get :login
+ assert_redirected_to '/issues/show/1'
+ assert_equal 2, @request.session[:user_id]
+ end
+
+ def test_get_login_while_logged_in_should_redirect_to_home_by_default
@request.session[:user_id] = 2
get :login