webmock 2.1.0 → 2.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e5ecaf79b30d292fbfa32412eb165fc1c2202e3c
4
- data.tar.gz: 14f612738af09ebfd6ec02688da87e748d2886e3
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NDA0NGYxYjJmZGI0OTNjMjhlNDhjMWRkNTMwZWZlNTQ4ZjhkZDljOQ==
5
+ data.tar.gz: !binary |-
6
+ MjgyODBlOWY3ODE1MmM0OTk4NDE5NzU1NjhkYzRiN2QwN2Q5MzZiNA==
5
7
  SHA512:
6
- metadata.gz: 8784b972e18a3906ea6ce8a359bcdc9ea88fbc386753791770ef21d550b985dbcbe60e5758ccd330b840d49ef9b126b41389ac8b6a32062478ffb6a215817142
7
- data.tar.gz: 0f35a48a6a7e3705a35b6ab546e45805dfb268448f959cbf4b99ebf0f9d65e1d05c7f96a8b13cdb6c83c8909bac0fd2f6eb82ecfa833c8b3d5d20ca1f1bacd69
8
+ metadata.gz: !binary |-
9
+ ZjZiYWFmOTJjMDc3Yzk3Y2M1M2UxNzMyYWVkOWNiNTYyMWQzZTJhZDNmMjA3
10
+ ZjcxMjI5N2QzNTBhNTVlYzI4OTFlNjMyYTZlNjNiNjNkNmUxYThlYjQ1MzNm
11
+ YjlhMWI5YTE5OTZmYThiYTJhNTllOGRjNTkzYWEwY2U1M2M5ZmE=
12
+ data.tar.gz: !binary |-
13
+ NjI2YzNjODk0ZDBmNTM4N2NkMmU1NGZkNDVlOWFiZTUwYmQ3NGE0ZDJmYWRj
14
+ OTNjYmE3MWQxMTdmMzMwYTY5NmI1MWE5ODQ4YWY5MGQ2YWIzYTQ0NWVjMmJk
15
+ NGFiZjYzZTc4MzM4MWNlYWFjOGMzMTIwODY1M2NlZjFmYmRmNzU=
@@ -5,6 +5,7 @@ rvm:
5
5
  - 2.2.1
6
6
  - 2.2.3
7
7
  - 2.3.0
8
+ - ruby-2.4.0-preview3
8
9
  - rbx-2
9
10
  - ruby-head
