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
@@ -33,7 +33,7 @@ Feature: Net::HTTP
|
|
33
33
|
"""
|
34
34
|
When I run `ruby vcr_net_http.rb --with-server`
|
35
35
|
Then the output should contain "VCR works with Net::HTTP posts!"
|
36
|
-
And the file "cassettes/net_http.yml" should contain "
|
36
|
+
And the file "cassettes/net_http.yml" should contain "VCR works with Net::HTTP posts!"
|
37
37
|
|
38
38
|
When I run `ruby vcr_net_http.rb`
|
39
39
|
Then the output should contain "VCR works with Net::HTTP posts!"
|
@@ -65,7 +65,7 @@ Feature: Net::HTTP
|
|
65
65
|
"""
|
66
66
|
When I run `ruby vcr_net_http.rb --with-server`
|
67
67
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
68
|
-
And the file "cassettes/net_http.yml" should contain "
|
68
|
+
And the file "cassettes/net_http.yml" should contain "VCR works with Net::HTTP gets!"
|
69
69
|
|
70
70
|
When I run `ruby vcr_net_http.rb`
|
71
71
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
@@ -97,7 +97,7 @@ Feature: Net::HTTP
|
|
97
97
|
"""
|
98
98
|
When I run `ruby vcr_net_http.rb --with-server`
|
99
99
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
100
|
-
And the file "cassettes/net_http.yml" should contain "
|
100
|
+
And the file "cassettes/net_http.yml" should contain "VCR works with Net::HTTP gets!"
|
101
101
|
|
102
102
|
When I run `ruby vcr_net_http.rb`
|
103
103
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
@@ -124,7 +124,7 @@ Feature: Net::HTTP
|
|
124
124
|
"""
|
125
125
|
When I run `ruby vcr_net_http.rb --with-server`
|
126
126
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
127
|
-
And the file "cassettes/net_http.yml" should contain "
|
127
|
+
And the file "cassettes/net_http.yml" should contain "VCR works with Net::HTTP gets!"
|
128
128
|
|
129
129
|
When I run `ruby vcr_net_http.rb`
|
130
130
|
Then the output should contain "VCR works with Net::HTTP gets!"
|
@@ -157,9 +157,9 @@ Feature: Net::HTTP
|
|
157
157
|
"""
|
158
158
|
When I run `ruby vcr_https.rb`
|
159
159
|
Then the output should contain "VCR gist"
|
160
|
-
And the file "cassettes/https.yml" should contain "
|
160
|
+
And the file "cassettes/https.yml" should contain "VCR gist"
|
161
161
|
|
162
|
-
When I modify the file "cassettes/https.yml" to replace "
|
162
|
+
When I modify the file "cassettes/https.yml" to replace "VCR gist" with "HTTPS replaying works"
|
163
163
|
And I run `ruby vcr_https.rb`
|
164
164
|
Then the output should contain "HTTPS replaying works"
|
165
165
|
|
@@ -23,6 +23,7 @@ Feature: Faraday middleware
|
|
23
23
|
require 'vcr'
|
24
24
|
|
25
25
|
VCR.configure do |c|
|
26
|
+
c.default_cassette_options = { :serialize_with => :syck }
|
26
27
|
c.cassette_library_dir = 'cassettes'
|
27
28
|
end
|
28
29
|
|
@@ -45,7 +46,7 @@ Feature: Faraday middleware
|
|
45
46
|
Response 1: Hello foo 1
|
46
47
|
Response 2: Hello foo 1
|
47
48
|
"""
|
48
|
-
And the file "cassettes/example.yml" should contain "
|
49
|
+
And the file "cassettes/example.yml" should contain "Hello foo 1"
|
49
50
|
|
50
51
|
Examples:
|
51
52
|
| adapter |
|
@@ -61,7 +61,7 @@ Feature: Rack
|
|
61
61
|
Response 1: Hello foo 1
|
62
62
|
Response 2: Hello foo 1
|
63
63
|
"""
|
64
|
-
And the file "cassettes/proxied.yml" should contain "
|
64
|
+
And the file "cassettes/proxied.yml" should contain "Hello foo 1"
|
65
65
|
|
66
66
|
Scenario: Set cassette name based on rack request env
|
67
67
|
Given a file named "proxy_server.rb" with:
|
@@ -88,5 +88,5 @@ Feature: Rack
|
|
88
88
|
Response 1: Hello foo 1
|
89
89
|
Response 2: Hello foo 1
|
90
90
|
"""
|
91
|
-
And the file "cassettes/localhost.yml" should contain "
|
91
|
+
And the file "cassettes/localhost.yml" should contain "Hello foo 1"
|
92
92
|
|
@@ -26,22 +26,26 @@ Feature: :all
|
|
26
26
|
"""
|
27
27
|
And a previously recorded cassette file "cassettes/example.yml" with:
|
28
28
|
"""
|
29
|
-
---
|
30
|
-
http_interactions:
|
31
|
-
- request:
|
29
|
+
---
|
30
|
+
http_interactions:
|
31
|
+
- request:
|
32
32
|
method: get
|
33
33
|
uri: http://localhost:7777/
|
34
|
-
body:
|
34
|
+
body:
|
35
|
+
encoding: UTF-8
|
36
|
+
string: ""
|
35
37
|
headers: {}
|
36
|
-
response:
|
37
|
-
status:
|
38
|
+
response:
|
39
|
+
status:
|
38
40
|
code: 200
|
39
41
|
message: OK
|
40
|
-
headers:
|
41
|
-
Content-Length:
|
42
|
-
-
|
43
|
-
body:
|
44
|
-
|
42
|
+
headers:
|
43
|
+
Content-Length:
|
44
|
+
- "20"
|
45
|
+
body:
|
46
|
+
encoding: UTF-8
|
47
|
+
string: old response
|
48
|
+
http_version: "1.1"
|
45
49
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
46
50
|
recorded_with: VCR 2.0.0
|
47
51
|
"""
|
@@ -58,8 +62,8 @@ Feature: :all
|
|
58
62
|
"""
|
59
63
|
When I run `ruby re_record.rb`
|
60
64
|
Then it should pass with "Response: Hello"
|
61
|
-
And the file "cassettes/example.yml" should contain "
|
62
|
-
But the file "cassettes/example.yml" should not contain "
|
65
|
+
And the file "cassettes/example.yml" should contain "Hello"
|
66
|
+
But the file "cassettes/example.yml" should not contain "old response"
|
63
67
|
|
64
68
|
Scenario: Record new request
|
65
69
|
Given a file named "record_new.rb" with:
|
@@ -74,5 +78,5 @@ Feature: :all
|
|
74
78
|
When I run `ruby record_new.rb`
|
75
79
|
Then it should pass with "Response: Goodbye"
|
76
80
|
And the file "cassettes/example.yml" should contain each of these:
|
77
|
-
|
|
78
|
-
|
|
81
|
+
| old response |
|
82
|
+
| Goodbye |
|
@@ -25,22 +25,26 @@ Feature: :new_episodes
|
|
25
25
|
"""
|
26
26
|
And a previously recorded cassette file "cassettes/example.yml" with:
|
27
27
|
"""
|
28
|
-
---
|
29
|
-
http_interactions:
|
30
|
-
- request:
|
28
|
+
---
|
29
|
+
http_interactions:
|
30
|
+
- request:
|
31
31
|
method: get
|
32
32
|
uri: http://example.com/foo
|
33
|
-
body:
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: ""
|
34
36
|
headers: {}
|
35
|
-
response:
|
36
|
-
status:
|
37
|
+
response:
|
38
|
+
status:
|
37
39
|
code: 200
|
38
40
|
message: OK
|
39
|
-
headers:
|
40
|
-
Content-Length:
|
41
|
-
-
|
42
|
-
body:
|
43
|
-
|
41
|
+
headers:
|
42
|
+
Content-Length:
|
43
|
+
- "20"
|
44
|
+
body:
|
45
|
+
encoding: UTF-8
|
46
|
+
string: example.com response
|
47
|
+
http_version: "1.1"
|
44
48
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
45
49
|
recorded_with: VCR 2.0.0
|
46
50
|
"""
|
@@ -71,5 +75,5 @@ Feature: :new_episodes
|
|
71
75
|
When I run `ruby record_new_requests.rb`
|
72
76
|
Then it should pass with "Response: Hello"
|
73
77
|
And the file "cassettes/example.yml" should contain each of these:
|
74
|
-
|
|
75
|
-
|
|
78
|
+
| example.com response |
|
79
|
+
| Hello |
|
@@ -21,22 +21,26 @@ Feature: :none
|
|
21
21
|
"""
|
22
22
|
And 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/foo
|
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-Length:
|
37
|
-
-
|
38
|
-
body:
|
39
|
-
|
37
|
+
headers:
|
38
|
+
Content-Length:
|
39
|
+
- "5"
|
40
|
+
body:
|
41
|
+
encoding: UTF-8
|
42
|
+
string: Hello
|
43
|
+
http_version: "1.1"
|
40
44
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
41
45
|
recorded_with: VCR 2.0.0
|
42
46
|
"""
|
@@ -28,22 +28,26 @@ Feature: :once
|
|
28
28
|
"""
|
29
29
|
And a previously recorded cassette file "cassettes/example.yml" with:
|
30
30
|
"""
|
31
|
-
---
|
32
|
-
http_interactions:
|
33
|
-
- request:
|
31
|
+
---
|
32
|
+
http_interactions:
|
33
|
+
- request:
|
34
34
|
method: get
|
35
35
|
uri: http://example.com/foo
|
36
|
-
body:
|
36
|
+
body:
|
37
|
+
encoding: UTF-8
|
38
|
+
string: ""
|
37
39
|
headers: {}
|
38
|
-
response:
|
39
|
-
status:
|
40
|
+
response:
|
41
|
+
status:
|
40
42
|
code: 200
|
41
43
|
message: OK
|
42
|
-
headers:
|
43
|
-
Content-Length:
|
44
|
-
-
|
45
|
-
body:
|
46
|
-
|
44
|
+
headers:
|
45
|
+
Content-Length:
|
46
|
+
- "20"
|
47
|
+
body:
|
48
|
+
encoding: UTF-8
|
49
|
+
string: example.com response
|
50
|
+
http_version: "1.1"
|
47
51
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
48
52
|
recorded_with: VCR 2.0.0
|
49
53
|
"""
|
@@ -88,4 +92,4 @@ Feature: :once
|
|
88
92
|
When I remove the file "cassettes/example.yml"
|
89
93
|
And I run `ruby record_new_requests.rb`
|
90
94
|
Then it should pass with "Response: Hello"
|
91
|
-
And the file "cassettes/example.yml" should contain "
|
95
|
+
And the file "cassettes/example.yml" should contain "Hello"
|
@@ -5,37 +5,45 @@ Feature: Matching on Body
|
|
5
5
|
Background:
|
6
6
|
Given a previously recorded cassette file "cassettes/example.yml" with:
|
7
7
|
"""
|
8
|
-
---
|
9
|
-
http_interactions:
|
10
|
-
- request:
|
8
|
+
---
|
9
|
+
http_interactions:
|
10
|
+
- request:
|
11
11
|
method: post
|
12
12
|
uri: http://example.net/some/long/path
|
13
|
-
body:
|
13
|
+
body:
|
14
|
+
encoding: UTF-8
|
15
|
+
string: body1
|
14
16
|
headers: {}
|
15
|
-
response:
|
16
|
-
status:
|
17
|
+
response:
|
18
|
+
status:
|
17
19
|
code: 200
|
18
20
|
message: OK
|
19
|
-
headers:
|
20
|
-
Content-Length:
|
21
|
-
-
|
22
|
-
body:
|
23
|
-
|
21
|
+
headers:
|
22
|
+
Content-Length:
|
23
|
+
- "14"
|
24
|
+
body:
|
25
|
+
encoding: UTF-8
|
26
|
+
string: body1 response
|
27
|
+
http_version: "1.1"
|
24
28
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
25
|
-
- request:
|
29
|
+
- request:
|
26
30
|
method: post
|
27
31
|
uri: http://example.net/some/long/path
|
28
|
-
body:
|
32
|
+
body:
|
33
|
+
encoding: UTF-8
|
34
|
+
string: body2
|
29
35
|
headers: {}
|
30
|
-
response:
|
31
|
-
status:
|
36
|
+
response:
|
37
|
+
status:
|
32
38
|
code: 200
|
33
39
|
message: OK
|
34
|
-
headers:
|
35
|
-
Content-Length:
|
36
|
-
-
|
37
|
-
body:
|
38
|
-
|
40
|
+
headers:
|
41
|
+
Content-Length:
|
42
|
+
- "14"
|
43
|
+
body:
|
44
|
+
encoding: UTF-8
|
45
|
+
string: body2 response
|
46
|
+
http_version: "1.1"
|
39
47
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
40
48
|
recorded_with: VCR 2.0.0
|
41
49
|
"""
|
@@ -15,37 +15,45 @@ Feature: Register and use a custom matcher
|
|
15
15
|
Background:
|
16
16
|
Given a previously recorded cassette file "cassettes/example.yml" with:
|
17
17
|
"""
|
18
|
-
---
|
19
|
-
http_interactions:
|
20
|
-
- request:
|
18
|
+
---
|
19
|
+
http_interactions:
|
20
|
+
- request:
|
21
21
|
method: get
|
22
22
|
uri: http://foo.com:9000/foo
|
23
|
-
body:
|
23
|
+
body:
|
24
|
+
encoding: UTF-8
|
25
|
+
string: ""
|
24
26
|
headers: {}
|
25
|
-
response:
|
26
|
-
status:
|
27
|
+
response:
|
28
|
+
status:
|
27
29
|
code: 200
|
28
30
|
message: OK
|
29
|
-
headers:
|
30
|
-
Content-Length:
|
31
|
-
-
|
32
|
-
body:
|
33
|
-
|
31
|
+
headers:
|
32
|
+
Content-Length:
|
33
|
+
- "18"
|
34
|
+
body:
|
35
|
+
encoding: UTF-8
|
36
|
+
string: port 9000 response
|
37
|
+
http_version: "1.1"
|
34
38
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
35
|
-
- request:
|
39
|
+
- request:
|
36
40
|
method: get
|
37
41
|
uri: http://foo.com:8000/foo
|
38
|
-
body:
|
42
|
+
body:
|
43
|
+
encoding: UTF-8
|
44
|
+
string: ""
|
39
45
|
headers: {}
|
40
|
-
response:
|
41
|
-
status:
|
46
|
+
response:
|
47
|
+
status:
|
42
48
|
code: 200
|
43
49
|
message: OK
|
44
|
-
headers:
|
45
|
-
Content-Length:
|
46
|
-
-
|
47
|
-
body:
|
48
|
-
|
50
|
+
headers:
|
51
|
+
Content-Length:
|
52
|
+
- "18"
|
53
|
+
body:
|
54
|
+
encoding: UTF-8
|
55
|
+
string: port 8000 response
|
56
|
+
http_version: "1.1"
|
49
57
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
50
58
|
recorded_with: VCR 2.0.0
|
51
59
|
"""
|
@@ -5,41 +5,49 @@ Feature: Matching on Headers
|
|
5
5
|
Scenario Outline: Replay interaction that matches the headers
|
6
6
|
Given a previously recorded cassette file "cassettes/example.yml" with:
|
7
7
|
"""
|
8
|
-
---
|
9
|
-
http_interactions:
|
10
|
-
- request:
|
8
|
+
---
|
9
|
+
http_interactions:
|
10
|
+
- request:
|
11
11
|
method: post
|
12
12
|
uri: http://example.net/some/long/path
|
13
|
-
body:
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
body:
|
14
|
+
encoding: UTF-8
|
15
|
+
string: ""
|
16
|
+
headers:
|
17
|
+
X-User-Id:
|
18
|
+
- "1"
|
19
|
+
response:
|
20
|
+
status:
|
19
21
|
code: 200
|
20
22
|
message: OK
|
21
|
-
headers:
|
22
|
-
Content-Length:
|
23
|
-
-
|
24
|
-
body:
|
25
|
-
|
23
|
+
headers:
|
24
|
+
Content-Length:
|
25
|
+
- "15"
|
26
|
+
body:
|
27
|
+
encoding: UTF-8
|
28
|
+
string: user 1 response
|
29
|
+
http_version: "1.1"
|
26
30
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
27
|
-
- request:
|
31
|
+
- request:
|
28
32
|
method: post
|
29
33
|
uri: http://example.net/some/long/path
|
30
|
-
body:
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
body:
|
35
|
+
encoding: UTF-8
|
36
|
+
string: ""
|
37
|
+
headers:
|
38
|
+
X-User-Id:
|
39
|
+
- "2"
|
40
|
+
response:
|
41
|
+
status:
|
36
42
|
code: 200
|
37
43
|
message: OK
|
38
|
-
headers:
|
39
|
-
Content-Length:
|
40
|
-
-
|
41
|
-
body:
|
42
|
-
|
44
|
+
headers:
|
45
|
+
Content-Length:
|
46
|
+
- "15"
|
47
|
+
body:
|
48
|
+
encoding: UTF-8
|
49
|
+
string: user 2 response
|
50
|
+
http_version: "1.1"
|
43
51
|
recorded_at: Tue, 01 Nov 2011 04:58:44 GMT
|
44
52
|
recorded_with: VCR 2.0.0
|
45
53
|
"""
|