vcr 1.7.1 → 1.7.2
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/.travis.yml +3 -0
- data/CHANGELOG.md +11 -1
- data/Gemfile +1 -1
- data/lib/vcr/http_stubbing_adapters/typhoeus.rb +11 -1
- data/lib/vcr/middleware/faraday.rb +7 -8
- data/lib/vcr/version.rb +1 -1
- data/spec/support/http_library_adapters.rb +2 -1
- data/spec/support/shared_example_groups/http_library.rb +36 -9
- data/spec/support/sinatra_app.rb +10 -0
- data/vcr.gemspec +1 -1
- metadata +8 -8
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
## In git
|
2
2
|
|
3
|
-
[Full Changelog](http://github.com/myronmarston/vcr/compare/v1.7.
|
3
|
+
[Full Changelog](http://github.com/myronmarston/vcr/compare/v1.7.2...master)
|
4
|
+
|
5
|
+
## 1.7.2 (March 26, 2011)
|
6
|
+
|
7
|
+
[Full Changelog](http://github.com/myronmarston/vcr/compare/v1.7.1...v1.7.2)
|
8
|
+
|
9
|
+
* Fixed Typhoeus adapter so headers are returned in the same form during
|
10
|
+
playback as they would be without VCR. Bug reported by
|
11
|
+
[Avdi Grimm](https://github.com/avdi).
|
12
|
+
* Fixed Faraday adapter so it treats response headers in the same way
|
13
|
+
Faraday itself does (i.e. with lowercase keys).
|
4
14
|
|
5
15
|
## 1.7.1 (March 19, 2011)
|
6
16
|
|
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ group :development do
|
|
5
5
|
# patron and em-http-request can't install on JRuby, so we have to limit their platform here.
|
6
6
|
platforms :ruby do
|
7
7
|
gem 'patron', '0.4.9'
|
8
|
-
gem 'em-http-request', '~> 0.
|
8
|
+
gem 'em-http-request', '~> 0.3.0'
|
9
9
|
gem 'curb', '0.7.8'
|
10
10
|
gem 'typhoeus', '~> 0.2.1'
|
11
11
|
end
|
@@ -32,7 +32,7 @@ module VCR
|
|
32
32
|
::Typhoeus::Response.new(
|
33
33
|
:code => response.status.code,
|
34
34
|
:body => response.body,
|
35
|
-
:headers_hash => response
|
35
|
+
:headers_hash => normalized_response_headers(response)
|
36
36
|
)
|
37
37
|
end
|
38
38
|
)
|
@@ -65,6 +65,16 @@ module VCR
|
|
65
65
|
|
66
66
|
hash
|
67
67
|
end
|
68
|
+
|
69
|
+
def normalized_response_headers(response)
|
70
|
+
hash = {}
|
71
|
+
|
72
|
+
response.headers.each do |key, values|
|
73
|
+
hash[key] = values.size == 1 ? values.first : values
|
74
|
+
end if response.headers
|
75
|
+
|
76
|
+
hash
|
77
|
+
end
|
68
78
|
end
|
69
79
|
end
|
70
80
|
end
|
@@ -18,7 +18,7 @@ module VCR
|
|
18
18
|
elsif response = VCR::HttpStubbingAdapters::Faraday.stubbed_response_for(request_matcher)
|
19
19
|
env.update(
|
20
20
|
:status => response.status.code,
|
21
|
-
:response_headers =>
|
21
|
+
:response_headers => normalized_headers(response.headers),
|
22
22
|
:body => response.body
|
23
23
|
)
|
24
24
|
|
@@ -64,15 +64,14 @@ module VCR
|
|
64
64
|
)
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
68
|
-
|
67
|
+
def normalized_headers(headers)
|
68
|
+
hash = {}
|
69
69
|
|
70
|
-
headers.each do |key,
|
71
|
-
key =
|
72
|
-
|
73
|
-
end
|
70
|
+
headers.each do |key, values|
|
71
|
+
hash[key] = values.join(', ')
|
72
|
+
end if headers
|
74
73
|
|
75
|
-
|
74
|
+
hash
|
76
75
|
end
|
77
76
|
end
|
78
77
|
end
|
data/lib/vcr/version.rb
CHANGED
@@ -14,6 +14,41 @@ shared_examples_for "an http library" do |library, supported_request_match_attri
|
|
14
14
|
# so this gives us another alias we can use for the original method.
|
15
15
|
alias make_request make_http_request
|
16
16
|
|
17
|
+
1.upto(2) do |header_count|
|
18
|
+
describe "making an HTTP request that responds with #{header_count} Set-Cookie header(s)" do
|
19
|
+
define_method :get_set_cookie_header do
|
20
|
+
VCR.use_cassette('header_test', :record => :once) do
|
21
|
+
get_header 'Set-Cookie', make_http_request(:get, "http://localhost:#{VCR::SinatraApp.port}/set-cookie-headers/#{header_count}")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
define_method :should_be_pending do
|
26
|
+
if header_count == 2
|
27
|
+
[
|
28
|
+
'Faraday (patron)',
|
29
|
+
'HTTP Client',
|
30
|
+
'EM HTTP Request',
|
31
|
+
'Curb'
|
32
|
+
].include?(adapter_module.http_library_name)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'returns the same header value when recording and replaying' do
|
37
|
+
pending "There appears to be a bug in the the HTTP stubbing library", :if => should_be_pending do
|
38
|
+
(recorded_val = get_set_cookie_header).should_not be_nil
|
39
|
+
replayed_val = get_set_cookie_header
|
40
|
+
|
41
|
+
# we don't care about order differences if the values are arrays
|
42
|
+
if recorded_val.is_a?(Array) && replayed_val.is_a?(Array)
|
43
|
+
replayed_val.should =~ recorded_val
|
44
|
+
else
|
45
|
+
replayed_val.should == recorded_val
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
17
52
|
describe 'making an HTTP request' do
|
18
53
|
let(:status) { VCR::ResponseStatus.new(200, 'OK') }
|
19
54
|
let(:interaction) { VCR::HTTPInteraction.new(request, response) }
|
@@ -39,16 +74,8 @@ shared_examples_for "an http library" do |library, supported_request_match_attri
|
|
39
74
|
let(:request) { VCR::Request.new(:get, url) }
|
40
75
|
let(:response) { VCR::Response.new(status, nil, response_body, '1.1') }
|
41
76
|
|
42
|
-
def should_be_pending?
|
43
|
-
return false unless described_class == VCR::HttpStubbingAdapters::WebMock
|
44
|
-
return false unless request.uri.include?(CGI.escape('&'))
|
45
|
-
self.class.included_modules.first.http_library_name == 'EM HTTP Request'
|
46
|
-
end
|
47
|
-
|
48
77
|
it 'returns the expected response for the same request' do
|
49
|
-
|
50
|
-
get_body_string(make_http_request(:get, url)).should == response_body
|
51
|
-
end
|
78
|
+
get_body_string(make_http_request(:get, url)).should == response_body
|
52
79
|
end
|
53
80
|
end
|
54
81
|
end
|
data/spec/support/sinatra_app.rb
CHANGED
@@ -14,6 +14,16 @@ module VCR
|
|
14
14
|
"FOO!"
|
15
15
|
end
|
16
16
|
|
17
|
+
get '/set-cookie-headers/1' do
|
18
|
+
headers 'Set-Cookie' => 'foo'
|
19
|
+
'header set'
|
20
|
+
end
|
21
|
+
|
22
|
+
get '/set-cookie-headers/2' do
|
23
|
+
headers 'Set-Cookie' => %w[ foo bar ]
|
24
|
+
'header set'
|
25
|
+
end
|
26
|
+
|
17
27
|
def self.port
|
18
28
|
server.port
|
19
29
|
end
|
data/vcr.gemspec
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vcr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 15
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 1.7.
|
9
|
+
- 2
|
10
|
+
version: 1.7.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Myron Marston
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-26 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -267,12 +267,12 @@ dependencies:
|
|
267
267
|
requirements:
|
268
268
|
- - ~>
|
269
269
|
- !ruby/object:Gem::Version
|
270
|
-
hash:
|
270
|
+
hash: 19
|
271
271
|
segments:
|
272
272
|
- 0
|
273
|
-
-
|
274
|
-
-
|
275
|
-
version: 0.
|
273
|
+
- 3
|
274
|
+
- 0
|
275
|
+
version: 0.3.0
|
276
276
|
requirement: *id016
|
277
277
|
- !ruby/object:Gem::Dependency
|
278
278
|
prerelease: false
|