vcr 2.9.3 → 3.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.
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`