Fixed following of internal redirects when using a custom Host header
Webrat didn't properly follow internal redirects when using the Host header, this lets Webrat check the Host header before falling back to www.example.com as the current_host.
This commit is contained in:
parent
481bfe03c0
commit
eddd979361
|
@ -264,7 +264,7 @@ For example:
|
||||||
end
|
end
|
||||||
|
|
||||||
def current_host
|
def current_host
|
||||||
URI.parse(current_url).host || "www.example.com"
|
URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com"
|
||||||
end
|
end
|
||||||
|
|
||||||
def response_location_host
|
def response_location_host
|
||||||
|
|
|
@ -25,6 +25,10 @@ class WebratController < ApplicationController
|
||||||
redirect_to "http://google.com"
|
redirect_to "http://google.com"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def host_redirect
|
||||||
|
redirect_to submit_url
|
||||||
|
end
|
||||||
|
|
||||||
def before_redirect_form
|
def before_redirect_form
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ ActionController::Routing::Routes.draw do |map|
|
||||||
webrat.internal_redirect "/internal_redirect", :action => "internal_redirect"
|
webrat.internal_redirect "/internal_redirect", :action => "internal_redirect"
|
||||||
webrat.external_redirect "/external_redirect", :action => "external_redirect"
|
webrat.external_redirect "/external_redirect", :action => "external_redirect"
|
||||||
webrat.infinite_redirect "/infinite_redirect", :action => "infinite_redirect"
|
webrat.infinite_redirect "/infinite_redirect", :action => "infinite_redirect"
|
||||||
|
webrat.host_redirect "/host_redirect", :action => "host_redirect"
|
||||||
|
|
||||||
webrat.before_redirect_form "/before_redirect_form", :action => "before_redirect_form"
|
webrat.before_redirect_form "/before_redirect_form", :action => "before_redirect_form"
|
||||||
webrat.redirect_to_show_params "/redirect_to_show_params", :action => "redirect_to_show_params"
|
webrat.redirect_to_show_params "/redirect_to_show_params", :action => "redirect_to_show_params"
|
||||||
|
|
|
@ -45,6 +45,13 @@ class WebratTest < ActionController::IntegrationTest
|
||||||
assert response.redirect?
|
assert response.redirect?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "should recognize the host header to follow redirects properly" do
|
||||||
|
header "Host", "foo.bar"
|
||||||
|
visit host_redirect_path
|
||||||
|
assert !response.redirect?
|
||||||
|
assert response.body.include?("OK")
|
||||||
|
end
|
||||||
|
|
||||||
test "should click link by text" do
|
test "should click link by text" do
|
||||||
visit internal_redirect_path
|
visit internal_redirect_path
|
||||||
click_link "Test Link Text"
|
click_link "Test Link Text"
|
||||||
|
|
Loading…
Reference in New Issue