vcr 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/History.rdoc +3 -0
- data/VERSION +1 -1
- data/features/record_response.feature +5 -0
- data/features/step_definitions/vcr_steps.rb +12 -0
- data/lib/vcr/extensions/net_http.rb +2 -1
- data/spec/extensions/net_http_spec.rb +11 -0
- data/vcr.gemspec +2 -2
- metadata +3 -3
data/History.rdoc
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
== 0.3.1 April 10, 2010
|
2
|
+
* Fixed a bug: when Net::HTTP#request was called with a block that had a return statement, the response was not being recorded.
|
3
|
+
|
1
4
|
== 0.3.0 March 24, 2010
|
2
5
|
* Renamed a bunch of methods, replacing them with method names that more clearly fit the VCR/cassette metaphor:
|
3
6
|
* VCR.create_cassette! => VCR.insert_cassette
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.1
|
@@ -70,3 +70,8 @@ Feature: Record response
|
|
70
70
|
When I make an HTTP get request to "http://example.com" within the "temp/record_none_cassette" none cassette, allowing requests matching /example.com/
|
71
71
|
Then the response for "http://example.com" should match /You have reached this web page by typing.*example\.com/
|
72
72
|
And there should not be a "temp/record_none_cassette" library file
|
73
|
+
|
74
|
+
Scenario: Record a request with a block with a return statement
|
75
|
+
Given we do not have a "temp/block_with_a_return" cassette
|
76
|
+
When I make a returning block HTTP get request to "http://example.com" within the "temp/block_with_a_return" new_episodes cassette
|
77
|
+
Then the "temp/block_with_a_return" library file should have a response for "http://example.com" that matches /You have reached this web page by typing.*example\.com/
|
@@ -26,6 +26,12 @@ module VCRHelpers
|
|
26
26
|
end
|
27
27
|
@http_requests[url] += [result]
|
28
28
|
end
|
29
|
+
|
30
|
+
def perform_get_with_returning_block(uri, path)
|
31
|
+
Net::HTTP.new(uri.host, uri.port).request(Net::HTTP::Get.new(path, {})) do |response|
|
32
|
+
return response
|
33
|
+
end
|
34
|
+
end
|
29
35
|
end
|
30
36
|
World(VCRHelpers)
|
31
37
|
|
@@ -88,6 +94,12 @@ When /^I make a recursive HTTP post request to "([^\"]*)"$/ do |url|
|
|
88
94
|
end
|
89
95
|
end
|
90
96
|
|
97
|
+
When /^I make a returning block HTTP get request to "([^\"]*)"$/ do |url|
|
98
|
+
capture_response(url) do |uri, path|
|
99
|
+
perform_get_with_returning_block(uri, path)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
91
103
|
When /^I make (.*HTTP (?:get|post)) requests? to "([^\"]*)"(?: and "([^\"]*)")? within the "([^\"]*)" ?(#{VCR::Cassette::VALID_RECORD_MODES.join('|')})? cassette(?:, allowing requests matching \/([^\/]+)\/)?$/ do |http_request_type, url1, url2, cassette_name, record_mode, allowed|
|
92
104
|
options = { :record => (record_mode ? record_mode.to_sym : :new_episodes) }
|
93
105
|
options[:allow_real_http] = lambda { |uri| uri.to_s =~ /#{allowed}/ } if allowed.to_s.size > 0
|
@@ -8,8 +8,9 @@ module Net
|
|
8
8
|
if (cassette = VCR.current_cassette) && cassette.allow_real_http_requests_to?(uri)
|
9
9
|
FakeWeb.with_allow_net_connect_set_to(true) { request_without_vcr(request, body, &block) }
|
10
10
|
else
|
11
|
-
response = request_without_vcr(request, body
|
11
|
+
response = request_without_vcr(request, body)
|
12
12
|
__store_response_with_vcr__(response, request) if @__request_with_vcr_call_count == 1
|
13
|
+
yield response if block_given?
|
13
14
|
response
|
14
15
|
end
|
15
16
|
ensure
|
@@ -17,6 +17,12 @@ describe "Net::HTTP Extensions" do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe 'a request that is not registered with FakeWeb' do
|
20
|
+
def perform_get_with_returning_block
|
21
|
+
Net::HTTP.new('example.com', 80).request(Net::HTTP::Get.new('/', {})) do |response|
|
22
|
+
return response
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
20
26
|
it 'calls #store_recorded_response! on the current cassette' do
|
21
27
|
recorded_response = VCR::RecordedResponse.new(:get, 'http://example.com:80/', :example_response)
|
22
28
|
VCR::RecordedResponse.should_receive(:new).with(:get, 'http://example.com:80/', an_instance_of(Net::HTTPOK)).and_return(recorded_response)
|
@@ -28,6 +34,11 @@ describe "Net::HTTP Extensions" do
|
|
28
34
|
@current_cassette.should_receive(:store_recorded_response!).once
|
29
35
|
Net::HTTP.new('example.com', 80).post('/', nil)
|
30
36
|
end
|
37
|
+
|
38
|
+
it 'calls #store_recorded_response! when Net::HTTP#request is called with a block with a return statement' do
|
39
|
+
@current_cassette.should_receive(:store_recorded_response!).once
|
40
|
+
perform_get_with_returning_block
|
41
|
+
end
|
31
42
|
end
|
32
43
|
|
33
44
|
describe 'a request that is registered with FakeWeb' do
|
data/vcr.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{vcr}
|
8
|
-
s.version = "0.3.
|
8
|
+
s.version = "0.3.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Myron Marston"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-04-10}
|
13
13
|
s.description = %q{VCR provides helpers to record HTTP requests for URIs that are not registered with fakeweb, and replay them later. It works with any ruby testing framework, and provides built-in support for cucumber.}
|
14
14
|
s.email = %q{myron.marston@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 1
|
9
|
+
version: 0.3.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Myron Marston
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-10 00:00:00 -07:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|