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:
Mutwin Kraus 2009-04-24 23:49:11 -07:00
parent 481bfe03c0
commit eddd979361
4 changed files with 13 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"