removing the normalization of url's for the rails session. stipping them of host, port, and anchors is not really needed, especially since josh's redirect change to stop when going to a different host. See comments here: http://webrat.lighthouseapp.com/projects/10503-webrat/tickets/132
This commit is contained in:
parent
4e3cf59920
commit
4fc2b7eb7e
|
@ -65,19 +65,11 @@ module Webrat
|
|||
@context
|
||||
end
|
||||
|
||||
#now that we are not following external links, do NOT normalize the url and strip it of its host
|
||||
#once we get here we don't care about stripping out the host because we know
|
||||
def do_request(http_method, url, data, headers) #:nodoc:
|
||||
update_protocol(url)
|
||||
integration_session.send(http_method, normalize_url(url), data, headers)
|
||||
end
|
||||
|
||||
# remove protocol, host and anchor
|
||||
def normalize_url(href) #:nodoc:
|
||||
uri = URI.parse(href)
|
||||
normalized_url = uri.path
|
||||
if uri.query
|
||||
normalized_url += "?" + uri.query
|
||||
end
|
||||
normalized_url
|
||||
integration_session.send(http_method, url, data, headers)
|
||||
end
|
||||
|
||||
def update_protocol(href) #:nodoc:
|
||||
|
|
|
@ -6,6 +6,7 @@ describe Webrat::RailsSession do
|
|||
before :each do
|
||||
Webrat.configuration.mode = :rails
|
||||
@integration_session = mock("integration_session")
|
||||
@integration_session.stub!(:response => mock("response", :body => "<html>", :code => '200'))
|
||||
end
|
||||
|
||||
it "should delegate response_body to the session response body" do
|
||||
|
@ -43,18 +44,18 @@ describe Webrat::RailsSession do
|
|||
end
|
||||
|
||||
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.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.get("http://www.example.com/url", "data", "headers")
|
||||
end
|
||||
end
|
||||
|
||||
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(: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.get("https://www.example.com/url", "data", "headers")
|
||||
end
|
||||
|
@ -70,9 +71,9 @@ describe Webrat::RailsSession do
|
|||
end
|
||||
|
||||
context "the URL include an anchor" do
|
||||
it "should strip out the anchor" do
|
||||
it "should keep the anchor" do
|
||||
@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#foo", "data", "headers")
|
||||
rails_session = Webrat::RailsSession.new(@integration_session)
|
||||
rails_session.get("http://www.example.com/url#foo", "data", "headers")
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue