vcr 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. data/.document +5 -0
  2. data/.gitignore +27 -0
  3. data/CHANGELOG.md +13 -0
  4. data/Gemfile +24 -0
  5. data/Gemfile.lock +119 -0
  6. data/README.md +3 -6
  7. data/Rakefile +70 -0
  8. data/benchmarks/http_stubbing_libraries.rb +59 -0
  9. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/regex_cassette.yml +43 -0
  10. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette1.yml +43 -0
  11. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette2.yml +63 -0
  12. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette3.yml +85 -0
  13. data/features/fixtures/vcr_cassettes/1.9.1/erb_cassette.yml +36 -0
  14. data/features/fixtures/vcr_cassettes/1.9.1/match_requests_on.yml +35 -0
  15. data/features/fixtures/vcr_cassettes/1.9.1/nested_replay_cassette.yml +32 -0
  16. data/features/fixtures/vcr_cassettes/1.9.1/not_the_real_response.yml +43 -0
  17. data/features/fixtures/vcr_cassettes/1.9.1/replay_localhost_cassette.yml +32 -0
  18. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/regex_cassette.yml +43 -0
  19. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette1.yml +43 -0
  20. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette2.yml +47 -0
  21. data/features/fixtures/vcr_cassettes/not_1.9.1/cucumber_tags/replay_cassette3.yml +85 -0
  22. data/features/fixtures/vcr_cassettes/not_1.9.1/erb_cassette.yml +36 -0
  23. data/features/fixtures/vcr_cassettes/not_1.9.1/match_requests_on.yml +35 -0
  24. data/features/fixtures/vcr_cassettes/not_1.9.1/nested_replay_cassette.yml +24 -0
  25. data/features/fixtures/vcr_cassettes/not_1.9.1/not_the_real_response.yml +43 -0
  26. data/features/fixtures/vcr_cassettes/not_1.9.1/replay_localhost_cassette.yml +32 -0
  27. data/features/http_client.feature +16 -0
  28. data/features/net_http.feature +27 -0
  29. data/features/record_response.feature +66 -0
  30. data/features/replay_recorded_response.feature +96 -0
  31. data/features/step_definitions/http_client_steps.rb +7 -0
  32. data/features/step_definitions/net_http_steps.rb +37 -0
  33. data/features/step_definitions/vcr_steps.rb +240 -0
  34. data/features/support/env.rb +104 -0
  35. data/features/webmock.feature +26 -0
  36. data/lib/vcr.rb +2 -2
  37. data/lib/vcr/extensions/net_http.rb +0 -8
  38. data/lib/vcr/http_stubbing_adapters/common.rb +39 -0
  39. data/lib/vcr/http_stubbing_adapters/fakeweb.rb +74 -70
  40. data/lib/vcr/http_stubbing_adapters/webmock.rb +61 -62
  41. data/lib/vcr/version.rb +1 -1
  42. data/spec/cassette_spec.rb +280 -0
  43. data/spec/config_spec.rb +76 -0
  44. data/spec/cucumber_tags_spec.rb +55 -0
  45. data/spec/deprecations_spec.rb +52 -0
  46. data/spec/extensions/net_http_response_spec.rb +85 -0
  47. data/spec/extensions/net_http_spec.rb +77 -0
  48. data/spec/fixtures/1.9.1/0_3_1_cassette.yml +29 -0
  49. data/spec/fixtures/1.9.1/cassette_spec/erb_with_no_vars.yml +32 -0
  50. data/spec/fixtures/1.9.1/cassette_spec/erb_with_vars.yml +32 -0
  51. data/spec/fixtures/1.9.1/cassette_spec/example.yml +110 -0
  52. data/spec/fixtures/1.9.1/cassette_spec/with_localhost_requests.yml +86 -0
  53. data/spec/fixtures/1.9.1/example_net_http.yml +14 -0
  54. data/spec/fixtures/1.9.1/example_net_http_request.yml +12 -0
  55. data/spec/fixtures/1.9.1/example_net_http_response.yml +25 -0
  56. data/spec/fixtures/1.9.1/fake_example.com_responses.yml +106 -0
  57. data/spec/fixtures/1.9.1/match_requests_on.yml +185 -0
  58. data/spec/fixtures/not_1.9.1/0_3_1_cassette.yml +29 -0
  59. data/spec/fixtures/not_1.9.1/cassette_spec/erb_with_no_vars.yml +32 -0
  60. data/spec/fixtures/not_1.9.1/cassette_spec/erb_with_vars.yml +32 -0
  61. data/spec/fixtures/not_1.9.1/cassette_spec/example.yml +110 -0
  62. data/spec/fixtures/not_1.9.1/cassette_spec/with_localhost_requests.yml +86 -0
  63. data/spec/fixtures/not_1.9.1/example_net_http.yml +14 -0
  64. data/spec/fixtures/not_1.9.1/example_net_http_request.yml +12 -0
  65. data/spec/fixtures/not_1.9.1/example_net_http_response.yml +25 -0
  66. data/spec/fixtures/not_1.9.1/fake_example.com_responses.yml +106 -0
  67. data/spec/fixtures/not_1.9.1/match_requests_on.yml +185 -0
  68. data/spec/http_stubbing_adapters/fakeweb_spec.rb +35 -0
  69. data/spec/http_stubbing_adapters/webmock_spec.rb +35 -0
  70. data/spec/request_matcher_spec.rb +194 -0
  71. data/spec/spec_helper.rb +40 -0
  72. data/spec/structs_spec.rb +121 -0
  73. data/spec/support/disable_warnings.rb +12 -0
  74. data/spec/support/http_library_adapters.rb +272 -0
  75. data/spec/support/http_stubbing_adapter.rb +100 -0
  76. data/spec/support/pending_on_heroku.rb +14 -0
  77. data/spec/support/temp_cassette_library_dir.rb +16 -0
  78. data/spec/support/vcr_localhost_server.rb +53 -0
  79. data/spec/vcr_spec.rb +198 -0
  80. data/spec/version_spec.rb +11 -0
  81. data/vcr.gemspec +43 -0
  82. metadata +134 -73
  83. data/lib/vcr/http_stubbing_adapters/base.rb +0 -36
  84. data/lib/vcr/version.rbc +0 -572