10
11
  - jruby-9.0.0.0
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.2.0
4
+
5
+ * Added `refute_requested` as an alias for `assert_not_requested`
6
+
7
+ Thanks to [Michael Grosser](https://github.com/grosser)
8
+
9
+ * Raising `Net::OpenTimeout` instead of `Timeout::Error` if available when a request stub is declared `to_timeout`
10
+
11
+ Thanks to [Gabe Martin-Dempesy](https://github.com/gabetax)
12
+
13
+ ## 2.1.1
14
+
15
+ * Added support for handling status messages in Excon responses.
16
+
17
+ Thanks to [Tero Marttila](https://github.com/SpComb) for reporting the issue.
18
+
3
19
  ## 2.1.0
4
20
 
5
21
  * Added support for `on_debug` callback in Curb.
@@ -103,8 +119,8 @@
103
119
 
104
120
  Thanks to [Alex Kestner](https://github.com/akestner)
105
121
 
106
- * Added a clear message on an attept to match a multipart encoded request body.
107
- WebMock does't support requests with multipart body... yet.
122
+ * Added a clear message on an attempt to match a multipart encoded request body.
123
+ WebMock doesn't support requests with multipart body... yet.
108
124
 
109
125
  * `WebMock.disable_net_connect` `:allow` option, provided as regexp, matches https URIs correctly.
110
126
 
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'http://rubygems.org/'
3
3
  gemspec
4
4
 
5
5
  gem 'rake'
6
- gem 'curb', github: 'pavel-jurasek-bcgdv-com/curb', platforms: :ruby
7
6
 
8
7
  platforms :jruby do
9
8
  gem 'jruby-openssl'
data/README.md CHANGED
@@ -218,7 +218,7 @@ Net::HTTP.start('www.example.com') do |http|
218
218
  end # ===> Success
219
219
  ```
220
220
 
221
- ##### Important! Since version 2.0.0, WebMock does not match credentials provided in Authorization header and credentials provided in the userinfo of a url. I.e. `stub_request(:get, "user:pass@www.example.com")` does not match a request with credentials provided in the Athoriation header.
221
+ ##### Important! Since version 2.0.0, WebMock does not match credentials provided in Authorization header and credentials provided in the userinfo of a url. I.e. `stub_request(:get, "user:pass@www.example.com")` does not match a request with credentials provided in the Authorization header.
222
222
 
223
223
  ### Request with basic authentication in the url
224
224
 
@@ -1021,6 +1021,11 @@ People who submitted patches and new features or suggested improvements. Many th
1021
1021
  * Jose Luis Honorato
1022
1022
  * Aaron Kromer
1023
1023
  * Pavel Jurašek
1024
+ * Jake Worth
1025
+ * Gabe Martin-Dempesy
1026
+ * Michael Grosser
1027
+ * Aleksei Maridashvili
1028
+ * Ville Lautanala
1024
1029
 
1025
1030
  For a full list of contributors you can visit the
1026
1031
  [contributors](https://github.com/bblimke/webmock/contributors) page.
@@ -34,6 +34,7 @@ module WebMock
34
34
  end
35
35
  assert_request_not_requested(*args)
36
36
  end
37
+ alias refute_requested assert_not_requested
37
38
 
38
39
  # Similar to RSpec::Mocks::ArgumentMatchers#hash_including()
39
40
  #
@@ -88,12 +88,10 @@ if defined?(Curl)
88
88
  headers = headers_as_hash(self.headers).merge(basic_auth_headers)
89
89
 
90
90
  request_body = case method
91
- when :post
91
+ when :post, :patch
92
92
  self.post_body || @post_body
93
93
  when :put
94
94
  @put_data
95
- when :patch
96
- @patch_data
97
95
  else
98
96
  nil
99
97
  end
@@ -263,13 +261,6 @@ if defined?(Curl)
263
261
  end
264
262
  alias put http_put
265
263
 
266
- def http_patch data = nil
267
- @webmock_method = :patch
268
- @patch_data = data if data
269
- super
270
- end
271
- alias patch http_patch
272
-
273
264
  def http_post *data
274
265
  @webmock_method = :post
275
266
  @post_body = data.join('&') if data && !data.empty?
@@ -288,12 +279,6 @@ if defined?(Curl)
288
279
  super
289
280
  end
290
281
 
291
- def patch_data= data
292
- @webmock_method = :patch
293
- @patch_data = data
294
- super
295
- end
296
-
297
282
  def post_body= data
298
283
  @webmock_method = :post
299
284
  super
@@ -130,13 +130,14 @@ if defined?(Excon)
130
130
  {
131
131
  body: mock.body,
132
132
  status: mock.status[0].to_i,
133
+ reason_phrase: mock.status[1],
133
134
  headers: mock.headers || {}
134
135
  }
135
136
  end
136
137
 
137
138
  def self.mock_response(real)
138
139
  mock = WebMock::Response.new
139
- mock.status = real.status
140
+ mock.status = [real.status, real.reason_phrase]
140
141
  mock.headers = real.headers
141
142
  mock.body = real.body.dup
142
143
  mock
@@ -121,110 +121,111 @@ if defined?(::HTTPClient)
121
121
 
122
122
  response
123
123
  end
124
- end
125
124
 
126
- class WebMockHTTPClient < HTTPClient
127
- alias_method :do_get_block_without_webmock, :do_get_block
128
- alias_method :do_get_stream_without_webmock, :do_get_stream
125
+ def build_webmock_response(httpclient_response, body = nil)
126
+ webmock_response = WebMock::Response.new
127
+ webmock_response.status = [httpclient_response.status, httpclient_response.reason]
129
128
 
130
- include WebMockHTTPClients
131
- end
132
-
133
- if defined? ::JSONClient
134
- class WebMockJSONClient < JSONClient
135
- alias_method :do_get_block_without_webmock, :do_get_block
136
- alias_method :do_get_stream_without_webmock, :do_get_stream
129
+ webmock_response.headers = {}.tap do |hash|
130
+ httpclient_response.header.all.each do |(key, value)|
131
+ if hash.has_key?(key)
132
+ hash[key] = Array(hash[key]) + [value]
133
+ else
134
+ hash[key] = value
135
+ end
136
+ end
137
+ end
137
138
 
138
- include WebMockHTTPClients
139
+ if body
140
+ webmock_response.body = body
141
+ elsif httpclient_response.content.respond_to?(:read)
142
+ webmock_response.body = httpclient_response.content.read
143
+ body = HTTP::Message::Body.new
144
+ body.init_response(StringIO.new(webmock_response.body))
145
+ httpclient_response.body = body
146
+ else
147
+ webmock_response.body = httpclient_response.content
148
+ end
149
+ webmock_response
139
150
  end
140
- end
141
151
 
142
- def build_webmock_response(httpclient_response, body = nil)
143
- webmock_response = WebMock::Response.new
144
- webmock_response.status = [httpclient_response.status, httpclient_response.reason]
152
+ def build_request_signature(req, reuse_existing = false)
153
+ uri = WebMock::Util::URI.heuristic_parse(req.header.request_uri.to_s)
154
+ uri.query = WebMock::Util::QueryMapper.values_to_query(req.header.request_query, notation: WebMock::Config.instance.query_values_notation) if req.header.request_query
155
+ uri.port = req.header.request_uri.port
145
156
 
146
- webmock_response.headers = {}.tap do |hash|
147
- httpclient_response.header.all.each do |(key, value)|
148
- if hash.has_key?(key)
149
- hash[key] = Array(hash[key]) + [value]
150
- else
151
- hash[key] = value
152
- end
157
+ @request_filter.each do |filter|
158
+ filter.filter_request(req)
153
159
  end
154
- end
155
160
 
156
- if body
157
- webmock_response.body = body
158
- elsif httpclient_response.content.respond_to?(:read)
159
- webmock_response.body = httpclient_response.content.read
160
- body = HTTP::Message::Body.new
161
- body.init_response(StringIO.new(webmock_response.body))
162
- httpclient_response.body = body
163
- else
164
- webmock_response.body = httpclient_response.content
165
- end
166
- webmock_response
167
- end
161
+ headers = req.header.all.inject({}) do |hdrs, header|
162
+ hdrs[header[0]] ||= []
163
+ hdrs[header[0]] << header[1]
164
+ hdrs
165
+ end
166
+ headers = headers_from_session(uri).merge(headers)
167
+
168
+ signature = WebMock::RequestSignature.new(
169
+ req.header.request_method.downcase.to_sym,
170
+ uri.to_s,
171
+ body: req.http_body.dump,
172
+ headers: headers
173
+ )
174
+
175
+ # reuse a previous identical signature object if we stored one for later use
176
+ if reuse_existing && previous_signature = previous_signature_for(signature)
177
+ return previous_signature
178
+ end
168
179
 
169
- def build_request_signature(req, reuse_existing = false)
170
- uri = WebMock::Util::URI.heuristic_parse(req.header.request_uri.to_s)
171
- uri.query = WebMock::Util::QueryMapper.values_to_query(req.header.request_query, notation: WebMock::Config.instance.query_values_notation) if req.header.request_query
172
- uri.port = req.header.request_uri.port
180
+ signature
181
+ end
173
182
 
174
- @request_filter.each do |filter|
175
- filter.filter_request(req)
183
+ def webmock_responses
184
+ @webmock_responses ||= Hash.new do |hash, request_signature|
185
+ hash[request_signature] = WebMock::StubRegistry.instance.response_for_request(request_signature)
186
+ end
176
187
  end
177
188
 
178
- headers = req.header.all.inject({}) do |hdrs, header|
179
- hdrs[header[0]] ||= []
180
- hdrs[header[0]] << header[1]
181
- hdrs
189
+ def webmock_request_signatures
190
+ @webmock_request_signatures ||= []
182
191
  end
183
- headers = headers_from_session(uri).merge(headers)
184
-
185
- signature = WebMock::RequestSignature.new(
186
- req.header.request_method.downcase.to_sym,
187
- uri.to_s,
188
- body: req.http_body.dump,
189
- headers: headers
190
- )
191
-
192
- # reuse a previous identical signature object if we stored one for later use
193
- if reuse_existing && previous_signature = previous_signature_for(signature)
194
- return previous_signature
192
+
193
+ def previous_signature_for(signature)
194
+ return nil unless index = webmock_request_signatures.index(signature)
195
+ webmock_request_signatures.delete_at(index)
195
196
  end
196
197
 
197
- signature
198
- end
198
+ private
199
199
 
200
- def webmock_responses
201
- @webmock_responses ||= Hash.new do |hash, request_signature|
202
- hash[request_signature] = WebMock::StubRegistry.instance.response_for_request(request_signature)
200
+ # some of the headers sent by HTTPClient are derived from
201
+ # the client session
202
+ def headers_from_session(uri)
203
+ session_headers = HTTP::Message::Headers.new
204
+ @session_manager.send(:open, uri).send(:set_header, MessageMock.new(session_headers))
205
+ session_headers.all.inject({}) do |hdrs, header|
206
+ hdrs[header[0]] = header[1]
207
+ hdrs
208
+ end
203
209
  end
204
210
  end
205
211
 
206
- def webmock_request_signatures
207
- @webmock_request_signatures ||= []
208
- end
212
+ class WebMockHTTPClient < HTTPClient
213
+ alias_method :do_get_block_without_webmock, :do_get_block
214
+ alias_method :do_get_stream_without_webmock, :do_get_stream
209
215
 
210
- def previous_signature_for(signature)
211
- return nil unless index = webmock_request_signatures.index(signature)
212
- webmock_request_signatures.delete_at(index)
216
+ include WebMockHTTPClients
213
217
  end
214
218
 
215
- private
219
+ if defined? ::JSONClient
220
+ class WebMockJSONClient < JSONClient
221
+ alias_method :do_get_block_without_webmock, :do_get_block
222
+ alias_method :do_get_stream_without_webmock, :do_get_stream
216
223
 
217
- # some of the headers sent by HTTPClient are derived from
218
- # the client session
219
- def headers_from_session(uri)
220
- session_headers = HTTP::Message::Headers.new
221
- @session_manager.send(:open, uri).send(:set_header, MessageMock.new(session_headers))
222
- session_headers.all.inject({}) do |hdrs, header|
223
- hdrs[header[0]] = header[1]
224
- hdrs
224
+ include WebMockHTTPClients
225
225
  end
226
226
  end
227
227
 
228
+
228
229
  # Mocks a HTTPClient HTTP::Message
229
230
  class MessageMock
230
231
  attr_reader :header
@@ -168,7 +168,9 @@ module WebMock
168
168
 
169
169
  response.extend Net::WebMockHTTPResponse
170
170
 
171
- raise Timeout::Error, "execution expired" if webmock_response.should_timeout
171
+ if webmock_response.should_timeout
172
+ raise timeout_exception, "execution expired"
173
+ end
172
174
 
173
175
  webmock_response.raise_error_if_any
174
176
 
@@ -177,6 +179,19 @@ module WebMock
177
179
  response
178
180
  end
179
181
 
182
+ def timeout_exception
183
+ if defined?(Net::OpenTimeout)
184
+ # Ruby 2.x
185
+ Net::OpenTimeout
186
+ elsif defined?(Net::HTTP::OpenTimeout)
187
+ # Ruby 1.9
188
+ Net::HTTP::OpenTimeout
189
+ else
190
+ # Fallback, if things change
191
+ Timeout::Error
192
+ end
193
+ end
194
+
180
195
  def build_webmock_response(net_http_response)
181
196
  webmock_response = WebMock::Response.new
182
197
  webmock_response.status = [
@@ -12,7 +12,7 @@ module WebMock
12
12
  Response.new(
13
13
  body: body_from_rack_response(response),
14
14
  headers: headers,
15
- status: status
15
+ status: [status, Rack::Utils::HTTP_STATUS_CODES[status]]
16
16
  )
17
17
  end
18
18
 
@@ -1,3 +1,3 @@
1
1
  module WebMock
2
- VERSION = '2.1.0' unless defined?(::WebMock::VERSION)
2
+ VERSION = '2.2.0' unless defined?(::WebMock::VERSION)
3
3
  end
@@ -382,6 +382,29 @@ unless RUBY_PLATFORM =~ /java/
382
382
  c.http(:GET)
383
383
  expect(c.body).to eq("abc")
384
384
  end
385
+
386
+ describe 'match request body' do
387
+ it 'for post' do
388
+ stub_request(:post, "www.example.com").with(body: 'foo=nhe').to_return(body: "abc")
389
+
390
+ response = Curl.post("http://www.example.com", {foo: :nhe})
391
+ expect(response.body_str).to eq("abc")
392
+ end
393
+
394
+ it 'for patch' do
395
+ stub_request(:patch, "www.example.com").with(body: 'foo=nhe').to_return(body: "abc")
396
+
397
+ response = Curl.patch("http://www.example.com", {foo: :nhe})
398
+ expect(response.body_str).to eq("abc")
399
+ end
400
+
401
+ it 'for put' do
402
+ stub_request(:put, "www.example.com").with(body: 'foo=nhe').to_return(body: "abc")
403
+
404
+ response = Curl.put("http://www.example.com", {foo: :nhe})
405
+ expect(response.body_str).to eq("abc")
406
+ end
407
+ end
385
408
  end
386
409
 
387
410
  describe "using #http_* methods for requests" do
@@ -22,7 +22,8 @@ module EMHttpRequestSpecHelper
22
22
  body: options[:body],
23
23
  file: options[:file],
24
24
  query: options[:query],
25
- head: head
25
+ head: head,
26
+ compressed: false
26
27
  }, &block)
27
28
  http.errback {
28
29
  error_set = true
@@ -4,7 +4,7 @@ require 'acceptance/excon/excon_spec_helper'
4
4
 
5
5
  describe "Excon" do
6
6
  include ExconSpecHelper
7
- include_context "with WebMock", :no_status_message, :no_url_auth
7
+ include_context "with WebMock", :no_url_auth
8
8
 
9
9
  it 'should allow Excon requests to use query hash paramters' do
10
10
  stub_request(:get, "http://example.com/resource/?a=1&b=2").to_return(body: "abc")
@@ -4,6 +4,7 @@ module ExconSpecHelper
4
4
 
5
5
  def http_request(method, uri, options = {}, &block)
6
6
  Excon.defaults[:ssl_verify_peer] = false
7
+ Excon.defaults[:ciphers] = 'DEFAULT'
7
8
  uri = Addressable::URI.heuristic_parse(uri)
8
9
  uri = uri.to_s.gsub(' ', '%20')
9
10
 
@@ -31,7 +32,7 @@ module ExconSpecHelper
31
32
  body: response.body,
32
33
  headers: headers,
33
34
  status: response.status.to_s,
34
- message: ""
35
+ message: response.reason_phrase
35
36
  end
36
37
 
37
38
  def client_timeout_exception_class
@@ -125,6 +125,10 @@ describe "HTTPClient" do
125
125
  before { WebMock.allow_net_connect! }
126
126
 
127
127
  it 'invokes the global_stub_request hook for each request' do
128
+ # Mock time to ensure that date headers match
129
+ now = Time.now
130
+ allow(Time).to receive(:now).and_return(now)
131
+
128
132
  request_signatures = []
129
133
  WebMock.globally_stub_request do |request_sig|
130
134
  request_signatures << request_sig
@@ -45,7 +45,13 @@ module NetHTTPSpecHelper
45
45
  end
46
46
 
47
47
  def client_timeout_exception_class
48
- Timeout::Error
48
+ if defined?(Net::OpenTimeout)
49
+ Net::OpenTimeout
50
+ elsif defined?(Net::HTTP::OpenTimeout)
51
+ Net::HTTP::OpenTimeout
52
+ else
53
+ Timeout::Error
54
+ end
49
55
  end
50
56
 
51
57
  def connection_refused_exception_class
@@ -95,38 +95,22 @@ unless RUBY_PLATFORM =~ /java/
95
95
  Encoding.default_internal = @encoding
96
96
  end
97
97
 
98
- it "should encode body with default encoding" do
98
+ it "should not encode body with default encoding" do
99
99
  stub_request(:get, "www.example.com").
100
100
  to_return(body: "Øl")
101
101
 
102
- expect(@sess.get("").body.encoding).to eq(Encoding::UTF_8)
102
+ expect(@sess.get("").body.encoding).to eq(Encoding::ASCII_8BIT)
103
+ expect(@sess.get("").inspectable_body.encoding).to eq(Encoding::UTF_8)
103
104
  end
104
105
 
105
- it "should encode body to default internal" do
106
+ it "should not encode body to default internal" do
106
107
  stub_request(:get, "www.example.com").
107
108
  to_return(headers: {'Content-Type' => 'text/html; charset=iso-8859-1'},
108
109
  body: "Øl".encode("iso-8859-1"))
109
110
 
110
- expect(@sess.get("").body.encoding).to eq(Encoding.default_internal)
111
+ expect(@sess.get("").body.encoding).to eq(Encoding::ASCII_8BIT)
112
+ expect(@sess.get("").decoded_body.encoding).to eq(Encoding.default_internal)
111
113
  end
112
-
113
- it "should encode body based on encoding-attribute in body" do
114
- stub_request(:get, "www.example.com").
115
- to_return(body: "<?xml encoding=\"iso-8859-1\">Øl</xml>".encode("iso-8859-1"))
116
-
117
- expect(@sess.get("").body.encoding).to eq(Encoding::ISO_8859_1)
118
- end
119
-
120
-
121
- it "should encode body based on Session#default_response_charset" do
122
- stub_request(:get, "www.example.com").
123
- to_return(body: "Øl".encode("iso-8859-1"))
124
-
125
- @sess.default_response_charset = "iso-8859-1"
126
-
127
- expect(@sess.get("").body.encoding).to eq(Encoding::ISO_8859_1)
128
- end
129
-
130
114
  end
131
115
  end
132
116
  end
@@ -21,9 +21,6 @@ require 'support/webmock_server'
21
21
  require 'support/my_rack_app'
22
22
  require 'support/failures'
23
23
 
24
- require 'simplecov'
25
- SimpleCov.start
26
-
27
24
  CURL_EXAMPLE_OUTPUT_PATH = File.expand_path('../support/example_curl_output.txt', __FILE__)
28
25
 
29
26
  RSpec.configure do |config|
@@ -43,7 +43,7 @@ describe WebMock::API do
43
43
  end
44
44
  end
45
45
 
46
- context "when args are an emtpy hash" do
46
+ context "when args are an empty hash" do
47
47
  subject {klass.new.hash_including({})}
48
48
 
49
49
  it "creates 'HashIncludingMatcher' with an empty hash" do
@@ -72,4 +72,4 @@ describe WebMock::API do
72
72
  end
73
73
 
74
74
  end
75
- end
75
+ end
@@ -14,6 +14,16 @@ describe WebMock::RackResponse do
14
14
  expect(response.body).to include('This is my root!')
15
15
  end
16
16
 
17
+ it "should set the reason phrase based on the status code" do
18
+ request = WebMock::RequestSignature.new(:get, 'www.example.com')
19
+ response = @rack_response.evaluate(request)
20
+ expect(response.status).to eq([200, "OK"])
21
+
22
+ request = WebMock::RequestSignature.new(:get, 'www.example.com/error')
23
+ response = @rack_response.evaluate(request)
24
+ expect(response.status).to eq([500, "Internal Server Error"])
25
+ end
26
+
17
27
  it "should behave correctly when the rack response is not a simple array of strings" do
18
28
  request = WebMock::RequestSignature.new(:get, 'www.example.com/non_array_response')
19
29
  response = @rack_response.evaluate(request)
@@ -22,7 +22,6 @@ module SharedTest
22
22
  end
23
23
 
24
24
  def test_error_on_non_stubbed_request
25
- default_ruby_headers = (RUBY_VERSION >= "1.9.1") ? "{'Accept'=>'*/*', 'User-Agent'=>'Ruby'}" : "{'Accept'=>'*/*'}"
26
25
  assert_raise_with_message(WebMock::NetConnectNotAllowedError, %r{Real HTTP connections are disabled. Unregistered request: GET http://www.example.net/ with headers}) do
27
26
  http_request(:get, "http://www.example.net/")
28
27
  end
@@ -48,7 +47,7 @@ module SharedTest
48
47
  end
49
48
  end
50
49
 
51
- def test_verification_that_expected_request_didnt_occur
50
+ def test_verification_that_expected_stub_didnt_occur
52
51
  expected_message = "The request ANY http://www.example.com/ was expected to execute 1 time but it executed 0 times"
53
52
  expected_message << "\n\nThe following requests were made:\n\nNo requests were made.\n============================================================"
54
53
  assert_fail(expected_message) do
@@ -78,6 +77,14 @@ module SharedTest
78
77
  end
79
78
  end
80
79
 
80
+ def test_refute_requested_alias
81
+ expected_message = %r(The request GET http://www.example.com/ was not expected to execute but it executed 1 time\n\nThe following requests were made:\n\nGET http://www.example.com/ with headers .+ was made 1 time\n\n============================================================)
82
+ assert_fail(expected_message) do
83
+ http_request(:get, "http://www.example.com/")
84
+ refute_requested(:get, "http://www.example.com")
85
+ end
86
+ end
87
+
81
88
  def test_verification_that_non_expected_stub_didnt_occur
82
89
  expected_message = %r(The request ANY http://www.example.com/ was not expected to execute but it executed 1 time\n\nThe following requests were made:\n\nGET http://www.example.com/ with headers .+ was made 1 time\n\n============================================================)
83
90
  assert_fail(expected_message) do
@@ -17,34 +17,30 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.required_ruby_version = '>= 1.9.3'
19
19
 
20
- s.add_dependency 'addressable', '>= 2.3.6'
21
- s.add_dependency 'crack', '>=0.3.2'
20
+ s.add_dependency 'addressable', '>= 2.3.6', ('<= 2.4.0' if RUBY_VERSION <= '1.9.3')
21
+ s.add_dependency 'crack', '>= 0.3.2'
22
22
  s.add_dependency 'hashdiff'
23
23
 
24
+ unless RUBY_PLATFORM =~ /java/
25
+ s.add_development_dependency 'patron', '>= 0.4.18'
26
+ s.add_development_dependency 'curb', '>= 0.7.16'
27
+ s.add_development_dependency 'typhoeus', '>= 0.5.0'
28
+ end
29
+
30
+ s.add_development_dependency 'http', ((RUBY_VERSION <= '1.9.3') ? '0.7.3' : '>= 0.8.0')
31
+ s.add_development_dependency 'manticore', '>= 0.5.1' if RUBY_PLATFORM =~ /java/
32
+ s.add_development_dependency 'rack', ((RUBY_VERSION < '2.2.2') ? '1.6.0' : '> 1.6')
24
33
  s.add_development_dependency 'rspec', '>= 3.1.0'
25
34
  s.add_development_dependency 'httpclient', '>= 2.2.4'
26
- s.add_development_dependency 'patron', '>= 0.4.18' unless RUBY_PLATFORM =~ /java/
27
35
  s.add_development_dependency 'em-http-request', '>= 1.0.2'
28
- s.add_development_dependency 'http', ((RUBY_VERSION <= '1.9.3') ? '0.7.3' : '>= 0.8.0')
29
36
  s.add_development_dependency 'em-synchrony', '>= 1.0.0'
30
- s.add_development_dependency 'curb', '>= 0.7.16' unless RUBY_PLATFORM =~ /java/
31
- s.add_development_dependency 'typhoeus', '>= 0.5.0' unless RUBY_PLATFORM =~ /java/
32
- s.add_development_dependency 'manticore', '>= 0.5.1' if RUBY_PLATFORM =~ /java/
33
37
  s.add_development_dependency 'excon', '>= 0.27.5'
34
38
  s.add_development_dependency 'minitest', '>= 5.0.0'
35
39
  s.add_development_dependency 'test-unit', '>= 3.0.0'
36
40
  s.add_development_dependency 'rdoc', '> 3.5.0'
37
- s.add_development_dependency 'rack'
38
- s.add_development_dependency 'simplecov'
39
41
 
40
42
  s.files = `git ls-files`.split("\n")
41
43
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
42
44
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
43
45
  s.require_paths = ['lib']
44
-
45
- s.post_install_message = <<-EOM
46
-
47
- WebMock 2.0 has some breaking changes. Please check the CHANGELOG: https://goo.gl/piDGLu
48
-
49
- EOM
50
46
  end
metadata CHANGED
@@ -1,253 +1,245 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
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-06-03 00:00:00.000000000 Z
11
+ date: 2016-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: 2.3.6
20
+ - - <=
21
+ - !ruby/object:Gem::Version
22
+ version: 2.4.0
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ">="
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: 2.3.6
30
+ - - <=
31
+ - !ruby/object:Gem::Version
32
+ version: 2.4.0
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: crack
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - ">="
37
+ - - ! '>='
32
38
  - !ruby/object:Gem::Version
33
39
  version: 0.3.2
34
40
  type: :runtime
35
41
  prerelease: false
36
42
  version_requirements: !ruby/object:Gem::Requirement
37
43
  requirements:
38
- - - ">="
44
+ - - ! '>='
39
45
  - !ruby/object:Gem::Version
40
46
  version: 0.3.2
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: hashdiff
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - ">="
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - ">="
58
+ - - ! '>='
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
- name: rspec
62
+ name: patron
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ">="
65
+ - - ! '>='
60
66
  - !ruby/object:Gem::Version
61
- version: 3.1.0
67
+ version: 0.4.18
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ">="
72
+ - - ! '>='
67
73
  - !ruby/object:Gem::Version
68
- version: 3.1.0
74
+ version: 0.4.18
69
75
  - !ruby/object:Gem::Dependency
70
- name: httpclient
76
+ name: curb
71
77
  requirement: !ruby/object:Gem::Requirement
72
78
  requirements:
73
- - - ">="
79
+ - - ! '>='
74
80
  - !ruby/object:Gem::Version
75
- version: 2.2.4
81
+ version: 0.7.16
76
82
  type: :development
77
83
  prerelease: false
78
84
  version_requirements: !ruby/object:Gem::Requirement
79
85
  requirements:
80
- - - ">="
86
+ - - ! '>='
81
87
  - !ruby/object:Gem::Version
82
- version: 2.2.4
88
+ version: 0.7.16
83
89
  - !ruby/object:Gem::Dependency
84
- name: patron
90
+ name: typhoeus
85
91
  requirement: !ruby/object:Gem::Requirement
86
92
  requirements:
87
- - - ">="
93
+ - - ! '>='
88
94
  - !ruby/object:Gem::Version
89
- version: 0.4.18
95
+ version: 0.5.0
90
96
  type: :development
91
97
  prerelease: false
92
98
  version_requirements: !ruby/object:Gem::Requirement
93
99
  requirements:
94
- - - ">="
100
+ - - ! '>='
95
101
  - !ruby/object:Gem::Version
96
- version: 0.4.18
102
+ version: 0.5.0
97
103
  - !ruby/object:Gem::Dependency
98
- name: em-http-request
104
+ name: http
99
105
  requirement: !ruby/object:Gem::Requirement
100
106
  requirements:
101
- - - ">="
107
+ - - '='
102
108
  - !ruby/object:Gem::Version
103
- version: 1.0.2
109
+ version: 0.7.3
104
110
  type: :development
105
111
  prerelease: false
106
112
  version_requirements: !ruby/object:Gem::Requirement
107
113
  requirements:
108
- - - ">="
114
+ - - '='
109
115
  - !ruby/object:Gem::Version
110
- version: 1.0.2
116
+ version: 0.7.3
111
117
  - !ruby/object:Gem::Dependency
112
- name: http
118
+ name: rack
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - '='
116
122
  - !ruby/object:Gem::Version
117
- version: 0.8.0
123
+ version: 1.6.0
118
124
  type: :development
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - '='
123
129
  - !ruby/object:Gem::Version
124
- version: 0.8.0
130
+ version: 1.6.0
125
131
  - !ruby/object:Gem::Dependency
126
- name: em-synchrony
132
+ name: rspec
127
133
  requirement: !ruby/object:Gem::Requirement
128
134
  requirements:
129
- - - ">="
135
+ - - ! '>='
130
136
  - !ruby/object:Gem::Version
131
- version: 1.0.0
137
+ version: 3.1.0
132
138
  type: :development
133
139
  prerelease: false
134
140
  version_requirements: !ruby/object:Gem::Requirement
135
141
  requirements:
136
- - - ">="
142
+ - - ! '>='
137
143
  - !ruby/object:Gem::Version
138
- version: 1.0.0
144
+ version: 3.1.0
139
145
  - !ruby/object:Gem::Dependency
140
- name: curb
146
+ name: httpclient
141
147
  requirement: !ruby/object:Gem::Requirement
142
148
  requirements:
143
- - - ">="
149
+ - - ! '>='
144
150
  - !ruby/object:Gem::Version
145
- version: 0.7.16
151
+ version: 2.2.4
146
152
  type: :development
147
153
  prerelease: false
148
154
  version_requirements: !ruby/object:Gem::Requirement
149
155
  requirements:
150
- - - ">="
156
+ - - ! '>='
151
157
  - !ruby/object:Gem::Version
152
- version: 0.7.16
158
+ version: 2.2.4
153
159
  - !ruby/object:Gem::Dependency
154
- name: typhoeus
160
+ name: em-http-request
155
161
  requirement: !ruby/object:Gem::Requirement
156
162
  requirements:
157
- - - ">="
163
+ - - ! '>='
158
164
  - !ruby/object:Gem::Version
159
- version: 0.5.0
165
+ version: 1.0.2
160
166
  type: :development
161
167
  prerelease: false
162
168
  version_requirements: !ruby/object:Gem::Requirement
163
169
  requirements:
164
- - - ">="
170
+ - - ! '>='
165
171
  - !ruby/object:Gem::Version
166
- version: 0.5.0
172
+ version: 1.0.2
173
+ - !ruby/object:Gem::Dependency
174
+ name: em-synchrony
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: 1.0.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ! '>='
185
+ - !ruby/object:Gem::Version
186
+ version: 1.0.0
167
187
  - !ruby/object:Gem::Dependency
168
188
  name: excon
169
189
  requirement: !ruby/object:Gem::Requirement
170
190
  requirements:
171
- - - ">="
191
+ - - ! '>='
172
192
  - !ruby/object:Gem::Version
173
193
  version: 0.27.5
174
194
  type: :development
175
195
  prerelease: false
176
196
  version_requirements: !ruby/object:Gem::Requirement
177
197
  requirements:
178
- - - ">="
198
+ - - ! '>='
179
199
  - !ruby/object:Gem::Version
180
200
  version: 0.27.5
181
201
  - !ruby/object:Gem::Dependency
182
202
  name: minitest
183
203
  requirement: !ruby/object:Gem::Requirement
184
204
  requirements:
185
- - - ">="
205
+ - - ! '>='
186
206
  - !ruby/object:Gem::Version
187
207
  version: 5.0.0
188
208
  type: :development
189
209
  prerelease: false
190
210
  version_requirements: !ruby/object:Gem::Requirement
191
211
  requirements:
192
- - - ">="
212
+ - - ! '>='
193
213
  - !ruby/object:Gem::Version
194
214
  version: 5.0.0
195
215
  - !ruby/object:Gem::Dependency
196
216
  name: test-unit
197
217
  requirement: !ruby/object:Gem::Requirement
198
218
  requirements:
199
- - - ">="
219
+ - - ! '>='
200
220
  - !ruby/object:Gem::Version
201
221
  version: 3.0.0
202
222
  type: :development
203
223
  prerelease: false
204
224
  version_requirements: !ruby/object:Gem::Requirement
205
225
  requirements:
206
- - - ">="
226
+ - - ! '>='
207
227
  - !ruby/object:Gem::Version
208
228
  version: 3.0.0
209
229
  - !ruby/object:Gem::Dependency
210
230
  name: rdoc
211
231
  requirement: !ruby/object:Gem::Requirement
212
232
  requirements:
213
- - - ">"
233
+ - - ! '>'
214
234
  - !ruby/object:Gem::Version
215
235
  version: 3.5.0
216
236
  type: :development
217
237
  prerelease: false
218
238
  version_requirements: !ruby/object:Gem::Requirement
219
239
  requirements:
220
- - - ">"
240
+ - - ! '>'
221
241
  - !ruby/object:Gem::Version
222
242
  version: 3.5.0
223
- - !ruby/object:Gem::Dependency
224
- name: rack
225
- requirement: !ruby/object:Gem::Requirement
226
- requirements:
227
- - - ">="
228
- - !ruby/object:Gem::Version
229
- version: '0'
230
- type: :development
231
- prerelease: false
232
- version_requirements: !ruby/object:Gem::Requirement
233
- requirements:
234
- - - ">="
235
- - !ruby/object:Gem::Version
236
- version: '0'
237
- - !ruby/object:Gem::Dependency
238
- name: simplecov
239
- requirement: !ruby/object:Gem::Requirement
240
- requirements:
241
- - - ">="
242
- - !ruby/object:Gem::Version
243
- version: '0'
244
- type: :development
245
- prerelease: false
246
- version_requirements: !ruby/object:Gem::Requirement
247
- requirements:
248
- - - ">="
249
- - !ruby/object:Gem::Version
250
- version: '0'
251
243
  description: WebMock allows stubbing HTTP requests and setting expectations on HTTP
252
244
  requests.
253
245
  email:
@@ -256,10 +248,10 @@ executables: []
256
248
  extensions: []
257
249
  extra_rdoc_files: []
258
250
  files:
259
- - ".gemtest"
260
- - ".gitignore"
261
- - ".rspec-tm"
262
- - ".travis.yml"
251
+ - .gemtest
252
+ - .gitignore
253
+ - .rspec-tm
254
+ - .travis.yml
263
255
  - CHANGELOG.md
264
256
  - Gemfile
265
257
  - LICENSE
@@ -392,26 +384,23 @@ homepage: http://github.com/bblimke/webmock
392
384
  licenses:
393
385
  - MIT
394
386
  metadata: {}
395
- post_install_message: |2+
396
-
397
- WebMock 2.0 has some breaking changes. Please check the CHANGELOG: https://goo.gl/piDGLu
398
-
387
+ post_install_message:
399
388
  rdoc_options: []
400
389
  require_paths:
401
390
  - lib
402
391
  required_ruby_version: !ruby/object:Gem::Requirement
403
392
  requirements:
404
- - - ">="
393
+ - - ! '>='
405
394
  - !ruby/object:Gem::Version
406
395
  version: 1.9.3
407
396
  required_rubygems_version: !ruby/object:Gem::Requirement
408
397
  requirements:
409
- - - ">="
398
+ - - ! '>='
410
399
  - !ruby/object:Gem::Version
411
400
  version: '0'
412
401
  requirements: []
413
402
  rubyforge_project: webmock
414
- rubygems_version: 2.2.2
403
+ rubygems_version: 2.6.8
415
404
  signing_key:
416
405
  specification_version: 4
417
406
  summary: Library for stubbing HTTP requests in Ruby.