Fixed issue where webrat was only using relative paths when making requests for Rails apps. This borked Rails apps that use subdomains [John Hwang/Zach Dennis]
This commit is contained in:
parent
7a59353c78
commit
0272e81847
|
@ -73,11 +73,13 @@ module Webrat
|
||||||
# remove protocol, host and anchor
|
# remove protocol, host and anchor
|
||||||
def normalize_url(href) #:nodoc:
|
def normalize_url(href) #:nodoc:
|
||||||
uri = URI.parse(href)
|
uri = URI.parse(href)
|
||||||
normalized_url = uri.path
|
normalized_url = []
|
||||||
if uri.query
|
normalized_url << "#{uri.scheme}://" if uri.scheme
|
||||||
normalized_url += "?" + uri.query
|
normalized_url << uri.host if uri.host
|
||||||
end
|
normalized_url << ":#{uri.port}" if uri.port && ![80,443].include?(uri.port)
|
||||||
normalized_url
|
normalized_url << uri.path if uri.path
|
||||||
|
normalized_url << "?#{uri.query}" if uri.query
|
||||||
|
normalized_url.join
|
||||||
end
|
end
|
||||||
|
|
||||||
def update_protocol(href) #:nodoc:
|
def update_protocol(href) #:nodoc:
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
require 'test_helper'
|
require 'test_helper'
|
||||||
|
|
||||||
class WebratTest < ActionController::IntegrationTest
|
class WebratTest < ActionController::IntegrationTest
|
||||||
|
|
||||||
|
test "should visit fully qualified urls" do
|
||||||
|
visit root_url(:host => "chunkybacon.example.com")
|
||||||
|
assert_equal "chunkybacon", request.subdomains.first
|
||||||
|
end
|
||||||
|
|
||||||
test "should visit pages" do
|
test "should visit pages" do
|
||||||
visit root_path
|
visit root_path
|
||||||
assert_tag "Webrat Form"
|
assert_tag "Webrat Form"
|
||||||
|
|
|
@ -43,18 +43,18 @@ describe Webrat::RailsSession do
|
||||||
end
|
end
|
||||||
|
|
||||||
context "the URL is a full path" do
|
context "the URL is a full path" do
|
||||||
it "should just pass on the path" do
|
it "should pass the full url" do
|
||||||
@integration_session.stub!(:https!)
|
@integration_session.stub!(:https!)
|
||||||
@integration_session.should_receive(:get).with("/url", "data", "headers")
|
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
||||||
rails_session = Webrat::RailsSession.new(@integration_session)
|
rails_session = Webrat::RailsSession.new(@integration_session)
|
||||||
rails_session.get("http://www.example.com/url", "data", "headers")
|
rails_session.get("http://www.example.com/url", "data", "headers")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "the URL is https://" do
|
context "the URL is https://" do
|
||||||
it "should call #https! with true before the request and just pass on the path" do
|
it "should call #https! with true before the request before passing along the full url" do
|
||||||
@integration_session.should_receive(:https!).with(true)
|
@integration_session.should_receive(:https!).with(true)
|
||||||
@integration_session.should_receive(:get).with("/url", "data", "headers")
|
@integration_session.should_receive(:get).with("https://www.example.com/url", "data", "headers")
|
||||||
rails_session = Webrat::RailsSession.new(@integration_session)
|
rails_session = Webrat::RailsSession.new(@integration_session)
|
||||||
rails_session.get("https://www.example.com/url", "data", "headers")
|
rails_session.get("https://www.example.com/url", "data", "headers")
|
||||||
end
|
end
|
||||||
|
@ -72,7 +72,7 @@ describe Webrat::RailsSession do
|
||||||
context "the URL include an anchor" do
|
context "the URL include an anchor" do
|
||||||
it "should strip out the anchor" do
|
it "should strip out the anchor" do
|
||||||
@integration_session.should_receive(:https!).with(false)
|
@integration_session.should_receive(:https!).with(false)
|
||||||
@integration_session.should_receive(:get).with("/url", "data", "headers")
|
@integration_session.should_receive(:get).with("http://www.example.com/url", "data", "headers")
|
||||||
rails_session = Webrat::RailsSession.new(@integration_session)
|
rails_session = Webrat::RailsSession.new(@integration_session)
|
||||||
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue