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 +15 -0
- data/README.md +2 -6
- data/lib/show_me_the_cookies.rb +8 -5
- data/lib/show_me_the_cookies/adapters/poltergeist.rb +4 -4
- data/lib/show_me_the_cookies/adapters/rack_test.rb +2 -2
- data/lib/show_me_the_cookies/adapters/selenium.rb +4 -3
- data/lib/show_me_the_cookies/adapters/webkit.rb +56 -0
- data/lib/show_me_the_cookies/version.rb +1 -1
- data/show_me_the_cookies.gemspec +1 -0
- data/spec/drivers/selenium_spec.rb +2 -4
- data/spec/drivers/unknown_driver_spec.rb +1 -3
- data/spec/drivers/webkit_spec.rb +18 -0
- data/spec/shared_examples_for_api.rb +13 -12
- metadata +22 -25
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
|
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)
|
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
|
|
data/lib/show_me_the_cookies.rb
CHANGED
@@ -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
|
-
|
56
|
-
|
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
|
-
|
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
|
-
|
27
|
-
|
26
|
+
def create_cookie(name, value)
|
27
|
+
@driver.set_cookie(name, value)
|
28
28
|
end
|
29
29
|
|
30
|
-
|
30
|
+
private
|
31
31
|
|
32
32
|
def cookies_hash
|
33
33
|
@browser.cookies
|
@@ -22,22 +22,23 @@ class ShowMeTheCookies::Selenium
|
|
22
22
|
@browser.manage.delete_cookie(cookie_name)
|
23
23
|
end
|
24
24
|
|
25
|
-
|
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
|
-
|
31
|
+
@browser.manage.add_cookie(name: cookie_name, value: cookie_value)
|
32
32
|
end
|
33
33
|
|
34
|
-
|
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
|
data/show_me_the_cookies.gemspec
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
-
|
80
|
-
|
81
|
-
|
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
|
-
|
84
|
+
create_cookie('choc', 'milk')
|
84
85
|
visit '/get/choc'
|
85
|
-
|
86
|
-
|
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
|
-
|
91
|
-
|
91
|
+
visit('/')
|
92
|
+
create_cookie(:choc, :milk)
|
92
93
|
visit '/get/choc'
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
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.
|
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-
|
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
|
-
|
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:
|
157
|
+
rubygems_version: 2.3.0
|
162
158
|
signing_key:
|
163
|
-
specification_version:
|
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
|