frameworks-capybara 0.2.22 → 0.2.23

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -4,4 +4,6 @@ platforms :jruby do
4
4
  gem "jruby-openssl"
5
5
  end
6
6
 
7
+ gem "rspec-mocks"
8
+
7
9
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- frameworks-capybara (0.2.22)
4
+ frameworks-capybara (0.2.23)
5
5
  capybara (>= 1.0.0)
6
6
  capybara-celerity
7
7
  capybara-mechanize (>= 0.3.0)
@@ -96,3 +96,4 @@ DEPENDENCIES
96
96
  jruby-openssl
97
97
  rake
98
98
  rspec (>= 1.0.0)
99
+ rspec-mocks
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' to pick up new version in Gemfile
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
- @agent.send(method, url, *args)
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
@@ -1,3 +1,3 @@
1
1
  module FrameworksCapybara
2
- VERSION = '0.2.22'
2
+ VERSION = '0.2.23'
3
3
  end
@@ -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
@@ -13,4 +13,5 @@ Cucumber::RbSupport::RbLanguage.new(Cucumber::Runtime.new) #Need to load Cucumbe
13
13
 
14
14
  require 'frameworks/capybara'
15
15
  require 'frameworks/cucumber'
16
+ require 'monkey-patches/capybara-mechanize-patches'
16
17
  require 'unit_test_monkeypatches.rb'
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
- prerelease: false
4
+ hash: 57
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 2
8
- - 22
9
- version: 0.2.22
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-04 00:00:00 +00:00
18
- default_executable:
18
+ date: 2013-03-13 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- type: :runtime
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
- prerelease: false
123
+ type: :runtime
110
124
  - !ruby/object:Gem::Dependency
111
- type: :development
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
- prerelease: false
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.3.6
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