puffing-billy 0.12.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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