webmock 2.0.2 → 2.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 050c61fa8c7558b2c5fc52862600577199f286c7
4
- data.tar.gz: 9745a14b5c7b2428dcd8720efc132c0b1573b43c
3
+ metadata.gz: 20d5a309586539a993335a28d74d8fc43495ec27
4
+ data.tar.gz: abfbec11bc296d461282f8698d18171b02a6c752
5
5
  SHA512:
6
- metadata.gz: b698fda2494837e51abd90df2eaef0a651d87b6968a3c541af5630f951b60e2b7dd09d50a12f1a8fb0f3adc5583d079d0805067ecfdce6168cd56d0e6119c833
7
- data.tar.gz: 33d11e2e5d09870aaf44ef1522c4381b83c37d4dd0e9b88d75be9b3c7321a82e7f008d3c8da831ee0957a61c8a6226f9adbe211f88e5de5e4fa36888d115c4af
6
+ metadata.gz: a76bd8f96fd204ec2cae1784cfedafebe96b261010d15531518bbbd81ebe2ddae765652c5c72a0f0d8cc7f9b423f4936751a4d738d0115417de116f819a45e93
7
+ data.tar.gz: 3d1fc2113f0225f774e16406bb1fcd9ce1ee1067b26c8209737a761c7bb91737f083f721629e8ef37f8779653773ac879eec31155e05bfbde50bdf2a7b63374f
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.3
4
+
5
+ * Handling headers passed as an Array to Curl::Easy
6
+
7
+ Thanks to [Chelsea](https://github.com/grosscr) for reporting the issue.
8
+
9
+ * Removed Ruby warnings.
10
+
11
+ Thanks to [Aaron Kromer](https://github.com/cupakromer)
12
+
3
13
  ## 2.0.2
4
14
 
5
15
  * Using `Base64.strict_encode64` instead of `Base64.encode64` to handle long user:pass basic auth credentials
data/README.md CHANGED
@@ -1019,6 +1019,7 @@ People who submitted patches and new features or suggested improvements. Many th
1019
1019
  * Taiki Ono
1020
1020
  * Jonathan Schatz
1021
1021
  * Jose Luis Honorato
1022
+ * Aaron Kromer
1022
1023
 
1023
1024
  For a full list of contributors you can visit the
1024
1025
  [contributors](https://github.com/bblimke/webmock/contributors) page.
@@ -98,11 +98,23 @@ if defined?(Curl)
98
98
  method,
99
99
  uri.to_s,
100
100
  :body => request_body,
101
- :headers => self.headers.merge(basic_auth_headers)
101
+ :headers => headers_as_hash(self.headers).merge(basic_auth_headers)
102
102
  )
103
103
  request_signature
104
104
  end
105
105
 
106
+ def headers_as_hash(headers)
107
+ if headers.is_a?(Array)
108
+ headers.inject({}) {|hash, header|
109
+ name, value = header.split(":").map(&:strip)
110
+ hash[name] = value
111
+ hash
112
+ }
113
+ else
114
+ headers
115
+ end
116
+ end
117
+
106
118
  def basic_auth_headers
107
119
  if self.username
108
120
  {'Authorization' => WebMock::Util::Headers.basic_auth_header(self.username, self.password)}
@@ -19,6 +19,11 @@ if defined?(Excon)
19
19
 
20
20
  adapter_for :excon
21
21
 
22
+ instance_exec do
23
+ @original_excon_mock_default = nil
24
+ @stub = nil
25
+ end
26
+
22
27
  def self.enable!
23
28
  self.add_excon_stub
24
29
  end
@@ -15,9 +15,10 @@ module WebMock
15
15
  HashDiff.diff(request_signature_body_hash, request_stub_body_hash)
16
16
  end
17
17
 
18
- private
19
-
20
18
  attr_reader :request_signature, :request_stub
19
+ private :request_signature, :request_stub
20
+
21
+ private
21
22
 
22
23
  def request_signature_diffable?
23
24
  request_signature.json_headers? && request_signature_parseable_json?
@@ -31,7 +31,11 @@ module WebMock
31
31
 
32
32
  @major, @minor, @patch = parse_version(library_version)
33
33
  @min_major, @min_minor, @min_patch = parse_version(min_patch_level)
34
- @max_major, @max_minor = parse_version(max_minor_version) if max_minor_version
34
+ if max_minor_version
35
+ @max_major, @max_minor = parse_version(max_minor_version)
36
+ else
37
+ @max_major, @max_minor = nil, nil
38
+ end
35
39
 
36
40
  @comparison_result = compare_version
37
41
  end
@@ -1,3 +1,3 @@
1
1
  module WebMock
2
- VERSION = '2.0.2' unless defined?(::WebMock::VERSION)
2
+ VERSION = '2.0.3' unless defined?(::WebMock::VERSION)
3
3
  end
@@ -355,6 +355,16 @@ unless RUBY_PLATFORM =~ /java/
355
355
  c.http(:GET)
356
356
  expect(c.body).to eq("abc")
357
357
  end
358
+
359
+ it "supports array headers passed to Curl::Easy" do
360
+ stub_request(:get, "www.example.com").with(headers: {'X-One' => '1'}).to_return(:body => "abc")
361
+
362
+ c = Curl::Easy.new
363
+ c.url = "http://www.example.com"
364
+ c.headers = ["X-One: 1"]
365
+ c.http(:GET)
366
+ expect(c.body).to eq("abc")
367
+ end
358
368
  end
359
369
 
360
370
  describe "using #http_* methods for requests" do
@@ -274,12 +274,12 @@ unless RUBY_PLATFORM =~ /java/
274
274
  err = :success_from_timeout
275
275
  EM.stop
276
276
  end.errback do |resp|
277
- conn.get(:path => "/foo").callback do |resp|
278
- expect(resp.response_header.status).to eq(200)
279
- body = resp.response
277
+ conn.get(:path => "/foo").callback do |retry_resp|
278
+ expect(retry_resp.response_header.status).to eq(200)
279
+ body = retry_resp.response
280
280
  EM.stop
281
- end.errback do |resp|
282
- err = resp.error
281
+ end.errback do |retry_resp|
282
+ err = retry_resp.error
283
283
  EM.stop
284
284
  end
285
285
  end
@@ -188,7 +188,7 @@ describe "HTTPClient" do
188
188
 
189
189
  it 'sets the full body on the webmock response' do
190
190
  body = ''
191
- result = HTTPClient.new.request(:get, 'http://www.example.com/') do |http_res, chunk|
191
+ HTTPClient.new.request(:get, 'http://www.example.com/') do |http_res, chunk|
192
192
  body += chunk
193
193
  end
194
194
  expect(@response.body).to eq body
@@ -20,14 +20,7 @@ module HTTPClientSpecHelper
20
20
  else
21
21
  response = c.request(*params, &block)
22
22
  end
23
- headers = response.header.all.inject({}) do |headers, header|
24
- if !headers.has_key?(header[0])
25
- headers[header[0]] = header[1]
26
- else
27
- headers[header[0]] = [headers[header[0]], header[1]].join(', ')
28
- end
29
- headers
30
- end
23
+ headers = merge_headers(response)
31
24
  OpenStruct.new({
32
25
  :body => HTTPClientSpecHelper.async_mode ? response.content.read : response.content,
33
26
  :headers => headers,
@@ -48,4 +41,16 @@ module HTTPClientSpecHelper
48
41
  :httpclient
49
42
  end
50
43
 
44
+ private
45
+
46
+ def merge_headers(response)
47
+ response.header.all.inject({}) do |headers, header|
48
+ if !headers.has_key?(header[0])
49
+ headers[header[0]] = header[1]
50
+ else
51
+ headers[header[0]] = [headers[header[0]], header[1]].join(', ')
52
+ end
53
+ headers
54
+ end
55
+ end
51
56
  end
@@ -10,8 +10,8 @@ module NetHTTPSpecHelper
10
10
  req = clazz.new("#{uri.path}#{uri.query ? '?' : ''}#{uri.query}", nil)
11
11
  options[:headers].each do |k,v|
12
12
  if v.is_a?(Array)
13
- v.each_with_index do |v,i|
14
- i == 0 ? (req[k] = v) : req.add_field(k, v)
13
+ v.each_with_index do |e,i|
14
+ i == 0 ? (req[k] = e) : req.add_field(k, e)
15
15
  end
16
16
  else
17
17
  req[k] = v
@@ -31,8 +31,8 @@ module NetHTTPSpecHelper
31
31
  http.read_timeout = 60
32
32
  end
33
33
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
34
- response = http.start {|http|
35
- http.request(req, options[:body], &block)
34
+ response = http.start {|open_http|
35
+ open_http.request(req, options[:body], &block)
36
36
  }
37
37
  headers = {}
38
38
  response.each_header {|name, value| headers[name] = value}
@@ -1,5 +1,11 @@
1
1
  class MyException < StandardError; end;
2
2
 
3
+ class Responder
4
+ def call(request)
5
+ {:body => request.body}
6
+ end
7
+ end
8
+
3
9
  shared_context "declared responses" do |*adapter_info|
4
10
  describe "when request stub declares that request should raise exception" do
5
11
  it "should raise exception" do
@@ -128,12 +134,6 @@ shared_context "declared responses" do |*adapter_info|
128
134
  end
129
135
 
130
136
  describe "when response was declared as lambda" do
131
- class Responder
132
- def call(request)
133
- {:body => request.body}
134
- end
135
- end
136
-
137
137
  it "should return evaluated response body" do
138
138
  stub_request(:post, "www.example.com").to_return(lambda {|request|
139
139
  {:body => request.body}
@@ -34,8 +34,8 @@ shared_examples_for "stubbing requests" do |*adapter_info|
34
34
  begin
35
35
  http_request(:get, "http://www.example.com/hello+/?#{NOT_ESCAPED_PARAMS}")
36
36
  rescue WebMock::NetConnectNotAllowedError => e
37
- expect(e.message).to match /Unregistered request: GET http:\/\/www\.example\.com\/hello\+\/\?x=ab%20c&z='Stop!'%20said%20Fred%20m/m
38
- expect(e.message).to match /stub_request\(:get, "http:\/\/www\.example\.com\/hello\+\/\?x=ab%20c&z='Stop!'%20said%20Fred%20m"\)/m
37
+ expect(e.message).to match(/Unregistered request: GET http:\/\/www\.example\.com\/hello\+\/\?x=ab%20c&z='Stop!'%20said%20Fred%20m/m)
38
+ expect(e.message).to match(/stub_request\(:get, "http:\/\/www\.example\.com\/hello\+\/\?x=ab%20c&z='Stop!'%20said%20Fred%20m"\)/m)
39
39
  end
40
40
 
41
41
  stub_request(:get, "http://www.example.com/hello+/?x=ab%20c&z='Stop!'%20said%20Fred%20m")
@@ -104,8 +104,8 @@ unless RUBY_PLATFORM =~ /java/
104
104
  test_body = nil
105
105
  test_complete = nil
106
106
  skip("This test requires a newer version of Typhoeus") unless @request.respond_to?(:on_body)
107
- @request.on_body do |body, response|
108
- test_body = body
107
+ @request.on_body do |body_chunk, response|
108
+ test_body = body_chunk
109
109
  end
110
110
  @request.on_complete do |response|
111
111
  test_complete = response.body
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 2.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bartosz Blimke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-14 00:00:00.000000000 Z
11
+ date: 2016-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable