vcr 2.0.0.rc1 → 2.0.0.rc2
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.
- 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
|
"""
|