show_me_the_cookies 2.2.0 → 2.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjBmNjdjN2RkZTg1MTQyNDAyOTc0MTI5NDVkZTc2NDJlNWQ5ZWZmOA==
5
+ data.tar.gz: !binary |-
6
+ OTk4YTFiNDQxMTAxZGViODMzYWQzZDZlZWNkZTUzNTc2N2M3ZDQzZA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ OTRiNDEwOGEwMzZkMjBhZThlNTkwYzA1NDgwMzhhMWQ3YmIzZGU2MjM2YjA2
10
+ YTIxNDNjYWM0ODEyM2FmZTc1YWU1Y2QyZmIzMzZjMzViNGFjNjIzNWE1NmE5
11
+ ZTlhYmZkMGU4MDA2NTFlZDk5NGM5YzVjNmM2OTI0OTA4MDExMDE=
12
+ data.tar.gz: !binary |-
13
+ MWVkNmJjMzY2NjExYjVhYWNhOTQ5M2U2MTQ1NjQ2Yzk5ZjJlMzEzNjE3ZmE1
14
+ NjViMzNhNThmMjBmZmVlMTMwMjBjMWE5NjNkZmJiNDg3N2E0MWM4ZmQ3NWVk
15
+ ZTliZjUyMjQwNjZmOTkxMmZjM2MxOWE0MjE5YjM1ZWFhYzkxZjA=
data/README.md CHANGED
@@ -117,23 +117,19 @@ which indicates how to use the selenium adapter with a custom selenium testing p
117
117
 
118
118
  ## Contributing
119
119
 
