vcr 2.9.3 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/features/about_these_examples.md +1 -1
  3. data/features/cassettes/automatic_re_recording.feature +4 -4
  4. data/features/cassettes/decompress.feature +3 -3
  5. data/features/cassettes/exclusive.feature +11 -8
  6. data/features/cassettes/format.feature +135 -32
  7. data/features/cassettes/naming.feature +2 -2
  8. data/features/cassettes/no_cassette.feature +4 -4
  9. data/features/configuration/allow_http_connections_when_no_cassette.feature +6 -3
  10. data/features/configuration/cassette_library_dir.feature +2 -2
  11. data/features/configuration/debug_logging.feature +15 -8
  12. data/features/configuration/filter_sensitive_data.feature +8 -7
  13. data/features/configuration/hook_into.feature +8 -8
  14. data/features/configuration/ignore_request.feature +13 -14
  15. data/features/configuration/preserve_exact_body_bytes.feature +5 -5
  16. data/features/configuration/uri_parser.feature +15 -11
  17. data/features/hooks/after_http_request.feature +5 -4
  18. data/features/hooks/around_http_request.feature +3 -3
  19. data/features/hooks/before_http_request.feature +4 -2
  20. data/features/hooks/before_playback.feature +14 -15
  21. data/features/hooks/before_record.feature +10 -10
  22. data/features/http_libraries/em_http_request.feature +6 -3
  23. data/features/http_libraries/net_http.feature +15 -5
  24. data/features/middleware/faraday.feature +2 -2
  25. data/features/middleware/rack.feature +4 -4
  26. data/features/record_modes/all.feature +5 -5
  27. data/features/record_modes/new_episodes.feature +2 -2
  28. data/features/record_modes/once.feature +3 -3
  29. data/features/step_definitions/cli_steps.rb +37 -39
  30. data/features/support/env.rb +29 -26
  31. data/features/support/http_lib_filters.rb +0 -7
  32. data/features/test_frameworks/cucumber.feature +11 -10
  33. data/features/test_frameworks/rspec_macro.feature +5 -30
  34. data/features/test_frameworks/rspec_metadata.feature +9 -8
  35. data/features/test_frameworks/test_unit.feature +5 -2
  36. data/lib/vcr.rb +86 -14
  37. data/lib/vcr/cassette.rb +4 -2
  38. data/lib/vcr/cassette/serializers.rb +10 -8
  39. data/lib/vcr/cassette/serializers/compressed.rb +45 -0
  40. data/lib/vcr/configuration.rb +38 -17
  41. data/lib/vcr/library_hooks/fakeweb.rb +1 -0
  42. data/lib/vcr/library_hooks/faraday.rb +5 -1
  43. data/lib/vcr/middleware/faraday.rb +13 -9
  44. data/lib/vcr/test_frameworks/cucumber.rb +39 -5
  45. data/lib/vcr/version.rb +1 -1
  46. data/spec/acceptance/concurrency_spec.rb +51 -0
  47. data/spec/{vcr → lib/vcr}/cassette/erb_renderer_spec.rb +0 -0
  48. data/spec/{vcr → lib/vcr}/cassette/http_interaction_list_spec.rb +0 -0
  49. data/spec/{vcr → lib/vcr}/cassette/migrator_spec.rb +10 -9
  50. data/spec/{vcr → lib/vcr}/cassette/persisters/file_system_spec.rb +0 -0
  51. data/spec/{vcr → lib/vcr}/cassette/persisters_spec.rb +0 -0
  52. data/spec/{vcr → lib/vcr}/cassette/serializers_spec.rb +8 -2
  53. data/spec/{vcr → lib/vcr}/cassette_spec.rb +0 -0
  54. data/spec/{vcr → lib/vcr}/configuration_spec.rb +0 -0
  55. data/spec/{vcr → lib/vcr}/deprecations_spec.rb +0 -0
  56. data/spec/{vcr → lib/vcr}/errors_spec.rb +0 -0
  57. data/spec/{vcr → lib/vcr}/extensions/net_http_response_spec.rb +0 -0
  58. data/spec/{vcr → lib/vcr}/library_hooks/excon_spec.rb +0 -0
  59. data/spec/{vcr → lib/vcr}/library_hooks/fakeweb_spec.rb +0 -0
  60. data/spec/{vcr → lib/vcr}/library_hooks/faraday_spec.rb +0 -0
  61. data/spec/{vcr → lib/vcr}/library_hooks/typhoeus_0.4_spec.rb +0 -0
  62. data/spec/{vcr → lib/vcr}/library_hooks/typhoeus_spec.rb +0 -0
  63. data/spec/{vcr → lib/vcr}/library_hooks/webmock_spec.rb +2 -2
  64. data/spec/{vcr → lib/vcr}/library_hooks_spec.rb +0 -0
  65. data/spec/{vcr → lib/vcr}/middleware/faraday_spec.rb +0 -0
  66. data/spec/{vcr → lib/vcr}/middleware/rack_spec.rb +0 -0
  67. data/spec/{vcr → lib/vcr}/request_ignorer_spec.rb +0 -0
  68. data/spec/{vcr → lib/vcr}/request_matcher_registry_spec.rb +0 -0
  69. data/spec/{vcr → lib/vcr}/structs_spec.rb +0 -0
  70. data/spec/{vcr → lib/vcr}/test_frameworks/cucumber_spec.rb +0 -0
  71. data/spec/{vcr → lib/vcr}/test_frameworks/rspec_spec.rb +0 -0
  72. data/spec/{vcr → lib/vcr}/util/hooks_spec.rb +0 -0
  73. data/spec/{vcr → lib/vcr}/util/internet_connection_spec.rb +0 -0
  74. data/spec/{vcr → lib/vcr}/util/version_checker_spec.rb +0 -0
  75. data/spec/{vcr → lib/vcr}/version_spec.rb +0 -0
  76. data/spec/{vcr_spec.rb → lib/vcr_spec.rb} +2 -2
  77. data/spec/spec_helper.rb +21 -50
  78. data/spec/support/cucumber_helpers.rb +39 -0
  79. data/spec/support/limited_uri.rb +1 -11
  80. data/spec/support/shared_example_groups/hook_into_http_library.rb +2 -1
  81. data/spec/support/vcr_localhost_server.rb +2 -3
  82. metadata +475 -123
  83. data/.gemtest +0 -0
  84. data/.gitignore +0 -52
  85. data/.gitmodules +0 -3
  86. data/.rspec +0 -2
  87. data/.travis.yml +0 -27
  88. data/.yardopts +0 -9
  89. data/Appraisals +0 -5
  90. data/CHANGELOG.md +0 -987
  91. data/CONTRIBUTING.md +0 -26
  92. data/Gemfile +0 -54
  93. data/Gemfile.lock +0 -159
  94. data/LICENSE +0 -20
  95. data/README.md +0 -243
  96. data/Rakefile +0 -197
  97. data/Upgrade.md +0 -289
  98. data/benchmarks/http_stubbing_libraries.rb +0 -59
  99. data/benchmarks/null_logging.rb +0 -62
  100. data/cucumber.yml +0 -16
  101. data/features/.nav +0 -62
  102. data/features/cassettes/persistence.feature +0 -63
  103. data/features/support/vcr_cucumber_helpers.rb +0 -46
  104. data/gemfiles/typhoeus_old.gemfile +0 -34
  105. data/gemfiles/typhoeus_old.gemfile.lock +0 -133
  106. data/script/ci.sh +0 -27
  107. data/spec/capture_warnings.rb +0 -73
  108. data/spec/quality_spec.rb +0 -51
  109. data/vcr.gemspec +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1e6983e0b541695c90b220f62fe9a67357d061c7
4
- data.tar.gz: dae97ef043b1c5fcc7589dd0f591ce7bb751e3db
3
+ metadata.gz: 4220b7228aef7b898a3c0caaac694cde250bf8c2
4
+ data.tar.gz: 1dc6b739ec86f670219754076cd749edb295c47b
5
5
  SHA512:
6
- metadata.gz: 16981e6236478ed88aa82d859e1cfeed50d9d16a44d536a0606c0408c4f17d74147e1ed855a2273a1f0c7aa8521713fdc741333382e181641edf8a30fbbd5d07
7
- data.tar.gz: de2dd8e386e31e46d500e2faa5daa993df951a2adec43163f325f6bc9d530bce519fe16739c71a8f989daa2015b62cfde4d2369260f2bc50a92630990e509b84
6
+ metadata.gz: 758f773b6832d30b190aaaba9c24ed7d345c1d31a1216cc8b9ff4bac4175e17f01d9355be38ba2e7bb752c6ab10e8f98c2fa31ddfcac8dbfbe7649d27c279768
7
+ data.tar.gz: a29dff72f5ed9facdda4038866b2c761905e42ae3c51756406ab965bae03e9b398d3219ebea0963ae85235f84e90492a66e44a61def80412d298ecac56e73c5d
@@ -2,7 +2,7 @@ The cucumber features provided here demonstrate all of the major features of
2
2
  VCR. These features are executable documentation for VCR.
3
3
 
4
4
  Many of the examples use one (or both) of these helper functions
5
- provided by `vcr_cucumber_helpers.rb`:
5
+ provided by `spec/support/cucumber_helpers.rb`:
6
6
 
7
7
  * `start_sinatra_app`: starts a sinatra application on the given port.
8
8
  The server automatically shuts down when the ruby script ends. Many
@@ -17,7 +17,7 @@ Feature: Automatic Re-recording
17
17
  http_interactions:
18
18
  - request:
19
19
  method: get
20
- uri: http://localhost:7777/
20
+ uri: http://localhost/
21
21
  body:
22
22
  encoding: UTF-8
23
23
  string: ""
@@ -38,7 +38,7 @@ Feature: Automatic Re-recording
38
38
  """
39
39
  And a file named "re_record.rb" with:
40
40
  """ruby
41
- start_sinatra_app(:port => 7777) do
41
+ $server = start_sinatra_app do
42
42
  get('/') { 'New Response' }
43
43
  end
44
44
 
@@ -49,8 +49,8 @@ Feature: Automatic Re-recording
49
49
  c.cassette_library_dir = 'cassettes'
50
50
  end
51
51
 
52
- VCR.use_cassette('example', :re_record_interval => 7.days) do
53
- puts Net::HTTP.get_response('localhost', '/', 7777).body
52
+ VCR.use_cassette('example', :re_record_interval => 7.days, :match_requests_on => [:method, :host, :path]) do
53
+ puts Net::HTTP.get_response('localhost', '/', $server.port).body
54
54
  end
55
55
  """
56
56
 
@@ -14,7 +14,7 @@ Feature: Decode compressed response
14
14
  require 'zlib'
15
15
  require 'stringio'
16
16
 
17
- start_sinatra_app(:port => 7777) do
17
+ $server = start_sinatra_app do
18
18
  get('/') {
19
19
  content = 'The quick brown fox jumps over the lazy dog'
20
20
  io = StringIO.new
@@ -41,7 +41,7 @@ Feature: Decode compressed response
41
41
  When I append to file "decompress.rb":
42
42
  """ruby
43
43
  VCR.use_cassette(:decompress) do
44
- Net::HTTP.start('localhost', 7777) do |http|
44
+ Net::HTTP.start('localhost', $server.port) do |http|
45
45
  http.get('/', 'accept-encoding' => 'identity')
46
46
  end
47
47
  end
@@ -57,7 +57,7 @@ Feature: Decode compressed response
57
57
  When I append to file "decompress.rb":
58
58
  """ruby
59
59
  VCR.use_cassette(:decompress, :decode_compressed_response => true) do
60
- Net::HTTP.start('localhost', 7777) do |http|
60
+ Net::HTTP.start('localhost', $server.port) do |http|
61
61
  http.get('/', 'accept-encoding' => 'identity')
62
62
  end
63
63
  end
@@ -21,7 +21,7 @@ Feature: exclusive cassette
21
21
  http_interactions:
22
22
  - request:
23
23
  method: get
24
- uri: http://localhost:7777/outer
24
+ uri: http://localhost/outer
25
25
  body:
26
26
  encoding: UTF-8
27
27
  string: ""
@@ -46,7 +46,7 @@ Feature: exclusive cassette
46
46
  http_interactions:
47
47
  - request:
48
48
  method: get
49
- uri: http://localhost:7777/inner
49
+ uri: http://localhost/inner
50
50
  body:
51
51
  encoding: UTF-8
52
52
  string: ""
@@ -69,7 +69,7 @@ Feature: exclusive cassette
69
69
  """ruby
