vcr 2.0.0.rc1 → 2.0.0.rc2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.limited_red +1 -0
- data/.travis.yml +10 -1
- data/.yardopts +9 -0
- data/CHANGELOG.md +51 -1
- data/Gemfile +5 -1
- data/LICENSE +1 -1
- data/README.md +23 -28
- data/Rakefile +63 -18
- data/Upgrade.md +200 -0
- data/features/.nav +2 -0
- data/features/cassettes/automatic_re_recording.feature +19 -15
- data/features/cassettes/dynamic_erb.feature +12 -4
- data/features/cassettes/exclusive.feature +31 -23
- data/features/cassettes/format.feature +54 -30
- data/features/cassettes/naming.feature +1 -1
- data/features/cassettes/update_content_length_header.feature +16 -12
- data/features/configuration/allow_http_connections_when_no_cassette.feature +1 -1
- data/features/configuration/debug_logging.feature +52 -0
- data/features/configuration/filter_sensitive_data.feature +4 -4
- data/features/configuration/hook_into.feature +5 -2
- data/features/configuration/ignore_request.feature +5 -3
- data/features/configuration/preserve_exact_body_bytes.feature +103 -0
- data/features/hooks/after_http_request.feature +17 -4
- data/features/hooks/around_http_request.feature +2 -1
- data/features/hooks/before_http_request.feature +25 -8
- data/features/hooks/before_playback.feature +16 -12
- data/features/hooks/before_record.feature +2 -2
- data/features/http_libraries/em_http_request.feature +82 -58
- data/features/http_libraries/net_http.feature +6 -6
- data/features/middleware/faraday.feature +2 -1
- data/features/middleware/rack.feature +2 -2
- data/features/record_modes/all.feature +19 -15
- data/features/record_modes/new_episodes.feature +17 -13
- data/features/record_modes/none.feature +15 -11
- data/features/record_modes/once.feature +16 -12
- data/features/request_matching/body.feature +28 -20
- data/features/request_matching/custom_matcher.feature +28 -20
- data/features/request_matching/headers.feature +34 -26
- data/features/request_matching/host.feature +28 -20
- data/features/request_matching/identical_request_sequence.feature +28 -20
- data/features/request_matching/method.feature +28 -20
- data/features/request_matching/path.feature +28 -20
- data/features/request_matching/playback_repeats.feature +28 -20
- data/features/request_matching/uri.feature +28 -20
- data/features/request_matching/uri_without_param.feature +28 -20
- data/features/support/env.rb +7 -6
- data/features/support/vcr_cucumber_helpers.rb +1 -0
- data/features/test_frameworks/cucumber.feature +8 -8
- data/features/test_frameworks/rspec_macro.feature +4 -4
- data/features/test_frameworks/rspec_metadata.feature +6 -6
- data/features/test_frameworks/shoulda.feature +1 -1
- data/features/test_frameworks/test_unit.feature +1 -1
- data/lib/vcr.rb +156 -5
- data/lib/vcr/cassette.rb +80 -30
- data/lib/vcr/cassette/http_interaction_list.rb +33 -4
- data/lib/vcr/cassette/migrator.rb +2 -3
- data/lib/vcr/cassette/reader.rb +1 -0
- data/lib/vcr/cassette/serializers.rb +22 -0
- data/lib/vcr/cassette/serializers/json.rb +27 -2
- data/lib/vcr/cassette/serializers/psych.rb +26 -2
- data/lib/vcr/cassette/serializers/syck.rb +28 -2
- data/lib/vcr/cassette/serializers/yaml.rb +28 -2
- data/lib/vcr/configuration.rb +348 -10
- data/lib/vcr/deprecations.rb +8 -0
- data/lib/vcr/errors.rb +40 -0
- data/lib/vcr/extensions/net_http_response.rb +12 -11
- data/lib/vcr/library_hooks.rb +1 -0
- data/lib/vcr/library_hooks/excon.rb +24 -3
- data/lib/vcr/library_hooks/fakeweb.rb +32 -16
- data/lib/vcr/library_hooks/faraday.rb +3 -0
- data/lib/vcr/library_hooks/typhoeus.rb +40 -37
- data/lib/vcr/library_hooks/webmock.rb +54 -34
- data/lib/vcr/middleware/faraday.rb +13 -0
- data/lib/vcr/middleware/rack.rb +35 -0
- data/lib/vcr/request_handler.rb +60 -8
- data/lib/vcr/request_ignorer.rb +1 -0
- data/lib/vcr/request_matcher_registry.rb +28 -0
- data/lib/vcr/structs.rb +245 -38
- data/lib/vcr/test_frameworks/cucumber.rb +10 -0
- data/lib/vcr/test_frameworks/rspec.rb +26 -1
- data/lib/vcr/util/hooks.rb +29 -27
- data/lib/vcr/util/internet_connection.rb +2 -0
- data/lib/vcr/util/logger.rb +25 -0
- data/lib/vcr/util/variable_args_block_caller.rb +1 -0
- data/lib/vcr/util/version_checker.rb +1 -0
- data/lib/vcr/version.rb +8 -1
- data/spec/capture_warnings.rb +3 -3
- data/spec/monkey_patches.rb +28 -13
- data/spec/spec_helper.rb +17 -0
- data/spec/support/http_library_adapters.rb +7 -4
- data/spec/support/shared_example_groups/hook_into_http_library.rb +96 -32
- data/spec/support/shared_example_groups/request_hooks.rb +9 -8
- data/spec/support/sinatra_app.rb +3 -1
- data/spec/support/vcr_localhost_server.rb +1 -0
- data/spec/vcr/cassette/http_interaction_list_spec.rb +119 -54
- data/spec/vcr/cassette/migrator_spec.rb +19 -6
- data/spec/vcr/cassette/serializers_spec.rb +51 -6
- data/spec/vcr/cassette_spec.rb +44 -19
- data/spec/vcr/configuration_spec.rb +91 -6
- data/spec/vcr/library_hooks/excon_spec.rb +54 -16
- data/spec/vcr/library_hooks/fakeweb_spec.rb +12 -21
- data/spec/vcr/library_hooks/typhoeus_spec.rb +2 -29
- data/spec/vcr/library_hooks/webmock_spec.rb +4 -18
- data/spec/vcr/middleware/faraday_spec.rb +1 -16
- data/spec/vcr/structs_spec.rb +194 -61
- data/spec/vcr/test_frameworks/rspec_spec.rb +10 -0
- data/spec/vcr/util/hooks_spec.rb +104 -56
- data/spec/vcr/util/version_checker_spec.rb +45 -0
- data/spec/vcr_spec.rb +11 -0
- data/vcr.gemspec +30 -34
- metadata +149 -95
- data/spec/support/shared_example_groups/version_checking.rb +0 -34
data/features/.nav
CHANGED
@@ -13,22 +13,26 @@ Feature: Automatic Re-recording
|
|
13
13
|
Background:
|
14
14
|
Given a previously recorded cassette file "cassettes/example.yml" with:
|
15
15
|
"""
|
16
|
-
---
|
17
|
-
http_interactions:
|
18
|
-
- request:
|
16
|
+
---
|
17
|
+
http_interactions:
|
18
|
+
- request:
|
19
19
|
method: get
|
20
20
|
uri: http://localhost:7777/
|
21
|
-
body:
|
21
|
+
body:
|
22
|
+
encoding: UTF-8
|
23
|
+
string: ""
|
22
24
|
headers: {}
|
23
|
-
response:
|
24
|
-
status:
|
25
|
+
response:
|
26
|
+
status:
|
25
27
|
code: 200
|
26
28
|
message: OK
|
27
|
-
headers:
|
28
|
-
Content-Length:
|
29
|
-
-
|
30
|
-
body:
|
31
|
-
|
29
|
+
headers:
|
30
|
+
Content-Length:
|
31
|
+
- "12"
|
32
|
+
body:
|
33
|
+
encoding: UTF-8
|
34
|
+
string: Old Response
|
35
|
+
http_version: "1.1"
|
32
36
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
33
37
|
recorded_with: VCR 2.0.0
|
34
38
|
"""
|
@@ -55,14 +59,14 @@ Feature: Automatic Re-recording
|
|
55
59
|
When I run `ruby re_record.rb`
|
56
60
|
Then the output should contain "Old Response"
|
57
61
|
But the output should not contain "New Response"
|
58
|
-
And the file "cassettes/example.yml" should contain "
|
59
|
-
But the file "cassettes/example.yml" should not contain "
|
62
|
+
And the file "cassettes/example.yml" should contain "Old Response"
|
63
|
+
But the file "cassettes/example.yml" should not contain "New Response"
|
60
64
|
|
61
65
|
Scenario: Cassette is re-recorded when enough time has passed
|
62
66
|
Given it is Tue, 09 Nov 2011
|
63
67
|
When I run `ruby re_record.rb`
|
64
68
|
Then the output should contain "New Response"
|
65
69
|
But the output should not contain "Old Response"
|
66
|
-
And the file "cassettes/example.yml" should contain "
|
67
|
-
But the file "cassettes/example.yml" should not contain "
|
70
|
+
And the file "cassettes/example.yml" should contain "New Response"
|
71
|
+
But the file "cassettes/example.yml" should not contain "Old Response"
|
68
72
|
|
@@ -17,7 +17,9 @@ Feature: Dynamic ERB cassettes
|
|
17
17
|
- request:
|
18
18
|
method: get
|
19
19
|
uri: http://example.com/foo?a=<%= 'b' * 3 %>
|
20
|
-
body:
|
20
|
+
body:
|
21
|
+
encoding: UTF-8
|
22
|
+
string: ''
|
21
23
|
headers: {}
|
22
24
|
response:
|
23
25
|
status:
|
@@ -28,7 +30,9 @@ Feature: Dynamic ERB cassettes
|
|
28
30
|
- text/html;charset=utf-8
|
29
31
|
Content-Length:
|
30
32
|
- '9'
|
31
|
-
body:
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: Hello <%= 'bar'.next %>
|
32
36
|
http_version: '1.1'
|
33
37
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
34
38
|
recorded_with: VCR 2.0.0
|
@@ -58,7 +62,9 @@ Feature: Dynamic ERB cassettes
|
|
58
62
|
- request:
|
59
63
|
method: get
|
60
64
|
uri: http://example.com/foo?a=<%= arg1 %>
|
61
|
-
body:
|
65
|
+
body:
|
66
|
+
encoding: UTF-8
|
67
|
+
string: ''
|
62
68
|
headers: {}
|
63
69
|
response:
|
64
70
|
status:
|
@@ -69,7 +75,9 @@ Feature: Dynamic ERB cassettes
|
|
69
75
|
- text/html;charset=utf-8
|
70
76
|
Content-Length:
|
71
77
|
- '9'
|
72
|
-
body:
|
78
|
+
body:
|
79
|
+
encoding: UTF-8
|
80
|
+
string: Hello <%= arg2 %>
|
73
81
|
http_version: '1.1'
|
74
82
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
75
83
|
recorded_with: VCR 2.0.0
|
@@ -17,43 +17,51 @@ Feature: exclusive cassette
|
|
17
17
|
Background:
|
18
18
|
Given a previously recorded cassette file "cassettes/outer.yml" with:
|
19
19
|
"""
|
20
|
-
---
|
21
|
-
http_interactions:
|
22
|
-
- request:
|
20
|
+
---
|
21
|
+
http_interactions:
|
22
|
+
- request:
|
23
23
|
method: get
|
24
24
|
uri: http://localhost:7777/outer
|
25
|
-
body:
|
25
|
+
body:
|
26
|
+
encoding: UTF-8
|
27
|
+
string: ""
|
26
28
|
headers: {}
|
27
|
-
response:
|
28
|
-
status:
|
29
|
+
response:
|
30
|
+
status:
|
29
31
|
code: 200
|
30
32
|
message: OK
|
31
|
-
headers:
|
32
|
-
Content-Length:
|
33
|
-
-
|
34
|
-
body:
|
35
|
-
|
33
|
+
headers:
|
34
|
+
Content-Length:
|
35
|
+
- "18"
|
36
|
+
body:
|
37
|
+
encoding: UTF-8
|
38
|
+
string: Old outer response
|
39
|
+
http_version: "1.1"
|
36
40
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
37
41
|
recorded_with: VCR 2.0.0
|
38
42
|
"""
|
39
43
|
And a previously recorded cassette file "cassettes/inner.yml" with:
|
40
44
|
"""
|
41
|
-
---
|
42
|
-
http_interactions:
|
43
|
-
- request:
|
45
|
+
---
|
46
|
+
http_interactions:
|
47
|
+
- request:
|
44
48
|
method: get
|
45
49
|
uri: http://localhost:7777/inner
|
46
|
-
body:
|
50
|
+
body:
|
51
|
+
encoding: UTF-8
|
52
|
+
string: ""
|
47
53
|
headers: {}
|
48
|
-
response:
|
49
|
-
status:
|
54
|
+
response:
|
55
|
+
status:
|
50
56
|
code: 200
|
51
57
|
message: OK
|
52
|
-
headers:
|
53
|
-
Content-Length:
|
54
|
-
-
|
55
|
-
body:
|
56
|
-
|
58
|
+
headers:
|
59
|
+
Content-Length:
|
60
|
+
- "18"
|
61
|
+
body:
|
62
|
+
encoding: UTF-8
|
63
|
+
string: Old inner response
|
64
|
+
http_version: "1.1"
|
57
65
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
58
66
|
recorded_with: VCR 2.0.0
|
59
67
|
"""
|
@@ -111,5 +119,5 @@ Feature: exclusive cassette
|
|
111
119
|
New outer response
|
112
120
|
Old inner response
|
113
121
|
"""
|
114
|
-
And the file "cassettes/inner.yml" should contain "
|
122
|
+
And the file "cassettes/inner.yml" should contain "New outer response"
|
115
123
|
|
@@ -9,6 +9,8 @@ Feature: Cassette format
|
|
9
9
|
- method
|
10
10
|
- uri
|
11
11
|
- body
|
12
|
+
- encoding
|
13
|
+
- string
|
12
14
|
- headers
|
13
15
|
- response
|
14
16
|
- status
|
@@ -16,6 +18,8 @@ Feature: Cassette format
|
|
16
18
|
- message
|
17
19
|
- headers
|
18
20
|
- body
|
21
|
+
- encoding
|
22
|
+
- string
|
19
23
|
- http version
|
20
24
|
|
21
25
|
By default, VCR uses YAML to serialize this data. You can configure
|
@@ -72,41 +76,49 @@ Feature: Cassette format
|
|
72
76
|
When I run `ruby cassette_yaml.rb 'Hello'`
|
73
77
|
Then the file "cassettes/example.yml" should contain YAML like:
|
74
78
|
"""
|
75
|
-
---
|
76
|
-
http_interactions:
|
77
|
-
- request:
|
79
|
+
---
|
80
|
+
http_interactions:
|
81
|
+
- request:
|
78
82
|
method: get
|
79
83
|
uri: http://localhost:7777/foo
|
80
|
-
body:
|
84
|
+
body:
|
85
|
+
encoding: UTF-8
|
86
|
+
string: ""
|
81
87
|
headers: {}
|
82
|
-
response:
|
83
|
-
status:
|
88
|
+
response:
|
89
|
+
status:
|
84
90
|
code: 200
|
85
91
|
message: OK
|
86
|
-
headers:
|
87
|
-
Content-Type:
|
92
|
+
headers:
|
93
|
+
Content-Type:
|
88
94
|
- text/html;charset=utf-8
|
89
|
-
Content-Length:
|
90
|
-
-
|
91
|
-
body:
|
92
|
-
|
95
|
+
Content-Length:
|
96
|
+
- "9"
|
97
|
+
body:
|
98
|
+
encoding: UTF-8
|
99
|
+
string: Hello foo
|
100
|
+
http_version: "1.1"
|
93
101
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
94
|
-
- request:
|
102
|
+
- request:
|
95
103
|
method: get
|
96
104
|
uri: http://localhost:7777/bar
|
97
|
-
body:
|
105
|
+
body:
|
106
|
+
encoding: UTF-8
|
107
|
+
string: ""
|
98
108
|
headers: {}
|
99
|
-
response:
|
100
|
-
status:
|
109
|
+
response:
|
110
|
+
status:
|
101
111
|
code: 200
|
102
112
|
message: OK
|
103
|
-
headers:
|
104
|
-
Content-Type:
|
113
|
+
headers:
|
114
|
+
Content-Type:
|
105
115
|
- text/html;charset=utf-8
|
106
|
-
Content-Length:
|
107
|
-
-
|
108
|
-
body:
|
109
|
-
|
116
|
+
Content-Length:
|
117
|
+
- "9"
|
118
|
+
body:
|
119
|
+
encoding: UTF-8
|
120
|
+
string: Hello bar
|
121
|
+
http_version: "1.1"
|
110
122
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
111
123
|
recorded_with: VCR 2.0.0
|
112
124
|
"""
|
@@ -152,7 +164,10 @@ Feature: Cassette format
|
|
152
164
|
"http_interactions": [
|
153
165
|
{
|
154
166
|
"response": {
|
155
|
-
"body":
|
167
|
+
"body": {
|
168
|
+
"encoding": "UTF-8",
|
169
|
+
"string": "Hello foo"
|
170
|
+
},
|
156
171
|
"http_version": null,
|
157
172
|
"status": { "code": 200, "message": "OK" },
|
158
173
|
"headers": {
|
@@ -165,7 +180,10 @@ Feature: Cassette format
|
|
165
180
|
},
|
166
181
|
"request": {
|
167
182
|
"uri": "http://localhost:7777/foo",
|
168
|
-
"body":
|
183
|
+
"body": {
|
184
|
+
"encoding": "UTF-8",
|
185
|
+
"string": ""
|
186
|
+
},
|
169
187
|
"method": "get",
|
170
188
|
"headers": { }
|
171
189
|
},
|
@@ -173,7 +191,10 @@ Feature: Cassette format
|
|
173
191
|
},
|
174
192
|
{
|
175
193
|
"response": {
|
176
|
-
"body":
|
194
|
+
"body": {
|
195
|
+
"encoding": "UTF-8",
|
196
|
+
"string": "Hello bar"
|
197
|
+
},
|
177
198
|
"http_version": null,
|
178
199
|
"status": { "code": 200, "message": "OK" },
|
179
200
|
"headers": {
|
@@ -186,7 +207,10 @@ Feature: Cassette format
|
|
186
207
|
},
|
187
208
|
"request": {
|
188
209
|
"uri": "http://localhost:7777/bar",
|
189
|
-
"body":
|
210
|
+
"body": {
|
211
|
+
"encoding": "UTF-8",
|
212
|
+
"string": ""
|
213
|
+
},
|
190
214
|
"method": "get",
|
191
215
|
"headers": { }
|
192
216
|
},
|
@@ -241,7 +265,7 @@ Feature: Cassette format
|
|
241
265
|
[{"request"=>
|
242
266
|
{"method"=>"get",
|
243
267
|
"uri"=>"http://localhost:7777/foo",
|
244
|
-
"body"=>"",
|
268
|
+
"body"=>{"encoding"=>"UTF-8", "string"=>""},
|
245
269
|
"headers"=>{"Accept"=>["*/*"], "User-Agent"=>["Ruby"]}},
|
246
270
|
"response"=>
|
247
271
|
{"status"=>{"code"=>200, "message"=>"OK "},
|
@@ -249,13 +273,13 @@ Feature: Cassette format
|
|
249
273
|
{"Content-Type"=>["text/html;charset=utf-8"],
|
250
274
|
"Content-Length"=>["9"],
|
251
275
|
"Connection"=>["Keep-Alive"]},
|
252
|
-
"body"=>"Hello foo",
|
276
|
+
"body"=>{"encoding"=>"UTF-8", "string"=>"Hello foo"},
|
253
277
|
"http_version"=>nil},
|
254
278
|
"recorded_at"=>"Tue, 01 Nov 2011 04:58:44 GMT"},
|
255
279
|
{"request"=>
|
256
280
|
{"method"=>"get",
|
257
281
|
"uri"=>"http://localhost:7777/bar",
|
258
|
-
"body"=>"",
|
282
|
+
"body"=>{"encoding"=>"UTF-8", "string"=>""},
|
259
283
|
"headers"=>{"Accept"=>["*/*"], "User-Agent"=>["Ruby"]}},
|
260
284
|
"response"=>
|
261
285
|
{"status"=>{"code"=>200, "message"=>"OK "},
|
@@ -263,7 +287,7 @@ Feature: Cassette format
|
|
263
287
|
{"Content-Type"=>["text/html;charset=utf-8"],
|
264
288
|
"Content-Length"=>["9"],
|
265
289
|
"Connection"=>["Keep-Alive"]},
|
266
|
-
"body"=>"Hello bar",
|
290
|
+
"body"=>{"encoding"=>"UTF-8", "string"=>"Hello bar"},
|
267
291
|
"http_version"=>nil},
|
268
292
|
"recorded_at"=>"Tue, 01 Nov 2011 04:58:44 GMT"}],
|
269
293
|
"recorded_with"=>"VCR 2.0.0"}
|
@@ -21,24 +21,28 @@ Feature: Update content_length header
|
|
21
21
|
Background:
|
22
22
|
Given a previously recorded cassette file "cassettes/example.yml" with:
|
23
23
|
"""
|
24
|
-
---
|
25
|
-
http_interactions:
|
26
|
-
- request:
|
24
|
+
---
|
25
|
+
http_interactions:
|
26
|
+
- request:
|
27
27
|
method: get
|
28
28
|
uri: http://example.com/
|
29
|
-
body:
|
29
|
+
body:
|
30
|
+
encoding: UTF-8
|
31
|
+
string: ""
|
30
32
|
headers: {}
|
31
|
-
response:
|
32
|
-
status:
|
33
|
+
response:
|
34
|
+
status:
|
33
35
|
code: 200
|
34
36
|
message: OK
|
35
|
-
headers:
|
36
|
-
Content-Type:
|
37
|
+
headers:
|
38
|
+
Content-Type:
|
37
39
|
- text/html;charset=utf-8
|
38
|
-
Content-Length:
|
39
|
-
-
|
40
|
-
body:
|
41
|
-
|
40
|
+
Content-Length:
|
41
|
+
- "11"
|
42
|
+
body:
|
43
|
+
encoding: UTF-8
|
44
|
+
string: Hello <modified>
|
45
|
+
http_version: "1.1"
|
42
46
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
43
47
|
recorded_with: VCR 2.0.0
|
44
48
|
"""
|
@@ -45,7 +45,7 @@ Feature: Allow HTTP connections when no cassette
|
|
45
45
|
"""
|
46
46
|
When I run `ruby record_replay_cassette.rb --with-server`
|
47
47
|
Then the output should contain "Response: Hello"
|
48
|
-
And the file "cassettes/localhost.yml" should contain "
|
48
|
+
And the file "cassettes/localhost.yml" should contain "Hello"
|
49
49
|
|
50
50
|
When I run `ruby record_replay_cassette.rb`
|
51
51
|
Then the output should contain "Response: Hello"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
@exclude-18
|
2
|
+
Feature: Debug Logging
|
3
|
+
|
4
|
+
Use the `debug_logger` option to set an IO-like object that VCR will log
|
5
|
+
debug output to. This is a useful way to troubleshoot what VCR is doing.
|
6
|
+
|
7
|
+
The debug logger must respond to `#puts`.
|
8
|
+
|
9
|
+
Scenario: Use the debug logger for troubleshooting
|
10
|
+
Given a file named "debug_logger.rb" with:
|
11
|
+
"""ruby
|
12
|
+
if ARGV.include?('--with-server')
|
13
|
+
start_sinatra_app(:port => 7777) do
|
14
|
+
get('/') { "Hello World" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'vcr'
|
19
|
+
|
20
|
+
VCR.configure do |c|
|
21
|
+
c.hook_into :fakeweb
|
22
|
+
c.cassette_library_dir = 'cassettes'
|
23
|
+
c.debug_logger = File.open(ARGV.first, 'w')
|
24
|
+
end
|
25
|
+
|
26
|
+
VCR.use_cassette('example') do
|
27
|
+
Net::HTTP.get_response(URI("http://localhost:7777/"))
|
28
|
+
end
|
29
|
+
"""
|
30
|
+
When I run `ruby debug_logger.rb record.log --with-server`
|
31
|
+
Then the file "record.log" should contain exactly:
|
32
|
+
"""
|
33
|
+
[Cassette: 'example'] Initialized with options: {:record=>:once, :match_requests_on=>[:method, :uri], :serialize_with=>:yaml}
|
34
|
+
[fakeweb] Handling request: [get http://localhost:7777/] (disabled: false)
|
35
|
+
[Cassette: 'example'] Initialized HTTPInteractionList with request matchers [:method, :uri] and 0 interaction(s): { }
|
36
|
+
[fakeweb] Identified request type (recordable) for [get http://localhost:7777/]
|
37
|
+
[Cassette: 'example'] Recorded HTTP interaction [get http://localhost:7777/] => [200 "Hello World"]
|
38
|
+
|
39
|
+
"""
|
40
|
+
When I run `ruby debug_logger.rb playback.log`
|
41
|
+
Then the file "playback.log" should contain exactly:
|
42
|
+
"""
|
43
|
+
[Cassette: 'example'] Initialized with options: {:record=>:once, :match_requests_on=>[:method, :uri], :serialize_with=>:yaml}
|
44
|
+
[fakeweb] Handling request: [get http://localhost:7777/] (disabled: false)
|
45
|
+
[Cassette: 'example'] Initialized HTTPInteractionList with request matchers [:method, :uri] and 1 interaction(s): { [get http://localhost:7777/] => [200 "Hello World"] }
|
46
|
+
[Cassette: 'example'] Checking if [get http://localhost:7777/] matches [get http://localhost:7777/] using [:method, :uri]
|
47
|
+
[Cassette: 'example'] method (matched): current request [get http://localhost:7777/] vs [get http://localhost:7777/]
|
48
|
+
[Cassette: 'example'] uri (matched): current request [get http://localhost:7777/] vs [get http://localhost:7777/]
|
49
|
+
[Cassette: 'example'] Found matching interaction for [get http://localhost:7777/] at index 0: [200 "Hello World"]
|
50
|
+
[fakeweb] Identified request type (stubbed) for [get http://localhost:7777/]
|
51
|
+
|
52
|
+
"""
|