120
- If you find this useful some ways to say thanks are reviewing the code and/or kind words or other feedback by Github message.
121
120
  Bugs should be raised in the [issue tracker](https://github.com/nruth/show_me_the_cookies/issues).
122
121
 
123
122
  Code contributions should be sent as Github pull requests, or by messaging [me](https://github.com/nruth) with a link
124
123
  to your repository branch. Please run the tests, and add new ones.
125
124
 
126
- New drivers are unlikely to be accepted at this stage. You can instead add them to your application's test setup.
127
- If you come up with an interesting new driver/adapter mail me with a link to a repository or gist and I'll link to it here.
128
- Hopefully the API shared-spec will come in useful when working on your own driver.
129
-
125
+ New drivers will be selectively accepted. Be sure that the api spec passes. If you prefer to keep the driver in your own repository send me the address and I'll add a link in the docs.
130
126
 
131
127
  ## History, Credits, and Acknowledgements
132
128
 
133
129
  [Contributors](https://github.com/nruth/show_me_the_cookies/contributors)
134
130
 
135
131
  Original development took place when testing Devise 0.1's "Remember me" functionality under rails 2.3.x with capybara rack-test and/or selenium.
136
- Initial release as a gist [here](https://gist.github.com/484787), early development sponsored by [Medify](http://www.medify.co.uk).
132
+ Initial release as a gist [here](https://gist.github.com/484787). Development sponsored by [Medify](http://www.medify.co.uk).
137
133
 
138
134
  Contributions outside of github have been made by:
139
135
 
@@ -2,11 +2,12 @@ module ShowMeTheCookies
2
2
  require 'show_me_the_cookies/adapters/rack_test'
3
3
  require 'show_me_the_cookies/adapters/poltergeist'
4
4
  require 'show_me_the_cookies/adapters/selenium'
5
+ require 'show_me_the_cookies/adapters/webkit'
5
6
 
6
7
  @adapters = {}
7
8
  class << self
8
9
  attr_reader :adapters
9
-
10
+
10
11
  # Register your own capybara-driver cookie adapter.
11
12
  # Use the same name as the one Capybara does to identify that driver.
12
13
  # Implement the interface of spec/shared_examples_for_api, as seen in lib/show_me_the_cookies/drivers
@@ -19,12 +20,13 @@ module ShowMeTheCookies
19
20
  register_adapter(:selenium, ShowMeTheCookies::Selenium)
20
21
  register_adapter(:rack_test, ShowMeTheCookies::RackTest)
21
22
  register_adapter(:poltergeist, ShowMeTheCookies::Poltergeist)
23
+ register_adapter(:webkit, ShowMeTheCookies::Webkit)
22
24
 
23
25
  # puts a string summary of the cookie
24
26
  def show_me_the_cookie(cookie_name)
25
27
  puts "#{cookie_name}: #{get_me_the_cookie(cookie_name).inspect}"
26
28
  end
27
-
29
+
28
30
  # returns a hash of the cookie
29
31
  # form: {:name, :domain, :value, :expires, :path}
30
32
  def get_me_the_cookie(cookie_name)
@@ -35,7 +37,7 @@ module ShowMeTheCookies
35
37
  def show_me_the_cookies
36
38
  puts "Cookies: #{get_me_the_cookies.inspect}"
37
39
  end
38
-
40
+
39
41
  # returns an array of cookie hashes
40
42
  # form: [{:name, :domain, :value, :expires, :path}]
41
43
  def get_me_the_cookies
@@ -52,11 +54,12 @@ module ShowMeTheCookies
52
54
  current_driver_adapter.expire_cookies
53
55
  end
54
56
 
55
- def create_cookie(name, value)
56
- current_driver_adapter.create_cookie(name, value)
57
+ def create_cookie(name, value)
58
+ current_driver_adapter.create_cookie(name, value)
57
59
  end
58
60
 
59
61
  private
62
+
60
63
  def current_driver_adapter
61
64
  adapter = ShowMeTheCookies.adapters[Capybara.current_driver]
62
65
  if adapter.nil?
@@ -1,7 +1,7 @@
1
1
  class ShowMeTheCookies::Poltergeist
2
2
  def initialize(driver)
3
3
  @browser = driver.browser
4
- @driver = driver
4
+ @driver = driver
5
5
  end
6
6
 
7
7
  def get_me_the_cookie(name)
@@ -23,11 +23,11 @@ class ShowMeTheCookies::Poltergeist
23
23
  @browser.remove_cookie(name.to_s)
24
24
  end
25
25
 
26
- def create_cookie(name, value)
27
- @driver.set_cookie(name, value)
26
+ def create_cookie(name, value)
27
+ @driver.set_cookie(name, value)
28
28
  end
29
29
 
30
- private
30
+ private
31
31
 
32
32
  def cookies_hash
33
33
  @browser.cookies
@@ -26,9 +26,9 @@ class ShowMeTheCookies::RackTest
26
26
  end
27
27
  end
28
28
 
29
- def create_cookie(name, value)
29
+ def create_cookie(name, value)
30
30
  cookie_jar[name] = value
31
- end
31
+ end
32
32
 
33
33
  private
34
34
  def cookie_jar
@@ -22,22 +22,23 @@ class ShowMeTheCookies::Selenium
22
22
  @browser.manage.delete_cookie(cookie_name)
23
23
  end
24
24
 
25
- def create_cookie(cookie_name, cookie_value)
25
+ def create_cookie(cookie_name, cookie_value)
26
26
  unless is_on_the_page?
27
27
  raise ShowMeTheCookies::Selenium::SiteNotVisitedError.new(
28
28
  "Can't set a cookie on about:blank. Visit a url in your app first."
29
29
  )
30
30
  end
31
- @browser.manage.add_cookie(name: cookie_name, value: cookie_value)
31
+ @browser.manage.add_cookie(name: cookie_name, value: cookie_value)
32
32
  end
33
33
 
34
- :private
34
+ private
35
35
 
36
36
  def is_on_the_page?
37
37
  current_url = @browser.current_url
38
38
  current_url && current_url != "" && current_url != "about:blank"
39
39
  end
40
40
 
41
+
41
42
  end
42
43
 
43
44
  class ShowMeTheCookies::Selenium::SiteNotVisitedError < StandardError
@@ -0,0 +1,56 @@
1
+ class ShowMeTheCookies::Webkit
2
+ def initialize(driver)
3
+ @browser = driver.browser
4
+ @driver = driver
5
+ end
6
+
7
+ def get_me_the_cookie(name)
8
+ cookie = cookie_jar.find(name)
9
+ translate(cookie) unless cookie.nil?
10
+ end
11
+
12
+ def get_me_the_cookies
13
+ cookies.each.map(&method(:translate))
14
+ end
15
+
16
+ def expire_cookies
17
+ cookies.each do |cookie|
18
+ delete_cookie(cookie.name) if cookie.expires.nil?
19
+ end
20
+ end
21
+
22
+ # Since QTWebkit doesn't seem to offer deletion, clearing all and re-setting the rest seems to be it
23
+ def delete_cookie(name)
24
+ old_cookies = cookies
25
+ @browser.clear_cookies
26
+ old_cookies.each do |cookie|
27
+ @browser.set_cookie(cookie) unless cookie.name == name.to_s
28
+ end
29
+ end
30
+
31
+ def create_cookie(name, value)
32
+ @browser.set_cookie("#{name}=#{value}; domain=127.0.0.1")
33
+ end
34
+
35
+ private
36
+
37
+ # see https://github.com/thoughtbot/capybara-webkit/blob/master/lib/capybara/webkit/cookie_jar.rb
38
+ def cookie_jar
39
+ @driver.cookies
40
+ end
41
+
42
+ def cookies
43
+ @browser.get_cookies.map { |c| WEBrick::Cookie.parse_set_cookie(c) }
44
+ end
45
+
46
+ def translate(cookie)
47
+ {
48
+ :name => cookie.name,
49
+ :domain => cookie.domain,
50
+ :value => cookie.value,
51
+ :expires => (cookie.expires rescue nil),
52
+ :path => cookie.path,
53
+ :secure => cookie.secure
54
+ }
55
+ end
56
+ end
@@ -1,3 +1,3 @@
1
1
  module ShowMeTheCookies
2
- VERSION = "2.2.0"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -23,4 +23,5 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency 'sinatra' # for testing
24
24
  s.add_development_dependency 'poltergeist' # for testing
25
25
  s.add_development_dependency 'selenium-webdriver' # removed from capy2 deps
26
+ s.add_development_dependency 'capybara-webkit' # for testing
26
27
  end
@@ -16,8 +16,6 @@ describe "Selenium Webdriver", :type => :feature do
16
16
  it_behaves_like "the API"
17
17
 
18
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
- )
19
+ expect {create_cookie('choc', 'milk')}.to raise_error(ShowMeTheCookies::Selenium::SiteNotVisitedError)
22
20
  end
23
- end
21
+ end
@@ -10,9 +10,7 @@ describe "RackTest when rack-test adapter uninstalled", :type => :feature do
10
10
 
11
11
  describe "error messages" do
12
12
  it "should tell me I'm unsupported" do
13
- lambda do
14
- get_me_the_cookies
15
- end.should raise_error(ShowMeTheCookies::UnknownDriverError)
13
+ expect{get_me_the_cookies}.to raise_error(ShowMeTheCookies::UnknownDriverError)
16
14
  end
17
15
  end
18
16
  end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+ require 'shared_examples_for_api'
3
+ require 'capybara-webkit'
4
+
5
+ describe "Webkit", :type => :feature do
6
+ before(:each) do
7
+ Capybara.current_driver = :webkit
8
+ end
9
+
10
+ describe "the testing rig" do
11
+ it "should load the sinatra app" do
12
+ visit '/'
13
+ page.should have_content("Cookie setter ready")
14
+ end
15
+ end
16
+
17
+ it_behaves_like "the API"
18
+ end
@@ -1,4 +1,5 @@
1
1
  shared_examples "the API" do
2
+
2
3
  def cookies_should_contain(key, value)
3
4
  key_present = get_me_the_cookies.any? {|c| c[:name] == key}
4
5
  value_present = get_me_the_cookies.any? {|c| c[:value] == value}
@@ -76,24 +77,24 @@ shared_examples "the API" do
76
77
  end
77
78
  end
78
79
 
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)
80
+ describe "create_cookie(cookie_name, cookie_value)" do
81
+ it "creates a cookie" do
82
+ # need to first hit a page to set a cookie (selenium)
82
83
  visit('/')
83
- create_cookie('choc', 'milk')
84
+ create_cookie('choc', 'milk')
84
85
  visit '/get/choc'
85
- cookies_should_contain('choc', 'milk')
86
- page.should have_content("Got cookie choc=milk")
86
+ cookies_should_contain('choc', 'milk')
87
+ page.should have_content("Got cookie choc=milk")
87
88
  end
88
89
 
89
90
  it "accepts symbols" do
90
- visit('/')
91
- create_cookie(:choc, :milk)
91
+ visit('/')
92
+ create_cookie(:choc, :milk)
92
93
  visit '/get/choc'
93
- cookies_should_contain('choc', 'milk')
94
- page.should have_content("Got cookie choc=milk")
95
- end
96
- end
94
+ cookies_should_contain('choc', 'milk')
95
+ page.should have_content("Got cookie choc=milk")
96
+ end
97
+ end
97
98
 
98
99
  describe "expire_cookies" do
99
100
  it "removes cookies without expiry times set" do
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: show_me_the_cookies
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
5
- prerelease:
4
+ version: 2.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Nicholas Rutherford
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-01-19 00:00:00.000000000 Z
11
+ date: 2014-06-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: capybara
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: sinatra
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - ! '>='
76
67
  - !ruby/object:Gem::Version
@@ -78,7 +69,6 @@ dependencies:
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: poltergeist
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - ! '>='
84
74
  - !ruby/object:Gem::Version
@@ -86,7 +76,6 @@ dependencies:
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - ! '>='
92
81
  - !ruby/object:Gem::Version
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: selenium-webdriver
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,20 @@ dependencies:
102
90
  type: :development
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: capybara-webkit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
106
107
  requirements:
107
108
  - - ! '>='
108
109
  - !ruby/object:Gem::Version
@@ -122,6 +123,7 @@ files:
122
123
  - lib/show_me_the_cookies/adapters/poltergeist.rb
123
124
  - lib/show_me_the_cookies/adapters/rack_test.rb
124
125
  - lib/show_me_the_cookies/adapters/selenium.rb
126
+ - lib/show_me_the_cookies/adapters/webkit.rb
125
127
  - lib/show_me_the_cookies/version.rb
126
128
  - show_me_the_cookies.gemspec
127
129
  - spec/app/set_cookie.rb
@@ -129,38 +131,32 @@ files:
129
131
  - spec/drivers/rack-test_spec.rb
130
132
  - spec/drivers/selenium_spec.rb
131
133
  - spec/drivers/unknown_driver_spec.rb
134
+ - spec/drivers/webkit_spec.rb
132
135
  - spec/shared_examples_for_api.rb
133
136
  - spec/spec_helper.rb
134
137
  homepage: https://github.com/nruth/show_me_the_cookies
135
138
  licenses:
136
139
  - MIT
140
+ metadata: {}
137
141
  post_install_message:
138
142
  rdoc_options: []
139
143
  require_paths:
140
144
  - lib
141
145
  required_ruby_version: !ruby/object:Gem::Requirement
142
- none: false
143
146
  requirements:
144
147
  - - ! '>='
145
148
  - !ruby/object:Gem::Version
146
149
  version: '0'
147
- segments:
148
- - 0
149
- hash: -4144739968236419711
150
150
  required_rubygems_version: !ruby/object:Gem::Requirement
151
- none: false
152
151
  requirements:
153
152
  - - ! '>='
154
153
  - !ruby/object:Gem::Version
155
154
  version: '0'
156
- segments:
157
- - 0
158
- hash: -4144739968236419711
159
155
  requirements: []
160
156
  rubyforge_project:
161
- rubygems_version: 1.8.23
157
+ rubygems_version: 2.3.0
162
158
  signing_key:
163
- specification_version: 3
159
+ specification_version: 4
164
160
  summary: Cookie manipulation for Capybara drivers
165
161
  test_files:
166
162
  - spec/app/set_cookie.rb
@@ -168,5 +164,6 @@ test_files:
168
164
  - spec/drivers/rack-test_spec.rb
169
165
  - spec/drivers/selenium_spec.rb
170
166
  - spec/drivers/unknown_driver_spec.rb
167
+ - spec/drivers/webkit_spec.rb
171
168
  - spec/shared_examples_for_api.rb
172
169
  - spec/spec_helper.rb