70
70
  include_http_adapter_for("net/http")
71
71
 
72
- start_sinatra_app(:port => 7777) do
72
+ $server = start_sinatra_app do
73
73
  get('/:path') { "New #{params[:path]} response" }
74
74
  end
75
75
 
@@ -78,7 +78,10 @@ Feature: exclusive cassette
78
78
  VCR.configure do |c|
79
79
  c.hook_into :webmock
80
80
  c.cassette_library_dir = 'cassettes'
81
- c.default_cassette_options = { :record => :new_episodes }
81
+ c.default_cassette_options = {
82
+ :record => :new_episodes,
83
+ :match_requests_on => [:method, :host, :path]
84
+ }
82
85
  end
83
86
  """
84
87
 
@@ -89,8 +92,8 @@ Feature: exclusive cassette
89
92
 
90
93
  VCR.use_cassette('outer') do
91
94
  VCR.use_cassette('inner') do
92
- puts response_body_for(:get, "http://localhost:7777/outer")
93
- puts response_body_for(:get, "http://localhost:7777/inner")
95
+ puts response_body_for(:get, "http://localhost:#{$server.port}/outer")
96
+ puts response_body_for(:get, "http://localhost:#{$server.port}/inner")
94
97
  end
95
98
  end
96
99
  """
@@ -108,8 +111,8 @@ Feature: exclusive cassette
108
111
 
109
112
  VCR.use_cassette('outer') do
110
113
  VCR.use_cassette('inner', :exclusive => true) do
111
- puts response_body_for(:get, "http://localhost:7777/outer")
112
- puts response_body_for(:get, "http://localhost:7777/inner")
114
+ puts response_body_for(:get, "http://localhost:#{$server.port}/outer")
115
+ puts response_body_for(:get, "http://localhost:#{$server.port}/inner")
113
116
  end
114
117
  end
115
118
  """
@@ -37,6 +37,8 @@ Feature: Cassette format
37
37
  you want to ensure that psych is always used.
38
38
  - `:json`--Uses [multi_json](https://github.com/intridea/multi_json)
39
39
  to serialize the cassette data as JSON.
40
+ - `:compressed`--Wraps the default YAML serializer with Zlib, writing
41
+ compressed cassettes to disk.
40
42
 
41
43
  You can also register a custom serializer using:
42
44
 
@@ -56,7 +58,7 @@ Feature: Cassette format
56
58
  include_http_adapter_for("<http_lib>")
57
59
 
58
60
  if ARGV.any?
59
- start_sinatra_app(:port => 7777) do
61
+ $server = start_sinatra_app do
60
62
  get('/:path') { ARGV[0] + ' ' + params[:path] }
61
63
  end
62
64
  end
@@ -66,60 +68,63 @@ Feature: Cassette format
66
68
  VCR.configure do |c|
67
69
  <configuration>
68
70
  c.cassette_library_dir = 'cassettes'
71
+ c.before_record do |i|
72
+ i.request.uri.sub!(/:\d+/, ':7777')
73
+ end
69
74
  end
70
75
 
71
76
  VCR.use_cassette('example') do
72
- make_http_request(:get, "http://localhost:7777/foo", nil, 'Accept-Encoding' => 'identity')
73
- make_http_request(:get, "http://localhost:7777/bar", nil, 'Accept-Encoding' => 'identity')
77
+ make_http_request(:get, "http://localhost:#{$server.port}/foo", nil, 'Accept-Encoding' => 'identity')
78
+ make_http_request(:get, "http://localhost:#{$server.port}/bar", nil, 'Accept-Encoding' => 'identity')
74
79
  end
75
80
  """
