vcr 0.4.1 → 1.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 (75) hide show
  1. data/CHANGELOG.md +34 -0
  2. data/README.md +89 -21
  3. data/lib/vcr.rb +12 -1
  4. data/lib/vcr/cassette.rb +50 -27
  5. data/lib/vcr/config.rb +9 -0
  6. data/lib/vcr/deprecations.rb +15 -42
  7. data/lib/vcr/extensions/net_http.rb +13 -20
  8. data/lib/vcr/extensions/net_http_response.rb +6 -13
  9. data/lib/vcr/http_stubbing_adapters/fakeweb.rb +21 -3
  10. data/lib/vcr/http_stubbing_adapters/webmock.rb +34 -4
  11. data/lib/vcr/version.rb +16 -0
  12. metadata +90 -108
  13. data/.document +0 -5
  14. data/.gitignore +0 -22
  15. data/Rakefile +0 -67
  16. data/VERSION +0 -1
  17. data/benchmarks/http_stubbing_libraries.rb +0 -59
  18. data/features/fixtures/vcr_cassettes/1.8.6/cucumber_tags/replay_cassette1.yml +0 -43
  19. data/features/fixtures/vcr_cassettes/1.8.6/cucumber_tags/replay_cassette2.yml +0 -47
  20. data/features/fixtures/vcr_cassettes/1.8.6/cucumber_tags/replay_cassette3.yml +0 -85
  21. data/features/fixtures/vcr_cassettes/1.8.6/nested_replay_cassette.yml +0 -24
  22. data/features/fixtures/vcr_cassettes/1.8.6/not_the_real_response.yml +0 -43
  23. data/features/fixtures/vcr_cassettes/1.8.7/cucumber_tags/replay_cassette1.yml +0 -43
  24. data/features/fixtures/vcr_cassettes/1.8.7/cucumber_tags/replay_cassette2.yml +0 -47
  25. data/features/fixtures/vcr_cassettes/1.8.7/cucumber_tags/replay_cassette3.yml +0 -85
  26. data/features/fixtures/vcr_cassettes/1.8.7/nested_replay_cassette.yml +0 -24
  27. data/features/fixtures/vcr_cassettes/1.8.7/not_the_real_response.yml +0 -43
  28. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette1.yml +0 -43
  29. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette2.yml +0 -63
  30. data/features/fixtures/vcr_cassettes/1.9.1/cucumber_tags/replay_cassette3.yml +0 -85
  31. data/features/fixtures/vcr_cassettes/1.9.1/nested_replay_cassette.yml +0 -32
  32. data/features/fixtures/vcr_cassettes/1.9.1/not_the_real_response.yml +0 -43
  33. data/features/record_response.feature +0 -77
  34. data/features/replay_recorded_response.feature +0 -69
  35. data/features/step_definitions/vcr_steps.rb +0 -144
  36. data/features/support/env.rb +0 -64
  37. data/lib/vcr/extensions/fake_web.rb +0 -20
  38. data/lib/vcr/extensions/net_read_adapter.rb +0 -22
  39. data/spec/cassette_spec.rb +0 -213
  40. data/spec/config_spec.rb +0 -49
  41. data/spec/cucumber_tags_spec.rb +0 -71
  42. data/spec/deprecations_spec.rb +0 -67
  43. data/spec/extensions/net_http_response_spec.rb +0 -86
  44. data/spec/extensions/net_http_spec.rb +0 -72
  45. data/spec/extensions/net_read_adapter_spec.rb +0 -10
  46. data/spec/fixtures/1.8.6/0_3_1_cassette.yml +0 -29
  47. data/spec/fixtures/1.8.6/cassette_spec/example.yml +0 -110
  48. data/spec/fixtures/1.8.6/example_net_http.yml +0 -14
  49. data/spec/fixtures/1.8.6/example_net_http_request.yml +0 -12
  50. data/spec/fixtures/1.8.6/example_net_http_response.yml +0 -25
  51. data/spec/fixtures/1.8.6/fake_example.com_responses.yml +0 -90
  52. data/spec/fixtures/1.8.7/0_3_1_cassette.yml +0 -29
  53. data/spec/fixtures/1.8.7/cassette_spec/example.yml +0 -110
  54. data/spec/fixtures/1.8.7/example_net_http.yml +0 -14
  55. data/spec/fixtures/1.8.7/example_net_http_request.yml +0 -12
  56. data/spec/fixtures/1.8.7/example_net_http_response.yml +0 -25
  57. data/spec/fixtures/1.8.7/fake_example.com_responses.yml +0 -90
  58. data/spec/fixtures/1.9.1/0_3_1_cassette.yml +0 -29
  59. data/spec/fixtures/1.9.1/cassette_spec/example.yml +0 -110
  60. data/spec/fixtures/1.9.1/example_net_http.yml +0 -14
  61. data/spec/fixtures/1.9.1/example_net_http_request.yml +0 -12
  62. data/spec/fixtures/1.9.1/example_net_http_response.yml +0 -25
  63. data/spec/fixtures/1.9.1/fake_example.com_responses.yml +0 -90
  64. data/spec/http_stubbing_adapters/fakeweb_spec.rb +0 -24
  65. data/spec/http_stubbing_adapters/webmock_spec.rb +0 -23
  66. data/spec/spec.opts +0 -2
  67. data/spec/spec_helper.rb +0 -35
  68. data/spec/structs_spec.rb +0 -95
  69. data/spec/support/deprecated.rb +0 -18
  70. data/spec/support/disable_warnings.rb +0 -12
  71. data/spec/support/http_stubbing_adapter.rb +0 -113
  72. data/spec/support/temp_cassette_library_dir.rb +0 -16
  73. data/spec/task_runner_spec.rb +0 -59
  74. data/spec/vcr_spec.rb +0 -119
  75. data/vcr.gemspec +0 -147
