puffing-billy 0.12.0 → 1.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 21be9f1a9d60c193c942e9d49e30ebfe44619fce
4
- data.tar.gz: f779ade84a243e2a03222c4ae0f8565cb4a22557
3
+ metadata.gz: 9dcfc87385c54e63251237553f7ceb2f71d072dc
4
+ data.tar.gz: e2eb85158a087358686d7501d86809768dd838cc
5
5
  SHA512:
6
- metadata.gz: 8045149493d475f523b513ee115ba52def7c353960ce47069002f0af42ca6bdaf5d55695d775660675657482607fd6230c221ae5c6dbde139825298fcf310ca1
7
- data.tar.gz: 21c72f430f8af471ecce4bad0aff8e796de883e57cfbf48bc4f48f24ca7ac30f0f7480e41b6f797cd9bfc624e6f337e09a1c84e44ca61991ead60f9daa481f3d
6
+ metadata.gz: 445dc2a1115c10d077561903dbcd58e418eb01c810542bf6c7d2256d1653afdf0ff0e41d0bd9e077f2d525999a2759b5e22f70ae7b04657720a5c0f69e685123
7
+ data.tar.gz: ce5f7ee19a3c7fdad6c60fbe6b8c5fd28b43c4219e4d039d93ae3b90c444d2285df27f447fb77eed61fa835b894de1ac247bdc65642d6222d2e4b2f31bd9eba9
@@ -15,7 +15,10 @@ before_script:
15
15
  - phantomjs --version
16
16
  - bundle --version
17
17
  rvm:
18
- - 1.9.3
19
18
  - 2.0.0
20
19
  - 2.1.0
20
+ - 2.2.0
21
+ - 2.3.0
22
+ - 2.4.0
21
23
  script: bundle exec rspec spec