76
- When I run `ruby cassette_yaml.rb 'Hello'`
81
+ When I successfully run `ruby cassette_yaml.rb 'Hello'`
77
82
  Then the file "cassettes/example.yml" should contain YAML like:
78
83
  """
79
- ---
80
- http_interactions:
81
- - request:
84
+ ---
85
+ http_interactions:
86
+ - request:
82
87
  method: get
83
88
  uri: http://localhost:7777/foo
84
- body:
89
+ body:
85
90
  encoding: UTF-8
86
91
  string: ""
87
- headers:
88
- Accept-Encoding:
92
+ headers:
93
+ Accept-Encoding:
89
94
  - identity
90
- response:
91
- status:
95
+ response:
96
+ status:
92
97
  code: 200
93
98
  message: OK
94
- headers:
95
- Content-Type:
99
+ headers:
100
+ Content-Type:
96
101
  - text/html;charset=utf-8
97
- Content-Length:
102
+ Content-Length:
98
103
  - "9"
99
- body:
104
+ body:
100
105
  encoding: UTF-8
101
106
  string: Hello foo
102
107
  http_version: "1.1"
103
108
  recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
104
- - request:
109
+ - request:
105
110
  method: get
106
111
  uri: http://localhost:7777/bar
107
- body:
112
+ body:
108
113
  encoding: UTF-8
109
114
  string: ""
110
- headers:
111
- Accept-Encoding:
115
+ headers:
116
+ Accept-Encoding:
112
117
  - identity
113
- response:
114
- status:
118
+ response:
119
+ status:
115
120
  code: 200
116
121
  message: OK
117
- headers:
118
- Content-Type:
122
+ headers:
123
+ Content-Type:
119
124
  - text/html;charset=utf-8
120
- Content-Length:
125
+ Content-Length:
121
126
  - "9"
122
- body:
127
+ body:
123
128
  encoding: UTF-8
124
129
  string: Hello bar
125
130
  http_version: "1.1"
@@ -145,7 +150,7 @@ Feature: Cassette format
145
150
  """ruby
146
151
  include_http_adapter_for("net/http")
147
152
 
148
- start_sinatra_app(:port => 7777) do
153
+ $server = start_sinatra_app do
149
154
  get('/:path') { ARGV[0] + ' ' + params[:path] }
150
155
  end
151
156
 
@@ -154,11 +159,17 @@ Feature: Cassette format
154
159
  VCR.configure do |c|
155
160
  c.hook_into :webmock
156
161
  c.cassette_library_dir = 'cassettes'
162
+ c.before_record do |i|
163
+ i.request.uri.sub!(/:\d+/, ':7777')
164
+ end
165
+ c.default_cassette_options = {
166
+ :match_requests_on => [:method, :host, :path]
167
+ }
157
168
  end
158
169
 
159
170
  VCR.use_cassette('example', :serialize_with => :json) do
160
- puts response_body_for(:get, "http://localhost:7777/foo", nil, 'Accept-Encoding' => 'identity')
161
- puts response_body_for(:get, "http://localhost:7777/bar", nil, 'Accept-Encoding' => 'identity')
171
+ puts response_body_for(:get, "http://localhost:#{$server.port}/foo", nil, 'Accept-Encoding' => 'identity')
172
+ puts response_body_for(:get, "http://localhost:#{$server.port}/bar", nil, 'Accept-Encoding' => 'identity')
162
173
  end
163
174
  """
164
175
  When I run `ruby cassette_json.rb 'Hello'`
@@ -235,12 +246,98 @@ Feature: Cassette format
235
246
  Hello bar
236
247
  """
237
248
 