@@ -1,110 +0,0 @@
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
- server:
14
- - Apache/2.2.3 (Red Hat)
15
- last-modified:
16
- - Tue, 15 Nov 2005 13:24:10 GMT
17
- etag:
18
- - "\"b300b4-1b6-4059a80bfd280\""
19
- accept-ranges:
20
- - bytes
21
- content-type:
22
- - text/html; charset=UTF-8
23
- connection:
24
- - Keep-Alive
25
- date:
26
- - Mon, 25 Jan 2010 18:00:32 GMT
27
- age:
28
- - "2090"
29
- content-length:
30
- - "438"
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
- date:
59
- - Mon, 25 Jan 2010 18:00:32 GMT
60
- server:
61
- - Apache/2.2.3 (CentOS)
62
- content-length:
63
- - "277"
64
- connection:
65
- - close
66
- content-type:
67
- - text/html; charset=iso-8859-1
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
- server:
92
- - Apache/2.2.3 (Red Hat)
93
- last-modified:
94
- - Tue, 15 Nov 2005 13:24:10 GMT
95
- etag:
96
- - "\"b300b4-1b6-4059a80bfd280\""
97
- accept-ranges:
98
- - bytes
99
- content-type:
100
- - text/html; charset=UTF-8
101
- connection:
102
- - Keep-Alive
103
- date:
104
- - Mon, 25 Jan 2010 18:00:32 GMT
105
- age:
106
- - "2090"
107
- content-length:
108
- - "438"
109
- :body: Another example.com response
110
- :http_version: "1.1"
@@ -1,14 +0,0 @@
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
@@ -1,12 +0,0 @@
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
@@ -1,25 +0,0 @@
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:
@@ -1,90 +0,0 @@
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
- etag:
14
- - "\"24ec5-1b6-4059a80bfd280\""
15
- last-modified:
16
- - Tue, 15 Nov 2005 13:24:10 GMT
17
- content-type:
18
- - text/html; charset=UTF-8
19
- connection:
20
- - close
21
- server:
22
- - Apache/2.2.3 (CentOS)
23
- date:
24
- - Wed, 31 Mar 2010 02:43:26 GMT
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
- etag:
43
- - "\"24ec5-1b6-4059a80bfd280\""
44
- last-modified:
45
- - Tue, 15 Nov 2005 13:24:10 GMT
46
- connection:
47
- - Keep-Alive
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
- etag:
74
- - "\"24ec5-1b6-4059a80bfd280\""
75
- last-modified:
76
- - Tue, 15 Nov 2005 13:24:10 GMT
77
- content-type:
78
- - text/html; charset=UTF-8
79
- connection:
80
- - close
81
- server:
82
- - Apache/2.2.3 (CentOS)
83
- date:
84
- - Wed, 31 Mar 2010 02:43:26 GMT
85
- content-length:
86
- - "438"
87
- accept-ranges:
88
- - bytes
89
- :body: example.com post response with id=3
90
- :http_version: "1.1"
@@ -1,24 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::HttpStubbingAdapters::FakeWeb do
4
- it_should_behave_like 'an http stubbing adapter'
5
-
6
- describe '#check_version!' do
7
- before(:each) { @orig_version = FakeWeb::VERSION }
8
- after(:each) { FakeWeb::VERSION = @orig_version }
9
-
10
- %w( 1.2.8 1.2.9 1.2.10 1.3.0 1.10.0 2.0.0 ).each do |version|
11
- it "does nothing when FakeWeb's version is #{version}" do
12
- FakeWeb::VERSION = version
13
- expect { described_class.check_version! }.to_not raise_error
14
- end
15
- end
16
-
17
- %w( 1.2.7 1.1.30 0.30.30 ).each do |version|
18
- it "raises an error when FakeWeb's version is #{version}" do
19
- FakeWeb::VERSION = version
20
- expect { described_class.check_version! }.to raise_error(/You are using FakeWeb #{version}. VCR requires version .* or greater/)
21
- end
22
- end
23
- end
24
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::HttpStubbingAdapters::WebMock do
4
- it_should_behave_like 'an http stubbing adapter'
5
-
6
- describe '#check_version!' do
7
- before(:each) { WebMock.should respond_to(:version) }
8
-
9
- %w( 1.1.0 1.1.1 1.2.0 2.0.0 ).each do |version|
10
- it "does nothing when WebMock's version is #{version}" do
11
- WebMock.stub!(:version).and_return(version)
12
- expect { described_class.check_version! }.to_not raise_error
13
- end
14
- end
15
-
16
- %w( 0.9.9 0.9.10 0.1.30 1.0.30 ).each do |version|
17
- it "raises an error when WebMock's version is #{version}" do
18
- WebMock.stub!(:version).and_return(version)
19
- expect { described_class.check_version! }.to raise_error(/You are using WebMock #{version}. VCR requires version .* or greater/)
20
- end
21
- end
22
- end
23
- end
@@ -1,2 +0,0 @@
1
- --color
2
- --format nested
@@ -1,35 +0,0 @@
1
- $LOAD_PATH.unshift(File.dirname(__FILE__))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
- require 'rubygems'
4
- require 'vcr'
5
- require 'spec'
6
- require 'spec/autorun'
7
-
8
- begin
9
- require 'ruby-debug'
10
- Debugger.start
11
- Debugger.settings[:autoeval] = true if Debugger.respond_to?(:settings)
12
- rescue LoadError
13
- # ruby-debug wasn't available so neither can the debugging be
14
- end
15
-
16
- # Requires supporting files with custom matchers and macros, etc,
17
- # in ./support/ and its subdirectories.
18
- Dir[File.expand_path(File.join(File.dirname(__FILE__),'support','**','*.rb'))].each {|f| require f}
19
-
20
- Spec::Runner.configure do |config|
21
- config.extend TempCassetteLibraryDir
22
- config.extend DisableWarnings
23
- config.extend Deprecated
24
-
25
- config.before(:each) do
26
- VCR::Config.default_cassette_options = { :record => :new_episodes }
27
- VCR::Config.http_stubbing_library = :fakeweb
28
-
29
- WebMock.allow_net_connect!
30
- WebMock.reset_webmock
31
-
32
- FakeWeb.allow_net_connect = true
33
- FakeWeb.clean_registry
34
- end
35
- end
@@ -1,95 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VCR::Request do
4
- describe '.from_net_http_request' do
5
- let(:net_http) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http.yml")) }
6
- let(:request) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http_request.yml")) }
7
- subject { described_class.from_net_http_request(net_http, request) }
8
-
9
- before(:each) do
10
- VCR.http_stubbing_adapter.should respond_to(:request_uri)
11
- VCR.http_stubbing_adapter.stub!(:request_uri)
12
- end
13
-
14
- it { should be_instance_of(VCR::Request) }
15
- its(:method) { should == :post }
16
- its(:body) { should == 'id=7' }
17
- its(:headers) { should == {
18
- 'accept' => ['*/*'],
19
- 'content-type' => ['application/x-www-form-urlencoded']
20
- } }
21
-
22
- it 'sets the uri using the http_stubbing_adapter.request_uri' do
23
- VCR.http_stubbing_adapter.should_receive(:request_uri).with(net_http, request).and_return('foo/bar')
24
- subject.uri.should == 'foo/bar'
25
- end
26
- end
27
- end
28
-
29
- describe VCR::ResponseStatus do
30
- describe '.from_net_http_response' do
31
- let(:response) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http_response.yml")) }
32
- subject { described_class.from_net_http_response(response) }
33
-
34
- it { should be_instance_of(described_class) }
35
- its(:code) { should == 200 }
36
- its(:message) { should == 'OK' }
37
- end
38
- end
39
-
40
- describe VCR::Response do
41
- describe '.from_net_http_response' do
42
- let(:response) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http_response.yml")) }
43
- subject { described_class.from_net_http_response(response) }
44
-
45
- it { should be_instance_of(described_class) }
46
- its(:body) { should == 'The response from example.com' }
47
- its(:http_version) { should == '1.1' }
48
- its(:headers) { should == {
49
- "last-modified" => ['Tue, 15 Nov 2005 13:24:10 GMT'],
50
- "connection" => ['close'],
51
- "etag" => ["\"24ec5-1b6-4059a80bfd280\""],
52
- "content-type" => ["text/html; charset=UTF-8"],
53
- "date" => ['Wed, 31 Mar 2010 02:43:26 GMT'],
54
- "server" => ['Apache/2.2.3 (CentOS)'],
55
- "content-length" => ['438'],
56
- "accept-ranges" => ['bytes']
57
- } }
58
-
59
- it 'assigns the status using VCR::ResponseStatus.from_net_http_response' do
60
- VCR::ResponseStatus.should respond_to(:from_net_http_response)
61
- VCR::ResponseStatus.should_receive(:from_net_http_response).with(response).and_return(:the_status)
62
- subject.status.should == :the_status
63
- end
64
- end
65
- end
66
-
67
- describe VCR::HTTPInteraction do
68
- describe '.from_net_http_objects' do
69
- let(:response) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http_response.yml")) }
70
- let(:net_http) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http.yml")) }
71
- let(:request) { YAML.load(File.read(File.dirname(__FILE__) + "/fixtures/#{RUBY_VERSION}/example_net_http_request.yml")) }
72
- subject { described_class.from_net_http_objects(net_http, request, response) }
73
-
74
- it 'returns a new record with the proper values' do
75
- VCR::Request.should respond_to(:from_net_http_request)
76
- VCR::Request.should_receive(:from_net_http_request).with(net_http, request).and_return(:the_request)
77
-
78
- VCR::Response.should respond_to(:from_net_http_response)
79
- VCR::Response.should_receive(:from_net_http_response).with(response).and_return(:the_response)
80
-
81
- subject.should be_instance_of(VCR::HTTPInteraction)
82
- subject.request.should == :the_request
83
- subject.response.should == :the_response
84
- end
85
- end
86
-
87
- %w( uri method ).each do |attr|
88
- it "delegates :#{attr} to the request signature" do
89
- sig = mock('request signature')
90
- sig.should_receive(attr).and_return(:the_value)
91
- instance = described_class.new(sig, nil)
92
- instance.send(attr).should == :the_value
93
- end
94
- end
95
- end
@@ -1,18 +0,0 @@
1
- module Deprecated
2
- def deprecated(old_method, new_method, message)
3
- describe "##{old_method}" do
4
- disable_warnings
5
-
6
- it "delegates to ##{new_method}" do
7
- subject.should_receive(new_method).with(:arg1, :arg2).and_return(:return_value)
8
- subject.send(old_method, :arg1, :arg2).should == :return_value
9
- end
10
-
11
- it "prints a warning: #{message}" do
12
- subject.stub!(new_method)
13
- subject.should_receive(:warn).with(message)
14
- subject.send(old_method)
15
- end
16
- end
17
- end
18
- end