24
+
@@ -1,3 +1,10 @@
1
+ v1.0.0, 2018-03-05
2
+ -------------------
3
+ * Add #unstub method, replace deprecated watir-webdriver with watir [#212](https://github.com/oesmith/puffing-billy/pull/212)
4
+ * Watir upgrade requires puffing-billy to drop support for ruby 1.9.3
5
+ * Prepend rspec puffing billy reset hook [#227](https://github.com/oesmith/puffing-billy/pull/227)
6
+ * Catch unhandled request handler errors [#228](https://github.com/oesmith/puffing-billy/pull/228)
7
+
1
8
  v0.12.0, 2018-02-07
2
9
  -------------------
3
10
  * Follow cache file symlinks [#220](https://github.com/oesmith/puffing-billy/pull/220)
data/README.md CHANGED
@@ -128,6 +128,17 @@ proxy.stub('http://example.com/api', :method => :options).and_return(
128
128
  Stubs are reset between tests. Any requests that are not stubbed will be
129
129
  proxied to the remote server.
130
130
 
131
+ If for any reason you'd need to reset stubs manually you can do it in two ways:
132
+
133
+ ```ruby
134
+ # reset a single stub
135
+ example_stub = proxy.stub('http://example.com/text/').and_return(:text => 'Foobar')
136
+ proxy.unstub example_stub
137
+
138
+ # reset all stubs
139
+ proxy.reset
140
+ ```
141
+
131
142
  ## Cucumber Usage
132
143
 
133
144
  An example feature:
@@ -1,5 +1,5 @@
1
1
  require 'billy'
2
- require 'watir-webdriver'
2
+ require 'watir'
3
3
 
4
4
  module Billy
5
5
  module Browsers
@@ -25,8 +25,9 @@ module Billy
25
25
  end
26
26
 
27
27
  def configure_phantomjs(args)
28
- args[:args] ||= []
29
- args[:args] += %W[--proxy=#{Billy.proxy.host}:#{Billy.proxy.port}]
28
+ args[:driver_opts] ||= {}
29
+ args[:driver_opts][:args] ||= []
30
+ args[:driver_opts][:args] += %W[--proxy=#{Billy.proxy.host}:#{Billy.proxy.port}]
30
31
  args
31
32
  end
32
33
 
@@ -5,7 +5,7 @@ module Billy
5
5
  extend Forwardable
6
6
  include Handler
7
7
 
8
- def_delegators :stub_handler, :stub
8
+ def_delegators :stub_handler, :stub, :unstub
9
9
 
10
10
  def handlers
11
11
  @handlers ||= { stubs: StubHandler.new,
@@ -23,6 +23,8 @@ module Billy
23
23
 
24
24
  body_msg = Billy.config.cache_request_body_methods.include?(method) ? " with body '#{body}'" : ''
25
25
  { error: "Connection to #{url}#{body_msg} not cached and new http connections are disabled" }
26
+ rescue => error
27
+ { error: error.message }
26
28
  end
27
29
 
28
30
  def handles_request?(method, url, headers, body)
@@ -34,6 +34,10 @@ module Billy
34
34
  new_stub
35
35
  end
36
36
 
37
+ def unstub(stub)
38
+ stubs.delete stub
39
+ end
40
+
37
41
  private
38
42
 
39
43
  attr_writer :stubs
@@ -9,7 +9,7 @@ end
9
9
  RSpec.configure do |config|
10
10
  config.include(Billy::RspecHelper)
11
11
 
12
- config.after(:each) do
12
+ config.prepend_after(:each) do
13
13
  proxy.reset
14
14
  end
15
15
  end
@@ -6,7 +6,7 @@ module Billy
6
6
  extend Forwardable
7
7
  attr_reader :request_handler
8
8
 
9
- def_delegators :request_handler, :stub, :reset, :reset_cache, :restore_cache, :handle_request
9
+ def_delegators :request_handler, :stub, :unstub, :reset, :reset_cache, :restore_cache, :handle_request
10
10
 
11
11
  def initialize
12
12
  @request_handler = Billy::RequestHandler.new
@@ -1,3 +1,3 @@
1
1
  module Billy
2
- VERSION = '0.12.0'
2
+ VERSION = '1.0.0'
3
3
  end
@@ -28,10 +28,9 @@ Gem::Specification.new do |gem|
28
28
  gem.add_development_dependency 'rb-inotify'
29
29
  gem.add_development_dependency 'pry'
30
30
  gem.add_development_dependency 'cucumber'
31
- gem.add_development_dependency 'watir-webdriver', '0.9.1'
32
- # addressable 2.5.0 drops support for ruby 1.9.3
33
- gem.add_runtime_dependency 'addressable', '~> 2.4', '>= 2.4.0'
34
- gem.add_runtime_dependency 'eventmachine', '1.2.0.1'
31
+ gem.add_development_dependency 'watir', '~> 6.10.0'
32
+ gem.add_runtime_dependency 'addressable', '~> 2.5'
33
+ gem.add_runtime_dependency 'eventmachine', '~> 1.0.4'
35
34
  gem.add_runtime_dependency 'em-synchrony'
36
35
  gem.add_runtime_dependency 'em-http-request', '~> 1.1', '>= 1.1.0'
37
36
  gem.add_runtime_dependency 'eventmachine_httpserver'
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
  require 'base64'
3
3
 
4
- describe 'Facebook API example', type: :feature, js: true do
4
+ # FIXME: Looks like Facebook API changed recently and this test fails consistently now -RS 2018-03-05
5
+ xdescribe 'Facebook API example', type: :feature, js: true do
5
6
  before do
6
7
  proxy.stub('https://www.facebook.com:443/dialog/oauth').and_return(proc do |params, _, _|
7
8
  # mock a signed request from facebook. the JS api never verifies the
@@ -104,6 +104,21 @@ describe Billy::RequestHandler do
104
104
  expect(proxy_handler).to receive(:handle_request).with(*args)
105
105
  expect(subject.handle_request(*args)).to eql(error: "Connection to url with body 'body' not cached and new http connections are disabled")
106
106
  end
107
+
108
+ it 'returns an error hash on unhandled exceptions' do
109
+ # Allow handling requests initially
110
+ allow(stub_handler).to receive(:handle_request)
111
+ allow(cache_handler).to receive(:handle_request)
112
+
113
+ allow(proxy_handler).to receive(:handle_request).and_raise("Any Proxy Error")
114
+ expect(subject.handle_request(*args)).to eql(error: "Any Proxy Error")
115
+
116
+ allow(cache_handler).to receive(:handle_request).and_raise("Any Cache Error")
117
+ expect(subject.handle_request(*args)).to eql(error: "Any Cache Error")
118
+
119
+ allow(stub_handler).to receive(:handle_request).and_raise("Any Stub Error")
120
+ expect(subject.handle_request(*args)).to eql(error: "Any Stub Error")
121
+ end
107
122
  end
108
123
 
109
124
  describe '#stub' do
@@ -63,6 +63,37 @@ describe Billy::StubHandler do
63
63
  end
64
64
  end
65
65
 
66
+ describe '#unstub' do
67
+ let!(:get_stub) { handler.stub('http://example.get/') }
68
+ let!(:post_stub) { handler.stub('http://example.post/', method: :post) }
69
+
70
+ it 'removes a single stub' do
71
+ expect(handler.handles_request?('GET',
72
+ 'http://example.get/',
73
+ request[:headers],
74
+ request[:body])).to be true
75
+ expect(handler.handles_request?('POST',
76
+ 'http://example.post/',
77
+ request[:headers],
78
+ request[:body])).to be true
79
+
80
+ handler.unstub get_stub
81
+
82
+ expect(handler.handles_request?('GET',
83
+ 'http://example.get/',
84
+ request[:headers],
85
+ request[:body])).to be false
86
+ expect(handler.handles_request?('POST',
87
+ 'http://example.post/',
88
+ request[:headers],
89
+ request[:body])).to be true
90
+ end
91
+
92
+ it 'does not raise errors for not existing stub' do
93
+ expect { handler.unstub 'http://example.option/' }.not_to raise_error
94
+ end
95
+ end
96
+
66
97
  it '#stubs requests' do
67
98
  handler.stub('http://example.test:8080/index')
68
99
  expect(handler.handles_request?('GET',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puffing-billy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Olly Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-07 00:00:00.000000000 Z
11
+ date: 2018-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -179,53 +179,47 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: watir-webdriver
182
+ name: watir
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
- - - '='
185
+ - - "~>"
186
186
  - !ruby/object:Gem::Version
187
- version: 0.9.1
187
+ version: 6.10.0
188
188
  type: :development
189
189
  prerelease: false
190
190
  version_requirements: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - '='
192
+ - - "~>"
193
193
  - !ruby/object:Gem::Version
194
- version: 0.9.1
194
+ version: 6.10.0
195
195
  - !ruby/object:Gem::Dependency
196
196
  name: addressable
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: '2.4'
202
- - - ">="
203
- - !ruby/object:Gem::Version
204
- version: 2.4.0
201
+ version: '2.5'
205
202
  type: :runtime
206
203
  prerelease: false
207
204
  version_requirements: !ruby/object:Gem::Requirement
208
205
  requirements:
209
206
  - - "~>"
210
207
  - !ruby/object:Gem::Version
211
- version: '2.4'
212
- - - ">="
213
- - !ruby/object:Gem::Version
214
- version: 2.4.0
208
+ version: '2.5'
215
209
  - !ruby/object:Gem::Dependency
216
210
  name: eventmachine
217
211
  requirement: !ruby/object:Gem::Requirement
218
212
  requirements:
219
- - - '='
213
+ - - "~>"
220
214
  - !ruby/object:Gem::Version
221
- version: 1.2.0.1
215
+ version: 1.0.4
222
216
  type: :runtime
223
217
  prerelease: false
224
218
  version_requirements: !ruby/object:Gem::Requirement
225
219
  requirements:
226
- - - '='
220
+ - - "~>"
227
221
  - !ruby/object:Gem::Version
228
- version: 1.2.0.1
222
+ version: 1.0.4
229
223
  - !ruby/object:Gem::Dependency
230
224
  name: em-synchrony
231
225
  requirement: !ruby/object:Gem::Requirement