frameworks-capybara 0.2.22 → 0.2.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +8 -5
- data/Gemfile +2 -0
- data/Gemfile.lock +2 -1
- data/README.rdoc +3 -1
- data/lib/monkey-patches/capybara-mechanize-patches.rb +14 -1
- data/lib/version.rb +1 -1
- data/spec/capybara_mechanize_patches_spec.rb +124 -0
- data/spec/spec_helper.rb +1 -0
- metadata +56 -34
data/CHANGES
CHANGED
@@ -1,13 +1,16 @@
|
|
1
|
+
0.2.23
|
2
|
+
Updated capybara-mechanize patch to send referer header.
|
3
|
+
|
1
4
|
0.2.22
|
2
|
-
Update Centos6 sandbox DNS to sandbox.bbc.co.uk
|
5
|
+
Update Centos6 sandbox DNS to sandbox.bbc.co.uk.
|
3
6
|
|
4
7
|
0.2.21
|
5
|
-
Add support for Centos6 sandbox
|
6
|
-
Update Gemfile.lock to latest gem versions
|
8
|
+
Add support for Centos6 sandbox.
|
9
|
+
Update Gemfile.lock to latest gem versions.
|
7
10
|
|
8
11
|
0.2.20
|
9
|
-
validate_online() now takes optional hash of parameters to pass to MarkupValidator
|
12
|
+
validate_online() now takes optional hash of parameters to pass to MarkupValidator.
|
10
13
|
Updated proxy handling to pick up port and to work without protocol or port.
|
11
14
|
|
12
15
|
0.2.19
|
13
|
-
Present production release
|
16
|
+
Present production release.
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -80,8 +80,10 @@ Finally this gem contains some useful monkey-patches to core libraries e.g. Capy
|
|
80
80
|
|
81
81
|
* Run tests - 'rake'
|
82
82
|
* Bump version - manually update file in lib/version.rb
|
83
|
-
* Run 'bundle install
|
83
|
+
* Run 'bundle install --binstubs --path vendor/to' bundle pick up new version in Gemfile
|
84
|
+
* Commit 'Gemfile.lock' changes
|
84
85
|
* Release - 'rake release'
|
86
|
+
* Push new tag to Github 'git push --tags'
|
85
87
|
|
86
88
|
== Contributing to frameworks-capybara
|
87
89
|
|
@@ -2,6 +2,7 @@ require 'capybara/mechanize/cucumber'
|
|
2
2
|
require 'uri'
|
3
3
|
class Capybara::Mechanize::Browser
|
4
4
|
#patch to remove catching all Mechanize exceptions (which are nice and specific) and throwing a useless RuntimeError
|
5
|
+
#patch to add Referer (Mechanize@0.3.0 won't add Referer for urls starting with http(s)://.)
|
5
6
|
def process_remote_request(method, url, attributes, headers)
|
6
7
|
if remote?(url)
|
7
8
|
uri = URI.parse(url)
|
@@ -9,11 +10,23 @@ class Capybara::Mechanize::Browser
|
|
9
10
|
@last_remote_uri = uri
|
10
11
|
url = uri.to_s
|
11
12
|
|
13
|
+
referer = nil
|
14
|
+
referer_candidate = current_url
|
15
|
+
unless referer_candidate.empty? or (referer_candidate.start_with?('https://') and url.start_with?('http://'))
|
16
|
+
referer = referer_candidate
|
17
|
+
end
|
18
|
+
|
12
19
|
reset_cache!
|
13
20
|
args = []
|
14
21
|
args << attributes unless attributes.empty?
|
15
22
|
args << headers unless headers.empty?
|
16
|
-
|
23
|
+
|
24
|
+
if method == :get
|
25
|
+
agent.send(method, url, attributes, referer, headers)
|
26
|
+
else
|
27
|
+
agent.send(method, url, *args)
|
28
|
+
end
|
29
|
+
|
17
30
|
@last_request_remote = true
|
18
31
|
end
|
19
32
|
end
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,124 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rspec/mocks/mock'
|
3
|
+
require 'uri'
|
4
|
+
|
5
|
+
describe Capybara::Mechanize::Browser do
|
6
|
+
|
7
|
+
RSpec::Mocks::setup(self)
|
8
|
+
|
9
|
+
it "shouldn't send referer if unknown" do
|
10
|
+
|
11
|
+
agent = double()
|
12
|
+
agent.stub('get' => true)
|
13
|
+
agent.should_receive('get').with(
|
14
|
+
"http://example.bbc.co.uk/test",
|
15
|
+
{},
|
16
|
+
nil,
|
17
|
+
{}
|
18
|
+
)
|
19
|
+
|
20
|
+
driver = double("Capybara::Mechanize::Driver")
|
21
|
+
|
22
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
23
|
+
browser.stub('current_url' => "")
|
24
|
+
browser.stub('agent' => agent)
|
25
|
+
|
26
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should not change behaviour for POST requests" do
|
30
|
+
|
31
|
+
agent = double()
|
32
|
+
agent.stub('post' => true)
|
33
|
+
agent.should_receive('post').with("http://example.bbc.co.uk/test")
|
34
|
+
|
35
|
+
driver = double("Capybara::Mechanize::Driver")
|
36
|
+
|
37
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
38
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
39
|
+
browser.stub('agent' => agent)
|
40
|
+
|
41
|
+
browser.process_remote_request(:post, 'http://example.bbc.co.uk/test', {}, {})
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not send referer for requests from HTTPs to HTTP" do
|
45
|
+
|
46
|
+
agent = double()
|
47
|
+
agent.stub('get' => true)
|
48
|
+
agent.should_receive('get').with(
|
49
|
+
"http://example.bbc.co.uk/test",
|
50
|
+
{},
|
51
|
+
nil,
|
52
|
+
{}
|
53
|
+
)
|
54
|
+
|
55
|
+
driver = double("Capybara::Mechanize::Driver")
|
56
|
+
|
57
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
58
|
+
browser.stub('current_url' => "https://example.bbc.co.uk/blah")
|
59
|
+
browser.stub('agent' => agent)
|
60
|
+
|
61
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should send referer for requests from HTTP to HTTPs" do
|
65
|
+
|
66
|
+
agent = double()
|
67
|
+
agent.stub('get' => true)
|
68
|
+
agent.should_receive('get').with(
|
69
|
+
"https://example.bbc.co.uk/test",
|
70
|
+
{},
|
71
|
+
"http://example.bbc.co.uk/blah",
|
72
|
+
{}
|
73
|
+
)
|
74
|
+
|
75
|
+
driver = double("Capybara::Mechanize::Driver")
|
76
|
+
|
77
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
78
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
79
|
+
browser.stub('agent' => agent)
|
80
|
+
|
81
|
+
browser.process_remote_request(:get, 'https://example.bbc.co.uk/test', {}, {})
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should send referer for requests from HTTP to HTTP" do
|
85
|
+
|
86
|
+
agent = double()
|
87
|
+
agent.stub('get' => true)
|
88
|
+
agent.should_receive('get').with(
|
89
|
+
"http://example.bbc.co.uk/test",
|
90
|
+
{},
|
91
|
+
"http://example.bbc.co.uk/blah",
|
92
|
+
{}
|
93
|
+
)
|
94
|
+
|
95
|
+
driver = double("Capybara::Mechanize::Driver")
|
96
|
+
|
97
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
98
|
+
browser.stub('current_url' => "http://example.bbc.co.uk/blah")
|
99
|
+
browser.stub('agent' => agent)
|
100
|
+
|
101
|
+
browser.process_remote_request(:get, 'http://example.bbc.co.uk/test', {}, {})
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should send referer for requests from HTTPs to HTTPs" do
|
105
|
+
|
106
|
+
agent = double()
|
107
|
+
agent.stub('get' => true)
|
108
|
+
agent.should_receive('get').with(
|
109
|
+
"https://example.bbc.co.uk/test",
|
110
|
+
{},
|
111
|
+
"https://example.bbc.co.uk/blah",
|
112
|
+
{}
|
113
|
+
)
|
114
|
+
|
115
|
+
driver = double("Capybara::Mechanize::Driver")
|
116
|
+
|
117
|
+
browser = Capybara::Mechanize::Browser.new(driver)
|
118
|
+
browser.stub('current_url' => "https://example.bbc.co.uk/blah")
|
119
|
+
browser.stub('agent' => agent)
|
120
|
+
|
121
|
+
browser.process_remote_request(:get, 'https://example.bbc.co.uk/test', {}, {})
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frameworks-capybara
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 57
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
9
|
+
- 23
|
10
|
+
version: 0.2.23
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- matt robbins
|
@@ -14,125 +15,142 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2013-03-
|
18
|
-
default_executable:
|
18
|
+
date: 2013-03-13 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
|
-
|
21
|
+
prerelease: false
|
22
|
+
name: capybara
|
22
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
23
25
|
requirements:
|
24
26
|
- - ">="
|
25
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 23
|
26
29
|
segments:
|
27
30
|
- 1
|
28
31
|
- 0
|
29
32
|
- 0
|
30
33
|
version: 1.0.0
|
31
|
-
name: capybara
|
32
34
|
requirement: *id001
|
33
|
-
prerelease: false
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
35
|
type: :runtime
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
prerelease: false
|
38
|
+
name: capybara-mechanize
|
36
39
|
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
37
41
|
requirements:
|
38
42
|
- - ">="
|
39
43
|
- !ruby/object:Gem::Version
|
44
|
+
hash: 19
|
40
45
|
segments:
|
41
46
|
- 0
|
42
47
|
- 3
|
43
48
|
- 0
|
44
49
|
version: 0.3.0
|
45
|
-
name: capybara-mechanize
|
46
50
|
requirement: *id002
|
47
|
-
prerelease: false
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
51
|
type: :runtime
|
52
|
+
- !ruby/object:Gem::Dependency
|
53
|
+
prerelease: false
|
54
|
+
name: json
|
50
55
|
version_requirements: &id003 !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
51
57
|
requirements:
|
52
58
|
- - ">="
|
53
59
|
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
54
61
|
segments:
|
55
62
|
- 0
|
56
63
|
version: "0"
|
57
|
-
name: json
|
58
64
|
requirement: *id003
|
59
|
-
prerelease: false
|
60
|
-
- !ruby/object:Gem::Dependency
|
61
65
|
type: :runtime
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
prerelease: false
|
68
|
+
name: headless
|
62
69
|
version_requirements: &id004 !ruby/object:Gem::Requirement
|
70
|
+
none: false
|
63
71
|
requirements:
|
64
72
|
- - ">="
|
65
73
|
- !ruby/object:Gem::Version
|
74
|
+
hash: 3
|
66
75
|
segments:
|
67
76
|
- 0
|
68
77
|
version: "0"
|
69
|
-
name: headless
|
70
78
|
requirement: *id004
|
71
|
-
prerelease: false
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
79
|
type: :runtime
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
prerelease: false
|
82
|
+
name: capybara-celerity
|
74
83
|
version_requirements: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
75
85
|
requirements:
|
76
86
|
- - ">="
|
77
87
|
- !ruby/object:Gem::Version
|
88
|
+
hash: 3
|
78
89
|
segments:
|
79
90
|
- 0
|
80
91
|
version: "0"
|
81
|
-
name: capybara-celerity
|
82
92
|
requirement: *id005
|
83
|
-
prerelease: false
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
93
|
type: :runtime
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
prerelease: false
|
96
|
+
name: w3c_validators
|
86
97
|
version_requirements: &id006 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
87
99
|
requirements:
|
88
100
|
- - ">="
|
89
101
|
- !ruby/object:Gem::Version
|
102
|
+
hash: 3
|
90
103
|
segments:
|
91
104
|
- 0
|
92
105
|
version: "0"
|
93
|
-
name: w3c_validators
|
94
106
|
requirement: *id006
|
95
|
-
prerelease: false
|
96
|
-
- !ruby/object:Gem::Dependency
|
97
107
|
type: :runtime
|
108
|
+
- !ruby/object:Gem::Dependency
|
109
|
+
prerelease: false
|
110
|
+
name: cucumber
|
98
111
|
version_requirements: &id007 !ruby/object:Gem::Requirement
|
112
|
+
none: false
|
99
113
|
requirements:
|
100
114
|
- - ">="
|
101
115
|
- !ruby/object:Gem::Version
|
116
|
+
hash: 61
|
102
117
|
segments:
|
103
118
|
- 0
|
104
119
|
- 10
|
105
120
|
- 5
|
106
121
|
version: 0.10.5
|
107
|
-
name: cucumber
|
108
122
|
requirement: *id007
|
109
|
-
|
123
|
+
type: :runtime
|
110
124
|
- !ruby/object:Gem::Dependency
|
111
|
-
|
125
|
+
prerelease: false
|
126
|
+
name: rake
|
112
127
|
version_requirements: &id008 !ruby/object:Gem::Requirement
|
128
|
+
none: false
|
113
129
|
requirements:
|
114
130
|
- - ">="
|
115
131
|
- !ruby/object:Gem::Version
|
132
|
+
hash: 3
|
116
133
|
segments:
|
117
134
|
- 0
|
118
135
|
version: "0"
|
119
|
-
name: rake
|
120
136
|
requirement: *id008
|
121
|
-
prerelease: false
|
122
|
-
- !ruby/object:Gem::Dependency
|
123
137
|
type: :development
|
138
|
+
- !ruby/object:Gem::Dependency
|
139
|
+
prerelease: false
|
140
|
+
name: rspec
|
124
141
|
version_requirements: &id009 !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
125
143
|
requirements:
|
126
144
|
- - ">="
|
127
145
|
- !ruby/object:Gem::Version
|
146
|
+
hash: 23
|
128
147
|
segments:
|
129
148
|
- 1
|
130
149
|
- 0
|
131
150
|
- 0
|
132
151
|
version: 1.0.0
|
133
|
-
name: rspec
|
134
152
|
requirement: *id009
|
135
|
-
|
153
|
+
type: :development
|
136
154
|
description: Gem to ease the pain of managing capybara driver config and provide a home for common utils and patches
|
137
155
|
email:
|
138
156
|
- mcrobbins@gmail.com
|
@@ -166,13 +184,13 @@ files:
|
|
166
184
|
- lib/monkey-patches/webdriver-patches.rb
|
167
185
|
- lib/tasks/frameworks-tasks.rb
|
168
186
|
- lib/version.rb
|
187
|
+
- spec/capybara_mechanize_patches_spec.rb
|
169
188
|
- spec/frameworks_capybara_spec.rb
|
170
189
|
- spec/frameworks_cucumber_spec.rb
|
171
190
|
- spec/mock.default/prefs.js
|
172
191
|
- spec/profiles.ini
|
173
192
|
- spec/spec_helper.rb
|
174
193
|
- spec/unit_test_monkeypatches.rb
|
175
|
-
has_rdoc: true
|
176
194
|
homepage:
|
177
195
|
licenses: []
|
178
196
|
|
@@ -182,23 +200,27 @@ rdoc_options: []
|
|
182
200
|
require_paths:
|
183
201
|
- lib
|
184
202
|
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
+
none: false
|
185
204
|
requirements:
|
186
205
|
- - ">="
|
187
206
|
- !ruby/object:Gem::Version
|
207
|
+
hash: 3
|
188
208
|
segments:
|
189
209
|
- 0
|
190
210
|
version: "0"
|
191
211
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
|
+
none: false
|
192
213
|
requirements:
|
193
214
|
- - ">="
|
194
215
|
- !ruby/object:Gem::Version
|
216
|
+
hash: 3
|
195
217
|
segments:
|
196
218
|
- 0
|
197
219
|
version: "0"
|
198
220
|
requirements: []
|
199
221
|
|
200
222
|
rubyforge_project:
|
201
|
-
rubygems_version: 1.
|
223
|
+
rubygems_version: 1.8.24
|
202
224
|
signing_key:
|
203
225
|
specification_version: 3
|
204
226
|
summary: Gem to ease the pain of managing capybara driver config and provide a home for common utils and patches
|