Add more referer tests

This includes a pending test "should send no referer when visiting a
second page", which does not pass on Rack::Test right now.
This commit is contained in:
Jo Liss 2012-01-10 18:03:48 +01:00
parent 617f975a6d
commit 7b5682e272
2 changed files with 29 additions and 5 deletions

View File

@ -297,9 +297,33 @@ shared_examples_for "driver with infinite redirect detection" do
end
shared_examples_for "driver with referer support" do
before :each do
@driver.reset!
end
it "should send no referer when visiting a page" do
@driver.visit '/get_referer'
@driver.body.should include 'No referer'
end
it "should send no referer when visiting a second page" do
if @driver.is_a? Capybara::RackTest::Driver
pending 'Rack::Test sends referer on subsequent visit'
end
@driver.visit '/get_referer'
@driver.visit '/get_referer'
@driver.body.should include 'No referer'
end
it "should send a referer when following a link" do
@driver.visit '/referer_base'
@driver.find('//a[@href="/get_referer"]').first.click
@driver.body.should include '/referer_base'
end
it "should preserve the original referer URL when following a redirect" do
@driver.visit('/referer_base')
@driver.find('//a[@href="redirect_and_keep_referer"]').first.click
@driver.body.should include('referer_base')
@driver.find('//a[@href="/redirect_to_get_referer"]').first.click
@driver.body.should include('/referer_base')
end
end

View File

@ -25,15 +25,15 @@ class TestApp < Sinatra::Base
end
get '/referer_base' do
'Referer base: <a href="redirect_and_keep_referer">Link that will redirect</a>'
'<a href="/get_referer">direct link</a>; <a href="/redirect_to_get_referer">link via redirect</a>'
end
get '/redirect_and_keep_referer' do
get '/redirect_to_get_referer' do
redirect '/get_referer'
end
get '/get_referer' do
'Got referer: ' + request.referer
request.referer.nil? ? "No referer" : "Got referer: #{request.referer}"
end
get '/host' do