show_me_the_cookies 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -10,3 +10,5 @@ bin/
10
10
  .rspec
11
11
  .rbenv-version
12
12
  .akephalos/
13
+ .idea
14
+ .ruby-version
@@ -1,6 +1,7 @@
1
1
  class ShowMeTheCookies::Poltergeist
2
2
  def initialize(driver)
3
3
  @browser = driver.browser
4
+ @driver = driver
4
5
  end
5
6
 
6
7
  def get_me_the_cookie(name)
@@ -22,6 +23,10 @@ class ShowMeTheCookies::Poltergeist
22
23
  @browser.remove_cookie(name.to_s)
23
24
  end
24
25
 
26
+ def create_cookie(name, value)
27
+ @driver.set_cookie(name, value)
28
+ end
29
+
25
30
  private
26
31
 
27
32
  def cookies_hash
@@ -26,6 +26,10 @@ class ShowMeTheCookies::RackTest
26
26
  end
27
27
  end
28
28
 
29
+ def create_cookie(name, value)
30
+ cookie_jar[name] = value
31
+ end
32
+
29
33
  private
30
34
  def cookie_jar
31
35
  @rack_test_driver.browser.current_session.instance_variable_get(:@rack_mock_session).cookie_jar
@@ -21,4 +21,24 @@ class ShowMeTheCookies::Selenium
21
21
  def delete_cookie(cookie_name)
22
22
  @browser.manage.delete_cookie(cookie_name)
23
23
  end
24
- end
24
+
25
+ def create_cookie(cookie_name, cookie_value)
26
+ unless is_on_the_page?
27
+ raise ShowMeTheCookies::Selenium::SiteNotVisitedError.new(
28
+ "Can't set a cookie on about:blank. Visit a url in your app first."
29
+ )
30
+ end
31
+ @browser.manage.add_cookie(name: cookie_name, value: cookie_value)
32
+ end
33
+
34
+ :private
35
+
36
+ def is_on_the_page?
37
+ current_url = @browser.current_url
38
+ current_url && current_url != "" && current_url != "about:blank"
39
+ end
40
+
41
+ end
42
+
43
+ class ShowMeTheCookies::Selenium::SiteNotVisitedError < StandardError
44
+ end
@@ -1,3 +1,3 @@
1
1
  module ShowMeTheCookies
2
- VERSION = "2.1.0"
2
+ VERSION = "2.2.0"
3
3
  end
@@ -52,6 +52,10 @@ module ShowMeTheCookies
52
52
  current_driver_adapter.expire_cookies
53
53
  end
54
54
 
55
+ def create_cookie(name, value)
56
+ current_driver_adapter.create_cookie(name, value)
57
+ end
58
+
55
59
  private
56
60
  def current_driver_adapter
57
61
  adapter = ShowMeTheCookies.adapters[Capybara.current_driver]
@@ -22,4 +22,5 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency 'rspec' # for testing
23
23
  s.add_development_dependency 'sinatra' # for testing
24
24
  s.add_development_dependency 'poltergeist' # for testing
25
+ s.add_development_dependency 'selenium-webdriver' # removed from capy2 deps
25
26
  end
@@ -9,6 +9,10 @@ get '/set/:key/:value' do
9
9
  "Setting #{params[:key]}=#{params[:value]}"
10
10
  end
11
11
 
12
+ get '/get/:key' do
13
+ "Got cookie #{params[:key]}=#{request.cookies[params[:key]]}"
14
+ end
15
+
12
16
  get '/delete/:key' do
13
17
  response.delete_cookie params[:key], :path => '/'
14
18
  "Deleting #{params[:key]}"
@@ -22,4 +26,4 @@ end
22
26
  get '/set_stale/:key/:value' do
23
27
  response.set_cookie params[:key], {:value => params[:value], :path => '/', :expires => Time.now}
24
28
  "Setting #{params[:key]}=#{params[:value]}"
25
- end
29
+ end
@@ -14,4 +14,10 @@ describe "Selenium Webdriver", :type => :feature do
14
14
  end
15
15
 
16
16
  it_behaves_like "the API"
17
+
18
+ it "raises an exception when writing a cookie before visiting the app" do
19
+ lambda {create_cookie('choc', 'milk')}.should raise_error(
20
+ ShowMeTheCookies::Selenium::SiteNotVisitedError
21
+ )
22
+ end
17
23
  end
@@ -76,6 +76,25 @@ shared_examples "the API" do
76
76
  end
77
77
  end
78
78
 
79
+ describe "create_cookie(cookie_name, cookie_value)" do
80
+ it "creates a cookie" do
81
+ # need to first hit a page to set a cookie (selenium)
82
+ visit('/')
83
+ create_cookie('choc', 'milk')
84
+ visit '/get/choc'
85
+ cookies_should_contain('choc', 'milk')
86
+ page.should have_content("Got cookie choc=milk")
87
+ end
88
+
89
+ it "accepts symbols" do
90
+ visit('/')
91
+ create_cookie(:choc, :milk)
92
+ visit '/get/choc'
93
+ cookies_should_contain('choc', 'milk')
94
+ page.should have_content("Got cookie choc=milk")
95
+ end
96
+ end
97
+
79
98
  describe "expire_cookies" do
80
99
  it "removes cookies without expiry times set" do
81
100
  visit '/set/choc/milk'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: show_me_the_cookies
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-10 00:00:00.000000000 Z
12
+ date: 2014-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capybara
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ! '>='
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: selenium-webdriver
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
94
110
  description: Cookie manipulation for Capybara drivers -- viewing, deleting, ...
95
111
  email:
96
112
  - nick.rutherford@gmail.com
@@ -130,7 +146,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
146
  version: '0'
131
147
  segments:
132
148
  - 0
133
- hash: 627706654299788979
149
+ hash: -4144739968236419711
134
150
  required_rubygems_version: !ruby/object:Gem::Requirement
135
151
  none: false
136
152
  requirements:
@@ -139,10 +155,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
155
  version: '0'
140
156
  segments:
141
157
  - 0
142
- hash: 627706654299788979
158
+ hash: -4144739968236419711
143
159
  requirements: []
144
160
  rubyforge_project:
145
- rubygems_version: 1.8.25
161
+ rubygems_version: 1.8.23
146
162
  signing_key:
147
163
  specification_version: 3
148
164
  summary: Cookie manipulation for Capybara drivers