249
+ Scenario: Request/Response data can be saved as compressed YAML
250
+ Given a file named "cassette_compressed.rb" with:
251
+ """ruby
252
+ include_http_adapter_for("net/http")
253
+
254
+ $server = start_sinatra_app do
255
+ get('/:path') { ARGV[0] + ' ' + params[:path] }
256
+ end
257
+
258
+ require 'vcr'
259
+
260
+ VCR.configure do |c|
261
+ c.hook_into :webmock
262
+ c.cassette_library_dir = 'cassettes'
263
+ c.before_record do |i|
264
+ i.request.uri.sub!(/:\d+/, ':7777')
265
+ end
266
+ c.default_cassette_options = {
267
+ :match_requests_on => [:method, :host, :path]
268
+ }
269
+ end
270
+
271
+ VCR.use_cassette('example', :serialize_with => :compressed) do
272
+ puts response_body_for(:get, "http://localhost:#{$server.port}/foo", nil, 'Accept-Encoding' => 'identity')
273
+ puts response_body_for(:get, "http://localhost:#{$server.port}/bar", nil, 'Accept-Encoding' => 'identity')
274
+ end
275
+
276
+ """
277
+ When I run `ruby cassette_compressed.rb 'Hello'`
278
+ Then the file "cassettes/example.gz" should contain compressed YAML like:
279
+ """
280
+ ---
281
+ http_interactions:
282
+ - request:
283
+ method: get
284
+ uri: http://localhost:7777/foo
285
+ body:
286
+ encoding: UTF-8
287
+ string: ""
288
+ headers:
289
+ Accept-Encoding:
290
+ - identity
291
+ response:
292
+ status:
293
+ code: 200
294
+ message: OK
295
+ headers:
296
+ Content-Type:
297
+ - text/html;charset=utf-8
298
+ Content-Length:
299
+ - "9"
300
+ body:
301
+ encoding: UTF-8
302
+ string: Hello foo
303
+ recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
304
+ - request:
305
+ method: get
306
+ uri: http://localhost:7777/bar
307
+ body:
308
+ encoding: UTF-8
309
+ string: ""
310
+ headers:
311
+ Accept-Encoding:
312
+ - identity
313
+ response:
314
+ status:
315
+ code: 200
316
+ message: OK
317
+ headers:
318
+ Content-Type:
319
+ - text/html;charset=utf-8
320
+ Content-Length:
321
+ - "9"
322
+ body:
323
+ encoding: UTF-8
324
+ string: Hello bar
325
+ recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
326
+ recorded_with: VCR 2.0.0
327
+ """
328
+ When I run `ruby cassette_compressed.rb`
329
+ Then it should pass with:
330
+ """
331
+ Hello foo
332
+ Hello bar
333
+ """
334
+
238
335
  Scenario: Request/Response data can be saved using a custom serializer
239
336
  Given a file named "cassette_ruby.rb" with:
240
337
  """ruby
241
338
  include_http_adapter_for("net/http")
242
339
 
243
- start_sinatra_app(:port => 7777) do
340
+ $server = start_sinatra_app do
244
341
  get('/:path') { ARGV[0] + ' ' + params[:path] }
245
342
  end
246
343
 
@@ -259,11 +356,17 @@ Feature: Cassette format
259
356
  c.hook_into :webmock
260
357
  c.cassette_library_dir = 'cassettes'
261
358
  c.cassette_serializers[:ruby] = ruby_serializer
359
+ c.before_record do |i|
360
+ i.request.uri.sub!(/:\d+/, ':7777')
361
+ end
362
+ c.default_cassette_options = {
363
+ :match_requests_on => [:method, :host, :path]
364
+ }
262
365
  end
263
366
 
264
367
  VCR.use_cassette('example', :serialize_with => :ruby) do
265
- puts response_body_for(:get, "http://localhost:7777/foo", nil, 'Accept-Encoding' => 'identity')
266
- puts response_body_for(:get, "http://localhost:7777/bar", nil, 'Accept-Encoding' => 'identity')
368
+ puts response_body_for(:get, "http://localhost:#{$server.port}/foo", nil, 'Accept-Encoding' => 'identity')
369
+ puts response_body_for(:get, "http://localhost:#{$server.port}/bar", nil, 'Accept-Encoding' => 'identity')
267
370
  end
268
371
  """
269
372
  When I run `ruby cassette_ruby.rb 'Hello'`
@@ -8,7 +8,7 @@ Feature: Naming
8
8
  Scenario: Name sanitizing
9
9
  Given a file named "name_sanitizing.rb" with:
10
10
  """ruby
11
- start_sinatra_app(:port => 7777) do
11
+ $server = start_sinatra_app do
12
12
  get('/') { "Hello" }
13
13
  end
14
14
 
@@ -20,7 +20,7 @@ Feature: Naming
20
20
  end
21
21
 
22
22
  VCR.use_cassette('Fee, Fi Fo Fum') do
23
- Net::HTTP.get_response('localhost', '/', 7777)
23
+ Net::HTTP.get_response('localhost', '/', $server.port)
24
24
  end
25
25
  """
26
26
  And the directory "cassettes" does not exist
@@ -56,7 +56,7 @@ Feature: Error for HTTP request made when no cassette is in use
56
56
  Scenario: Temporarily turn VCR off to allow HTTP requests to procede as normal
57
57
  Given a file named "turn_off_vcr.rb" with:
58
58
  """ruby
59
- start_sinatra_app(:port => 7777) do
59
+ $server = start_sinatra_app do
60
60
  get('/') { 'Hello' }
61
61
  end
62
62
 
@@ -69,7 +69,7 @@ Feature: Error for HTTP request made when no cassette is in use
69
69
 
70
70
  def make_request(context)
71
71
  puts context
72
- puts Net::HTTP.get_response('localhost', '/', 7777).body
72
+ puts Net::HTTP.get_response('localhost', '/', $server.port).body
73
73
  rescue => e
74
74
  puts "Error: #{e.class}"
75
75
  end
@@ -127,7 +127,7 @@ Feature: Error for HTTP request made when no cassette is in use
127
127
  Scenario: Turning VCR off with `:ignore_cassettes => true` ignores cassettes
128
128
  Given a file named "turn_off_vcr_and_insert_cassette.rb" with:
129
129
  """ruby
130
- start_sinatra_app(:port => 7777) do
130
+ $server = start_sinatra_app do
131
131
  get('/') { 'Hello' }
132
132
  end
133
133
 
@@ -142,7 +142,7 @@ Feature: Error for HTTP request made when no cassette is in use
142
142
  VCR.turn_off!(:ignore_cassettes => true)
143
143
 
144
144
  VCR.use_cassette('example') do
145
- response = Net::HTTP.get_response('localhost', '/', 7777).body
145
+ response = Net::HTTP.get_response('localhost', '/', $server.port).body
146
146
  puts "Response: #{response}"
147
147
  end
148
148
  """
@@ -9,7 +9,7 @@ Feature: Allow HTTP connections when no cassette
9
9
  Given a file named "vcr_setup.rb" with:
10
10
  """ruby
11
11
  if ARGV.include?('--with-server')
12
- start_sinatra_app(:port => 7777) do
12
+ $server = start_sinatra_app do
13
13
  get('/') { "Hello" }
14
14
  end
15
15
  end
@@ -20,6 +20,9 @@ Feature: Allow HTTP connections when no cassette
20
20
  c.allow_http_connections_when_no_cassette = true
21
21
  c.hook_into :webmock
22
22
  c.cassette_library_dir = 'cassettes'
23
+ c.default_cassette_options = {
24
+ :match_requests_on => [:method, :host, :path]
25
+ }
23
26
  end
24
27
  """
25
28
  And the directory "vcr/cassettes" does not exist
@@ -29,7 +32,7 @@ Feature: Allow HTTP connections when no cassette
29
32
  """ruby
30
33
  require 'vcr_setup.rb'
31
34
 
32
- puts "Response: " + Net::HTTP.get_response('localhost', '/', 7777).body
35
+ puts "Response: " + Net::HTTP.get_response('localhost', '/', $server ? $server.port : 0).body
33
36
  """
34
37
  When I run `ruby no_cassette.rb --with-server`
35
38
  Then the output should contain "Response: Hello"
@@ -40,7 +43,7 @@ Feature: Allow HTTP connections when no cassette
40
43
  require 'vcr_setup.rb'
41
44
 
42
45
  VCR.use_cassette('localhost') do
43
- puts "Response: " + Net::HTTP.get_response('localhost', '/', 7777).body
46
+ puts "Response: " + Net::HTTP.get_response('localhost', '/', $server ? $server.port : 0).body
44
47
  end
45
48
  """
46
49
  When I run `ruby record_replay_cassette.rb --with-server`