puffing-billy 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -2,10 +2,12 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  puffing-billy (0.1.1)
5
+ capybara
5
6
  em-http-request
6
7
  eventmachine
7
8
  eventmachine_httpserver
8
9
  http_parser.rb
10
+ rspec
9
11
  yajl-ruby
10
12
 
11
13
  GEM
@@ -85,7 +87,6 @@ PLATFORMS
85
87
  ruby
86
88
 
87
89
  DEPENDENCIES
88
- capybara
89
90
  capybara-webkit
90
91
  faraday
91
92
  poltergeist
data/README.md CHANGED
@@ -1,15 +1,23 @@
1
1
  # Puffing Billy
2
2
 
3
- A stubbing proxy server for ruby. Connect it to your browser in integration
4
- tests to fake interactions with remote HTTP(S) servers.
3
+ A rewriting web proxy for testing interactions between your browser and
4
+ external sites. Works with ruby + rspec.
5
+
6
+ Puffing Billy is like [webmock](https://github.com/bblimke/webmock), but for
7
+ your browser.
5
8
 
6
9
  ![](http://upload.wikimedia.org/wikipedia/commons/0/01/Puffing_Billy_1862.jpg)
7
10
 
8
11
  ## Overview
9
12
 
10
13
  Billy spawns an EventMachine-based proxy server, which it uses to intercept
11
- requests sent by your browser. It has a simple rspec plugin for configuring
12
- which requests need stubbing and what they should return.
14
+ requests sent by your browser. It has a simple API for configuring which
15
+ requests need stubbing and what they should return.
16
+
17
+ Billy lets you test against known, repeatable data. It also allows you to
18
+ test for failure cases. Does your twitter (or facebook/google/etc)
19
+ integration degrade gracefully when the API starts returning 500s? Well now
20
+ you can test it!
13
21
 
14
22
  ```ruby
15
23
  it 'should stub google' do
@@ -19,7 +27,6 @@ it 'should stub google' do
19
27
  end
20
28
  ```
21
29
 
22
-
23
30
  ## Installation
24
31
 
25
32
  Add this line to your application's Gemfile:
@@ -104,3 +111,4 @@ to see how Billy's default drivers are configured.
104
111
  1. Integration for test frameworks other than rspec.
105
112
  2. Caching (for super awesome improved test performance).
106
113
  3. Show errors from the EventMachine reactor loop in the test output.
114
+
data/lib/billy/rspec.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rspec'
2
+ require 'capybara/rspec'
2
3
  require 'billy'
3
4
 
4
5
  $billy_proxy = Billy::Proxy.new
@@ -24,37 +25,41 @@ RSpec.configure do |config|
24
25
  end
25
26
  end
26
27
 
27
- if defined?(Capybara)
28
-
29
- if defined?(Capybara::Poltergeist)
30
- Capybara.register_driver :poltergeist_billy do |app|
31
- options = {
32
- phantomjs_options: [
33
- '--ignore-ssl-errors=yes',
34
- "--proxy=#{Billy.proxy.host}:#{Billy.proxy.port}"
35
- ]
36
- }
37
- Capybara::Poltergeist::Driver.new(app, options)
38
- end
28
+ ['capybara/poltergeist', 'capybara/webkit', 'selenium/webdriver'].each do |d|
29
+ begin
30
+ require d
31
+ rescue LoadError
39
32
  end
33
+ end
40
34
 
41
- if defined?(Capybara::Driver::Webkit)
42
- Capybara.register_driver :webkit_billy do |app|
43
- driver = Capybara::Driver::Webkit.new(app)
44
- driver.browser.set_proxy(:host => Billy.proxy.host,
45
- :port => Billy.proxy.port)
46
- driver.browser.ignore_ssl_errors
47
- driver
48
- end
35
+ if defined?(Capybara::Poltergeist)
36
+ Capybara.register_driver :poltergeist_billy do |app|
37
+ options = {
38
+ phantomjs_options: [
39
+ '--ignore-ssl-errors=yes',
40
+ "--proxy=#{Billy.proxy.host}:#{Billy.proxy.port}"
41
+ ]
42
+ }
43
+ Capybara::Poltergeist::Driver.new(app, options)
44
+ end
45
+ end
46
+
47
+ if defined?(Capybara::Driver::Webkit)
48
+ Capybara.register_driver :webkit_billy do |app|
49
+ driver = Capybara::Driver::Webkit.new(app)
50
+ driver.browser.set_proxy(:host => Billy.proxy.host,
51
+ :port => Billy.proxy.port)
52
+ driver.browser.ignore_ssl_errors
53
+ driver
49
54
  end
55
+ end
50
56
 
51
- if defined?(Selenium::WebDriver)
52
- Capybara.register_driver :selenium_billy do |app|
53
- profile = Selenium::WebDriver::Firefox::Profile.new
54
- profile.proxy = Selenium::WebDriver::Proxy.new(
55
- :http => "#{Billy.proxy.host}:#{Billy.proxy.port}",
56
- :ssl => "#{Billy.proxy.host}:#{Billy.proxy.port}")
57
- Capybara::Selenium::Driver.new(app, :profile => profile)
58
- end
57
+ if defined?(Selenium::WebDriver)
58
+ Capybara.register_driver :selenium_billy do |app|
59
+ profile = Selenium::WebDriver::Firefox::Profile.new
60
+ profile.proxy = Selenium::WebDriver::Proxy.new(
61
+ :http => "#{Billy.proxy.host}:#{Billy.proxy.port}",
62
+ :ssl => "#{Billy.proxy.host}:#{Billy.proxy.port}")
63
+ Capybara::Selenium::Driver.new(app, :profile => profile)
59
64
  end
60
65
  end
data/lib/billy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Billy
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -18,7 +18,6 @@ Gem::Specification.new do |gem|
18
18
  gem.add_development_dependency "rspec"
19
19
  gem.add_development_dependency "thin"
20
20
  gem.add_development_dependency "faraday"
21
- gem.add_development_dependency "capybara"
22
21
  gem.add_development_dependency "poltergeist"
23
22
  gem.add_development_dependency "selenium-webdriver"
24
23
  gem.add_development_dependency "capybara-webkit"
@@ -28,4 +27,6 @@ Gem::Specification.new do |gem|
28
27
  gem.add_runtime_dependency "eventmachine_httpserver"
29
28
  gem.add_runtime_dependency "http_parser.rb"
30
29
  gem.add_runtime_dependency "yajl-ruby"
30
+ gem.add_runtime_dependency "rspec"
31
+ gem.add_runtime_dependency "capybara"
31
32
  end
data/spec/spec_helper.rb CHANGED
@@ -1,8 +1,6 @@
1
1
  Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| require f}
2
2
 
3
- require 'capybara/poltergeist'
4
3
  require 'billy/rspec'
5
- require 'capybara/rspec'
6
4
  require 'rack'
7
5
  require 'logger'
8
6
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puffing-billy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-12 00:00:00.000000000 Z
12
+ date: 2012-10-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -60,7 +60,7 @@ dependencies:
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
- name: capybara
63
+ name: poltergeist
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -76,7 +76,7 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  - !ruby/object:Gem::Dependency
79
- name: poltergeist
79
+ name: selenium-webdriver
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
@@ -92,7 +92,7 @@ dependencies:
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0'
94
94
  - !ruby/object:Gem::Dependency
95
- name: selenium-webdriver
95
+ name: capybara-webkit
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
@@ -108,7 +108,7 @@ dependencies:
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  - !ruby/object:Gem::Dependency
111
- name: capybara-webkit
111
+ name: rack
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  none: false
114
114
  requirements:
@@ -124,14 +124,14 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: rack
127
+ name: eventmachine
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
- type: :development
134
+ type: :runtime
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  none: false
@@ -140,7 +140,7 @@ dependencies:
140
140
  - !ruby/object:Gem::Version
141
141
  version: '0'
142
142
  - !ruby/object:Gem::Dependency
143
- name: eventmachine
143
+ name: em-http-request
144
144
  requirement: !ruby/object:Gem::Requirement
145
145
  none: false
146
146
  requirements:
@@ -156,7 +156,7 @@ dependencies:
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
158
  - !ruby/object:Gem::Dependency
159
- name: em-http-request
159
+ name: eventmachine_httpserver
160
160
  requirement: !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
@@ -172,7 +172,7 @@ dependencies:
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0'
174
174
  - !ruby/object:Gem::Dependency
175
- name: eventmachine_httpserver
175
+ name: http_parser.rb
176
176
  requirement: !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements:
@@ -188,7 +188,7 @@ dependencies:
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  - !ruby/object:Gem::Dependency
191
- name: http_parser.rb
191
+ name: yajl-ruby
192
192
  requirement: !ruby/object:Gem::Requirement
193
193
  none: false
194
194
  requirements:
@@ -204,7 +204,23 @@ dependencies:
204
204
  - !ruby/object:Gem::Version
205
205
  version: '0'
206
206
  - !ruby/object:Gem::Dependency
207
- name: yajl-ruby
207
+ name: rspec
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: capybara
208
224
  requirement: !ruby/object:Gem::Requirement
209
225
  none: false
210
226
  requirements: