diff --git a/lib/webrat/core/session.rb b/lib/webrat/core/session.rb index ba119ab..31c508e 100644 --- a/lib/webrat/core/session.rb +++ b/lib/webrat/core/session.rb @@ -273,7 +273,7 @@ For example: end def current_host - URI.parse(current_url).host || "www.example.com" + URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com" end def response_location_host diff --git a/spec/integration/rails/app/controllers/webrat_controller.rb b/spec/integration/rails/app/controllers/webrat_controller.rb index b117ae8..10d9e82 100644 --- a/spec/integration/rails/app/controllers/webrat_controller.rb +++ b/spec/integration/rails/app/controllers/webrat_controller.rb @@ -25,6 +25,10 @@ class WebratController < ApplicationController redirect_to "http://google.com" end + def host_redirect + redirect_to submit_url + end + def before_redirect_form end diff --git a/spec/integration/rails/config/routes.rb b/spec/integration/rails/config/routes.rb index 43b55f7..4a4f304 100644 --- a/spec/integration/rails/config/routes.rb +++ b/spec/integration/rails/config/routes.rb @@ -7,6 +7,7 @@ ActionController::Routing::Routes.draw do |map| webrat.internal_redirect "/internal_redirect", :action => "internal_redirect" webrat.external_redirect "/external_redirect", :action => "external_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.redirect_to_show_params "/redirect_to_show_params", :action => "redirect_to_show_params" diff --git a/spec/integration/rails/test/integration/webrat_test.rb b/spec/integration/rails/test/integration/webrat_test.rb index ea22869..7af700d 100644 --- a/spec/integration/rails/test/integration/webrat_test.rb +++ b/spec/integration/rails/test/integration/webrat_test.rb @@ -52,6 +52,25 @@ class WebratTest < ActionController::IntegrationTest assert response.redirect? 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 + visit internal_redirect_path + click_link "Test Link Text" + assert_contain("Webrat Form") + end + + test "should click link by id" do + visit internal_redirect_path + click_link "link_id" + assert_contain("Webrat Form") + end + test "should be able to assert xpath" do visit root_path assert_have_xpath "//h1"