From aae2bcb02b88ba712a57428acd138218892cdaf8 Mon Sep 17 00:00:00 2001 From: Dmitry Vorotilin Date: Mon, 22 Apr 2013 11:21:03 +0400 Subject: [PATCH] Can set cookies for given domain --- README.md | 1 + lib/capybara/poltergeist/driver.rb | 11 ++++++----- spec/integration/driver_spec.rb | 12 ++++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c5dc0c4..85a5107 100644 --- a/README.md +++ b/README.md @@ -337,6 +337,7 @@ Include as much information as possible. For example: * Invalid selectors throw a useful error message * Tie us to the 0.4 version of faye-websocket since the 0.5 version contains breaking changes. +* Can set cookies for given domain ### 1.2.0 ### diff --git a/lib/capybara/poltergeist/driver.rb b/lib/capybara/poltergeist/driver.rb index cc71b7f..35c38bc 100644 --- a/lib/capybara/poltergeist/driver.rb +++ b/lib/capybara/poltergeist/driver.rb @@ -177,11 +177,12 @@ module Capybara::Poltergeist def set_cookie(name, value, options = {}) options[:name] ||= name options[:value] ||= value - - if @started - options[:domain] = URI.parse(browser.current_url).host - else - options[:domain] = Capybara.app_host || "127.0.0.1" + options[:domain] ||= begin + if @started + URI.parse(browser.current_url).host + else + Capybara.app_host || "127.0.0.1" + end end browser.set_cookie(options) diff --git a/spec/integration/driver_spec.rb b/spec/integration/driver_spec.rb index c8251a5..dea31e6 100644 --- a/spec/integration/driver_spec.rb +++ b/spec/integration/driver_spec.rb @@ -406,6 +406,18 @@ module Capybara::Poltergeist @driver.cookies['foo'].expires.should == time end + it 'can set cookies for given domain' do + port = @session.server.port + @driver.set_cookie 'capybara', '127.0.0.1' + @driver.set_cookie 'capybara', 'localhost', :domain => 'localhost' + + @session.visit("http://localhost:#{port}/poltergeist/get_cookie") + @driver.body.should include('localhost') + + @session.visit("http://127.0.0.1:#{port}/poltergeist/get_cookie") + @driver.body.should include('127.0.0.1') + end + it 'can enable and disable cookies' do @driver.cookies_enabled = false @session.visit('/set_cookie')