@@ -0,0 +1,29 @@
1
+ ---
2
+ - !ruby/struct:VCR::RecordedResponse
3
+ method: :post
4
+ uri: http://example.com:80/
5
+ response: !ruby/object:Net::HTTPOK
6
+ body: The response from example.com
7
+ body_exist: true
8
+ code: "200"
9
+ header:
10
+ etag:
11
+ - "\"24ec5-1b6-4059a80bfd280\""
12
+ last-modified:
13
+ - Tue, 15 Nov 2005 13:24:10 GMT
14
+ content-type:
15
+ - text/html; charset=UTF-8
16
+ connection:
17
+ - close
18
+ server:
19
+ - Apache/2.2.3 (CentOS)
20
+ date:
21
+ - Wed, 31 Mar 2010 02:43:26 GMT
22
+ content-length:
23
+ - "438"
24
+ accept-ranges:
25
+ - bytes
26
+ http_version: "1.1"
27
+ message: OK
28
+ read: true
29
+ socket:
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://example.com:80/
6
+ body:
7
+ headers:
8
+ response: !ruby/struct:VCR::Response
9
+ status: !ruby/struct:VCR::ResponseStatus
10
+ code: 200
11
+ message: OK
12
+ headers:
13
+ etag:
14
+ - "\"24ec5-1b6-4059a80bfd280\""
15
+ last-modified:
16
+ - Tue, 15 Nov 2005 13:24:10 GMT
17
+ connection:
18
+ - Keep-Alive
19
+ content-type:
20
+ - text/html; charset=UTF-8
21
+ date:
22
+ - Thu, 25 Feb 2010 07:53:51 GMT
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ content-length:
26
+ - "438"
27
+ age:
28
+ - "9260"
29
+ accept-ranges:
30
+ - bytes
31
+ body: "sum: <%= 1 + 2 %>"
32
+ http_version: "1.1"
@@ -0,0 +1,32 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://example.com:80/
6
+ body:
7
+ headers:
8
+ response: !ruby/struct:VCR::Response
9
+ status: !ruby/struct:VCR::ResponseStatus
10
+ code: 200
11
+ message: OK
12
+ headers:
13
+ etag:
14
+ - "\"24ec5-1b6-4059a80bfd280\""
15
+ last-modified:
16
+ - Tue, 15 Nov 2005 13:24:10 GMT
17
+ connection:
18
+ - Keep-Alive
19
+ content-type:
20
+ - text/html; charset=UTF-8
21
+ date:
22
+ - Thu, 25 Feb 2010 07:53:51 GMT
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ content-length:
26
+ - "438"
27
+ age:
28
+ - "9260"
29
+ accept-ranges:
30
+ - bytes
31
+ body: "var1: <%= var1 %>; var2: <%= var2 %>; var3: <%= var3 %>"
32
+ http_version: "1.1"
@@ -0,0 +1,110 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://example.com:80/
6
+ body:
7
+ headers:
8
+ response: !ruby/struct:VCR::Response
9
+ status: !ruby/struct:VCR::ResponseStatus
10
+ code: 200
11
+ message: OK
12
+ headers:
13
+ last-modified:
14
+ - Tue, 15 Nov 2005 13:24:10 GMT
15
+ connection:
16
+ - Keep-Alive
17
+ date:
18
+ - Thu, 25 Feb 2010 07:52:38 GMT
19
+ content-type:
20
+ - text/html; charset=UTF-8
21
+ etag:
22
+ - "\"24ec5-1b6-4059a80bfd280\""
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ content-length:
26
+ - "438"
27
+ age:
28
+ - "3009"
29
+ accept-ranges:
30
+ - bytes
31
+ body: |
32
+ <HTML>
33
+ <HEAD>
34
+ <TITLE>Example Web Page</TITLE>
35
+ </HEAD>
36
+ <body>
37
+ <p>You have reached this web page by typing &quot;example.com&quot;,
38
+ &quot;example.net&quot;,
39
+ or &quot;example.org&quot; into your web browser.</p>
40
+ <p>These domain names are reserved for use in documentation and are not available
41
+ for registration. See <a href="http://www.rfc-editor.org/rfc/rfc2606.txt">RFC
42
+ 2606</a>, Section 3.</p>
43
+ </BODY>
44
+ </HTML>
45
+
46
+ http_version: "1.1"
47
+ - !ruby/struct:VCR::HTTPInteraction
48
+ request: !ruby/struct:VCR::Request
49
+ method: :get
50
+ uri: http://example.com:80/foo
51
+ body:
52
+ headers:
53
+ response: !ruby/struct:VCR::Response
54
+ status: !ruby/struct:VCR::ResponseStatus
55
+ code: 404
56
+ message: Not Found
57
+ headers:
58
+ connection:
59
+ - close
60
+ content-type:
61
+ - text/html; charset=iso-8859-1
62
+ date:
63
+ - Thu, 25 Feb 2010 07:52:38 GMT
64
+ server:
65
+ - Apache/2.2.3 (CentOS)
66
+ content-length:
67
+ - "277"
68
+ body: |
69
+ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
70
+ <html><head>
71
+ <title>404 Not Found</title>
72
+ </head><body>
73
+ <h1>Not Found</h1>
74
+ <p>The requested URL /foo was not found on this server.</p>
75
+ <hr>
76
+ <address>Apache/2.2.3 (CentOS) Server at example.com Port 80</address>
77
+ </body></html>
78
+
79
+ http_version: "1.1"
80
+ - !ruby/struct:VCR::HTTPInteraction
81
+ request: !ruby/struct:VCR::Request
82
+ method: :get
83
+ uri: http://example.com:80/
84
+ body:
85
+ headers:
86
+ response: !ruby/struct:VCR::Response
87
+ status: !ruby/struct:VCR::ResponseStatus
88
+ code: 200
89
+ message: OK
90
+ headers:
91
+ last-modified:
92
+ - Tue, 15 Nov 2005 13:24:10 GMT
93
+ connection:
94
+ - Keep-Alive
95
+ date:
96
+ - Thu, 25 Feb 2010 07:52:38 GMT
97
+ content-type:
98
+ - text/html; charset=UTF-8
99
+ etag:
100
+ - "\"24ec5-1b6-4059a80bfd280\""
101
+ server:
102
+ - Apache/2.2.3 (CentOS)
103
+ content-length:
104
+ - "438"
105
+ age:
106
+ - "3009"
107
+ accept-ranges:
108
+ - bytes
109
+ body: Another example.com response
110
+ http_version: "1.1"
@@ -0,0 +1,86 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://localhost:80/
6
+ body:
7
+ headers:
8
+ response: !ruby/struct:VCR::Response
9
+ status: !ruby/struct:VCR::ResponseStatus
10
+ code: 200
11
+ message: OK
12
+ headers:
13
+ etag:
14
+ - "\"24ec5-1b6-4059a80bfd280\""
15
+ last-modified:
16
+ - Tue, 15 Nov 2005 13:24:10 GMT
17
+ connection:
18
+ - Keep-Alive
19
+ content-type:
20
+ - text/html; charset=UTF-8
21
+ date:
22
+ - Thu, 25 Feb 2010 07:53:51 GMT
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ content-length:
26
+ - "438"
27
+ age:
28
+ - "9260"
29
+ accept-ranges:
30
+ - bytes
31
+ body: Localhost response
32
+ http_version: "1.1"
33
+ - !ruby/struct:VCR::HTTPInteraction
34
+ request: !ruby/struct:VCR::Request
35
+ method: :get
36
+ uri: http://127.0.0.1:80/
37
+ body:
38
+ headers:
39
+ response: !ruby/struct:VCR::Response
40
+ status: !ruby/struct:VCR::ResponseStatus
41
+ code: 404
42
+ message: Not Found
43
+ headers:
44
+ content-type:
45
+ - text/html; charset=iso-8859-1
46
+ connection:
47
+ - close
48
+ server:
49
+ - Apache/2.2.3 (CentOS)
50
+ date:
51
+ - Thu, 25 Feb 2010 07:53:52 GMT
52
+ content-length:
53
+ - "277"
54
+ body: 127.0.0.1 response
55
+ http_version: "1.1"
56
+ - !ruby/struct:VCR::HTTPInteraction
57
+ request: !ruby/struct:VCR::Request
58
+ method: :get
59
+ uri: http://example.com:80/
60
+ body:
61
+ headers:
62
+ response: !ruby/struct:VCR::Response
63
+ status: !ruby/struct:VCR::ResponseStatus
64
+ code: 200
65
+ message: OK
66
+ headers:
67
+ etag:
68
+ - "\"24ec5-1b6-4059a80bfd280\""
69
+ last-modified:
70
+ - Tue, 15 Nov 2005 13:24:10 GMT
71
+ connection:
72
+ - Keep-Alive
73
+ content-type:
74
+ - text/html; charset=UTF-8
75
+ date:
76
+ - Thu, 25 Feb 2010 07:53:51 GMT
77
+ server:
78
+ - Apache/2.2.3 (CentOS)
79
+ content-length:
80
+ - "438"
81
+ age:
82
+ - "9260"
83
+ accept-ranges:
84
+ - bytes
85
+ body: example.com response
86
+ http_version: "1.1"
@@ -0,0 +1,14 @@
1
+ --- !ruby/object:Net::HTTP
2
+ address: example.com
3
+ close_on_empty_response: false
4
+ curr_http_version: "1.1"
5
+ debug_output:
6
+ newimpl: true
7
+ open_timeout:
8
+ port: 80
9
+ read_timeout: 60
10
+ seems_1_0_server: false
11
+ socket:
12
+ ssl_context:
13
+ started: true
14
+ use_ssl: false
@@ -0,0 +1,12 @@
1
+ --- !ruby/object:Net::HTTP::Post
2
+ body: id=7
3
+ body_stream:
4
+ header:
5
+ accept:
6
+ - "*/*"
7
+ content-type:
8
+ - application/x-www-form-urlencoded
9
+ method: POST
10
+ path: /
11
+ request_has_body: true
12
+ response_has_body: true
@@ -0,0 +1,25 @@
1
+ --- !ruby/object:Net::HTTPOK
2
+ body: The response from example.com
3
+ body_exist: true
4
+ code: "200"
5
+ header:
6
+ last-modified:
7
+ - Tue, 15 Nov 2005 13:24:10 GMT
8
+ connection:
9
+ - close
10
+ date:
11
+ - Wed, 31 Mar 2010 02:43:26 GMT
12
+ content-type:
13
+ - text/html; charset=UTF-8
14
+ etag:
15
+ - "\"24ec5-1b6-4059a80bfd280\""
16
+ server:
17
+ - Apache/2.2.3 (CentOS)
18
+ content-length:
19
+ - "438"
20
+ accept-ranges:
21
+ - bytes
22
+ http_version: "1.1"
23
+ message: OK
24
+ read: true
25
+ socket:
@@ -0,0 +1,106 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :post
5
+ uri: http://example.com:80/
6
+ body:
7
+ headers:
8
+ response: !ruby/struct:VCR::Response
9
+ status: !ruby/struct:VCR::ResponseStatus
10
+ code: 200
11
+ message: OK
12
+ headers:
13
+ last-modified:
14
+ - Tue, 15 Nov 2005 13:24:10 GMT
15
+ connection:
16
+ - close
17
+ etag:
18
+ - "\"24ec5-1b6-4059a80bfd280\""
19
+ content-type:
20
+ - text/html; charset=UTF-8
21
+ date:
22
+ - Wed, 31 Mar 2010 02:43:26 GMT
23
+ server:
24
+ - Apache/2.2.3 (CentOS)
25
+ content-length:
26
+ - "438"
27
+ accept-ranges:
28
+ - bytes
29
+ body: example.com post response with id=7
30
+ http_version: "1.1"
31
+ - !ruby/struct:VCR::HTTPInteraction
32
+ request: !ruby/struct:VCR::Request
33
+ method: :get
34
+ uri: http://example.com:80/foo
35
+ body:
36
+ headers:
37
+ response: !ruby/struct:VCR::Response
38
+ status: !ruby/struct:VCR::ResponseStatus
39
+ code: 200
40
+ message: OK
41
+ headers:
42
+ last-modified:
43
+ - Tue, 15 Nov 2005 13:24:10 GMT
44
+ connection:
45
+ - Keep-Alive
46
+ etag:
47
+ - "\"24ec5-1b6-4059a80bfd280\""
48
+ content-type:
49
+ - text/html; charset=UTF-8
50
+ date:
51
+ - Wed, 31 Mar 2010 02:43:23 GMT
52
+ server:
53
+ - Apache/2.2.3 (CentOS)
54
+ content-length:
55
+ - "438"
56
+ age:
57
+ - "3285"
58
+ accept-ranges:
59
+ - bytes
60
+ body: example.com get response with path=foo
61
+ http_version: "1.1"
62
+ - !ruby/struct:VCR::HTTPInteraction
63
+ request: !ruby/struct:VCR::Request
64
+ method: :post
65
+ uri: http://example.com:80/
66
+ body:
67
+ headers:
68
+ response: !ruby/struct:VCR::Response
69
+ status: !ruby/struct:VCR::ResponseStatus
70
+ code: 200
71
+ message: OK
72
+ headers:
73
+ last-modified:
74
+ - Tue, 15 Nov 2005 13:24:10 GMT
75
+ connection:
76
+ - close
77
+ etag:
78
+ - "\"24ec5-1b6-4059a80bfd280\""
79
+ content-type:
80
+ - text/html; charset=UTF-8
81
+ date:
82
+ - Wed, 31 Mar 2010 02:43:26 GMT
83
+ server:
84
+ - Apache/2.2.3 (CentOS)
85
+ content-length:
86
+ - "438"
87
+ accept-ranges:
88
+ - bytes
89
+ body: example.com post response with id=3
90
+ http_version: "1.1"
91
+ - !ruby/struct:VCR::HTTPInteraction
92
+ request: !ruby/struct:VCR::Request
93
+ method: :get
94
+ uri: http://example.com:80/two_set_cookie_headers
95
+ body:
96
+ headers:
97
+ response: !ruby/struct:VCR::Response
98
+ status: !ruby/struct:VCR::ResponseStatus
99
+ code: 200
100
+ message: OK
101
+ headers:
102
+ set-cookie:
103
+ - bar=bazz
104
+ - foo=bar
105
+ body: this respons has two set-cookie headers
106
+ http_version: "1.1"