webmock 3.26.3 → 3.27.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,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b552289a78e5a39c306f76471f81a823a59bea746c5fbb8c554e3896100cefa2
4
- data.tar.gz: a66bd38a392dec7972fe8da0c0e40a8a46587bdf0c0490f869848fcbb76ea507
3
+ metadata.gz: 9f11e25e75b578b0d4ce7d2c98cf02b893872c9766d7b707a21fb79e0293963c
4
+ data.tar.gz: 205c01525a5240686ca49c63be018e962db268173bcd68406aef76a5452cc96b
5
5
  SHA512:
6
- metadata.gz: b436ba4559ccff7452d374aff133542117a477497cbd0c1b5b2764fe5a672650a2d2887fde59f7320b1da8b896751215215c9ee3c90d5cc0cb883e5a12cf6554
7
- data.tar.gz: e6fdeb0bbce8347063092209e1b89b61ac46903abb0ad13b310a990e8c074d401f2e1c28ff79b851b5da600a6e74bad5848c3dca97d32434cc2212345d0e6a99
6
+ metadata.gz: b10e29592ef2d90396ec90b2d5717584e942748eccebe200748609295be1111616b14c706c503ad54543f3ee90e54e0e06ddfd9860b3ed0e093cda225df714a4
7
+ data.tar.gz: cc80e50037959e1b9ff6fa600eea3c309e57c3aa6083d40e11288aecc1e81ebf1115cf07c10fba310543a58161674c8b62e829c7e5eedb9dadb8e6e81e894263
data/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ # 3.27.0
4
+
5
+ * Fix crash in async-http adapter when a request header has a nil value
6
+
7
+ Thanks to [hikmetba-bit](https://github.com/hikmetba-bit)
8
+
9
+ * The async-http adapter now matches stubs against raw request header values instead of values parsed by protocol-http, consistent with the other adapters
10
+
11
+ * Add RSpec `hash_excluding` support to body matching
12
+
13
+ Thanks to [Chris Gunther](https://github.com/cgunther)
14
+
15
+ * Fix `hash_excluding` ignoring keys given without a value and regexp values, in both query and body matching
16
+
17
+ * Fix crash when matching a request that has more than one `Content-Type` header
18
+
19
+ # 3.26.4
20
+
21
+ * Fix race condition in `HTTPClient` adapter async requests by @koic in #1131
22
+
3
23
  # 3.26.3
4
24
 
5
25
  * Confirm to work with curb 1.3.7
data/README.md CHANGED
@@ -186,6 +186,18 @@ RestClient.post('www.example.com', "data[a]=1&data[b]=five&x=1",
186
186
  :content_type => 'application/x-www-form-urlencoded') # ===> Success
187
187
  ```
188
188
 
189
+ ### Matching request body against excluding partial hash.
190
+
191
+ ```ruby
192
+ stub_request(:post, "www.example.com").
193
+ with(body: hash_excluding({data: {a: '2', b: 'six'}}))
194
+
195
+ RestClient.post('www.example.com', "data[a]=1&data[b]=five&x=1",
196
+ :content_type => 'application/x-www-form-urlencoded') # ===> Success
197
+ RestClient.post('www.example.com', "data[a]=2&data[b]=six&x=1",
198
+ :content_type => 'application/x-www-form-urlencoded') # ===> Failure
199
+ ```
200
+
189
201
  ### Matching custom request headers
190
202
 
191
203
  ```ruby
@@ -111,11 +111,23 @@ if defined?(Async::HTTP)
111
111
  WebMock::RequestSignature.new(
112
112
  request.method.downcase.to_sym,
113
113
  "#{request.scheme}://#{request.authority}#{request.path}",
114
- headers: request.headers.to_h,
114
+ headers: build_request_headers(request),
115
115
  body: body
116
116
  )
117
117
  end
118
118
 
119
+ # Protocol::HTTP::Headers#to_h parses values through the header policies
120
+ # (since protocol-http 0.56.0) and raises when a value is nil. Build the
121
+ # hash from the raw fields instead, skipping entries with no value since
122
+ # they carry nothing to match against. Keys are downcased so the same
123
+ # header sent in different casings is grouped together.
124
+ def build_request_headers(request)
125
+ request.headers.each.each_with_object({}) do |(key, value), headers|
126
+ next if value.nil?
127
+ (headers[key.downcase] ||= []) << value
128
+ end
129
+ end
130
+
119
131
  def build_webmock_response(response)
120
132
  body = response.read
121
133
  response.body = ::Protocol::HTTP::Body::Buffered.wrap(body)
@@ -112,7 +112,10 @@ if defined?(::HTTPClient)
112
112
  request_signature = build_request_signature(req)
113
113
  webmock_request_signatures << request_signature
114
114
 
115
- if webmock_responses[request_signature] || WebMock.net_connect_allowed?(request_signature.uri)
115
+ if webmock_responses[request_signature]
116
+ webmock_response = webmock_responses.delete(request_signature)
117
+ async_conn_for_stubbed_request(req, request_signature, webmock_response)
118
+ elsif WebMock.net_connect_allowed?(request_signature.uri)
116
119
  conn = super
117
120
  conn.async_thread[WEBMOCK_HTTPCLIENT_REQUEST_SIGNATURES] = Thread.current[WEBMOCK_HTTPCLIENT_REQUEST_SIGNATURES]
118
121
  conn.async_thread[WEBMOCK_HTTPCLIENT_RESPONSES] = Thread.current[WEBMOCK_HTTPCLIENT_RESPONSES]
@@ -227,6 +230,30 @@ if defined?(::HTTPClient)
227
230
  Thread.current[WEBMOCK_HTTPCLIENT_REQUEST_SIGNATURES] = nil
228
231
  Thread.current[WEBMOCK_HTTPCLIENT_RESPONSES] = nil
229
232
  end
233
+
234
+ # The async thread must not go through do_get, which would rebuild the request signature.
235
+ # Rebuilding calls headers_from_session again, and the session sets a Date header with
236
+ # 1 second resolution, so a signature built later can differ from the one the response was
237
+ # cached under, which makes the thread evaluate the stub registry again and consume
238
+ # an extra response from the stub sequence. The thread only delivers what the caller
239
+ # already evaluated, mirroring do_get's stubbed branch.
240
+ def async_conn_for_stubbed_request(req, request_signature, webmock_response)
241
+ conn = HTTPClient::Connection.new
242
+ conn.async_thread = Thread.new do
243
+ begin
244
+ WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
245
+ response = build_httpclient_response(webmock_response, true, req.header)
246
+ @request_filter.each do |filter|
247
+ filter.filter_response(req, response)
248
+ end
249
+ conn.push(response)
250
+ WebMock::CallbackRegistry.invoke_callbacks({lib: :httpclient}, request_signature, webmock_response)
251
+ rescue Exception => e
252
+ conn.push e
253
+ end
254
+ end
255
+ conn
256
+ end
230
257
  end
231
258
 
232
259
  class WebMockHTTPClient < HTTPClient
@@ -6,7 +6,7 @@ module WebMock
6
6
  # https://github.com/rspec/rspec-mocks/blob/master/lib/rspec/mocks/argument_matchers.rb
7
7
  class HashExcludingMatcher < HashArgumentMatcher
8
8
  def ==(actual)
9
- super { |key, value| !actual.key?(key) || value != actual[key] }
9
+ super { |key, value| !actual.key?(key) || !(value === actual[key]) }
10
10
  end
11
11
 
12
12
  def inspect
@@ -33,7 +33,7 @@ module WebMock
33
33
  end
34
34
 
35
35
  def matches?(request_signature)
36
- content_type = request_signature.headers['Content-Type'] if request_signature.headers
36
+ content_type = request_signature.content_type
37
37
  content_type = content_type.split(';').first if content_type
38
38
  @method_pattern.matches?(request_signature.method) &&
39
39
  @uri_pattern.matches?(request_signature.uri) &&
@@ -275,6 +275,8 @@ module WebMock
275
275
  normalize_hash(pattern)
276
276
  elsif rSpecHashIncludingMatcher?(pattern)
277
277
  WebMock::Matchers::HashIncludingMatcher.from_rspec_matcher(pattern)
278
+ elsif rSpecHashExcludingMatcher?(pattern)
279
+ WebMock::Matchers::HashExcludingMatcher.from_rspec_matcher(pattern)
278
280
  else
279
281
  pattern
280
282
  end
@@ -36,12 +36,18 @@ module WebMock
36
36
  end
37
37
  alias == eql?
38
38
 
39
+ # A request can carry Content-Type more than once, in which case the
40
+ # normalized header value is an Array. Use its first value.
41
+ def content_type
42
+ Array(headers&.fetch('Content-Type', nil)).first
43
+ end
44
+
39
45
  def url_encoded?
40
- !!(headers&.fetch('Content-Type', nil)&.start_with?('application/x-www-form-urlencoded'))
46
+ !!content_type&.start_with?('application/x-www-form-urlencoded')
41
47
  end
42
48
 
43
49
  def json_headers?
44
- !!(headers&.fetch('Content-Type', nil)&.start_with?('application/json'))
50
+ !!content_type&.start_with?('application/json')
45
51
  end
46
52
 
47
53
  private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module WebMock
4
- VERSION = '3.26.3' unless defined?(::WebMock::VERSION)
4
+ VERSION = '3.27.0' unless defined?(::WebMock::VERSION)
5
5
  end
metadata CHANGED
@@ -1,423 +1,385 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webmock
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.26.3
4
+ version: 3.27.0
5
5
  platform: ruby
6
6
  authors:
7
- - Bartosz Blimke
7
+ - Bartosz Blimke
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-10-10 00:00:00.000000000 Z
11
12
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: addressable
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- -
17
- - ">="
18
- - !ruby/object:Gem::Version
19
- version: 2.8.0
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- -
25
- - ">="
26
- - !ruby/object:Gem::Version
27
- version: 2.8.0
28
- - !ruby/object:Gem::Dependency
29
- name: crack
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- -
33
- - ">="
34
- - !ruby/object:Gem::Version
35
- version: 0.3.2
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- -
41
- - ">="
42
- - !ruby/object:Gem::Version
43
- version: 0.3.2
44
- - !ruby/object:Gem::Dependency
45
- name: hashdiff
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- -
49
- - ">="
50
- - !ruby/object:Gem::Version
51
- version: 0.4.0
52
- -
53
- - "<"
54
- - !ruby/object:Gem::Version
55
- version: 2.0.0
56
- type: :runtime
57
- prerelease: false
58
- version_requirements: !ruby/object:Gem::Requirement
59
- requirements:
60
- -
61
- - ">="
62
- - !ruby/object:Gem::Version
63
- version: 0.4.0
64
- -
65
- - "<"
66
- - !ruby/object:Gem::Version
67
- version: 2.0.0
68
- - !ruby/object:Gem::Dependency
69
- name: patron
70
- requirement: !ruby/object:Gem::Requirement
71
- requirements:
72
- -
73
- - ">="
74
- - !ruby/object:Gem::Version
75
- version: 0.4.18
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- -
81
- - ">="
82
- - !ruby/object:Gem::Version
83
- version: 0.4.18
84
- - !ruby/object:Gem::Dependency
85
- name: curb
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- -
89
- - ">="
90
- - !ruby/object:Gem::Version
91
- version: 0.7.16
92
- type: :development
93
- prerelease: false
94
- version_requirements: !ruby/object:Gem::Requirement
95
- requirements:
96
- -
97
- - ">="
98
- - !ruby/object:Gem::Version
99
- version: 0.7.16
100
- - !ruby/object:Gem::Dependency
101
- name: typhoeus
102
- requirement: !ruby/object:Gem::Requirement
103
- requirements:
104
- -
105
- - ">="
106
- - !ruby/object:Gem::Version
107
- version: 0.5.0
108
- type: :development
109
- prerelease: false
110
- version_requirements: !ruby/object:Gem::Requirement
111
- requirements:
112
- -
113
- - ">="
114
- - !ruby/object:Gem::Version
115
- version: 0.5.0
116
- - !ruby/object:Gem::Dependency
117
- name: em-http-request
118
- requirement: !ruby/object:Gem::Requirement
119
- requirements:
120
- -
121
- - ">="
122
- - !ruby/object:Gem::Version
123
- version: 1.0.2
124
- type: :development
125
- prerelease: false
126
- version_requirements: !ruby/object:Gem::Requirement
127
- requirements:
128
- -
129
- - ">="
130
- - !ruby/object:Gem::Version
131
- version: 1.0.2
132
- - !ruby/object:Gem::Dependency
133
- name: em-synchrony
134
- requirement: !ruby/object:Gem::Requirement
135
- requirements:
136
- -
137
- - ">="
138
- - !ruby/object:Gem::Version
139
- version: 1.0.0
140
- type: :development
141
- prerelease: false
142
- version_requirements: !ruby/object:Gem::Requirement
143
- requirements:
144
- -
145
- - ">="
146
- - !ruby/object:Gem::Version
147
- version: 1.0.0
148
- - !ruby/object:Gem::Dependency
149
- name: async-http
150
- requirement: !ruby/object:Gem::Requirement
151
- requirements:
152
- -
153
- - ">="
154
- - !ruby/object:Gem::Version
155
- version: 0.48.0
156
- type: :development
157
- prerelease: false
158
- version_requirements: !ruby/object:Gem::Requirement
159
- requirements:
160
- -
161
- - ">="
162
- - !ruby/object:Gem::Version
163
- version: 0.48.0
164
- - !ruby/object:Gem::Dependency
165
- name: http
166
- requirement: !ruby/object:Gem::Requirement
167
- requirements:
168
- -
169
- - ">="
170
- - !ruby/object:Gem::Version
171
- version: 0.8.0
172
- type: :development
173
- prerelease: false
174
- version_requirements: !ruby/object:Gem::Requirement
175
- requirements:
176
- -
177
- - ">="
178
- - !ruby/object:Gem::Version
179
- version: 0.8.0
180
- - !ruby/object:Gem::Dependency
181
- name: rack
182
- requirement: !ruby/object:Gem::Requirement
183
- requirements:
184
- -
185
- - ">"
186
- - !ruby/object:Gem::Version
187
- version: "1.6"
188
- type: :development
189
- prerelease: false
190
- version_requirements: !ruby/object:Gem::Requirement
191
- requirements:
192
- -
193
- - ">"
194
- - !ruby/object:Gem::Version
195
- version: "1.6"
196
- - !ruby/object:Gem::Dependency
197
- name: rspec
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- -
201
- - ">="
202
- - !ruby/object:Gem::Version
203
- version: 3.1.0
204
- type: :development
205
- prerelease: false
206
- version_requirements: !ruby/object:Gem::Requirement
207
- requirements:
208
- -
209
- - ">="
210
- - !ruby/object:Gem::Version
211
- version: 3.1.0
212
- - !ruby/object:Gem::Dependency
213
- name: httpclient
214
- requirement: !ruby/object:Gem::Requirement
215
- requirements:
216
- -
217
- - ">="
218
- - !ruby/object:Gem::Version
219
- version: 2.2.4
220
- type: :development
221
- prerelease: false
222
- version_requirements: !ruby/object:Gem::Requirement
223
- requirements:
224
- -
225
- - ">="
226
- - !ruby/object:Gem::Version
227
- version: 2.2.4
228
- - !ruby/object:Gem::Dependency
229
- name: excon
230
- requirement: !ruby/object:Gem::Requirement
231
- requirements:
232
- -
233
- - ">="
234
- - !ruby/object:Gem::Version
235
- version: 0.27.5
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- -
241
- - ">="
242
- - !ruby/object:Gem::Version
243
- version: 0.27.5
244
- - !ruby/object:Gem::Dependency
245
- name: minitest
246
- requirement: !ruby/object:Gem::Requirement
247
- requirements:
248
- -
249
- - ">="
250
- - !ruby/object:Gem::Version
251
- version: 5.0.0
252
- type: :development
253
- prerelease: false
254
- version_requirements: !ruby/object:Gem::Requirement
255
- requirements:
256
- -
257
- - ">="
258
- - !ruby/object:Gem::Version
259
- version: 5.0.0
260
- - !ruby/object:Gem::Dependency
261
- name: test-unit
262
- requirement: !ruby/object:Gem::Requirement
263
- requirements:
264
- -
265
- - ">="
266
- - !ruby/object:Gem::Version
267
- version: 3.0.0
268
- type: :development
269
- prerelease: false
270
- version_requirements: !ruby/object:Gem::Requirement
271
- requirements:
272
- -
273
- - ">="
274
- - !ruby/object:Gem::Version
275
- version: 3.0.0
276
- - !ruby/object:Gem::Dependency
277
- name: rdoc
278
- requirement: !ruby/object:Gem::Requirement
279
- requirements:
280
- -
281
- - ">"
282
- - !ruby/object:Gem::Version
283
- version: 3.5.0
284
- type: :development
285
- prerelease: false
286
- version_requirements: !ruby/object:Gem::Requirement
287
- requirements:
288
- -
289
- - ">"
290
- - !ruby/object:Gem::Version
291
- version: 3.5.0
292
- - !ruby/object:Gem::Dependency
293
- name: webrick
294
- requirement: !ruby/object:Gem::Requirement
295
- requirements:
296
- -
297
- - ">="
298
- - !ruby/object:Gem::Version
299
- version: "0"
300
- type: :development
301
- prerelease: false
302
- version_requirements: !ruby/object:Gem::Requirement
303
- requirements:
304
- -
305
- - ">="
306
- - !ruby/object:Gem::Version
307
- version: "0"
308
- - !ruby/object:Gem::Dependency
309
- name: rspec-retry
310
- requirement: !ruby/object:Gem::Requirement
311
- requirements:
312
- -
313
- - ">="
314
- - !ruby/object:Gem::Version
315
- version: "0"
316
- type: :development
317
- prerelease: false
318
- version_requirements: !ruby/object:Gem::Requirement
319
- requirements:
320
- -
321
- - ">="
322
- - !ruby/object:Gem::Version
323
- version: "0"
324
- description: WebMock allows stubbing HTTP requests and setting expectations on HTTP requests.
13
+ - !ruby/object:Gem::Dependency
14
+ name: addressable
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.8.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.8.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: crack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.3.2
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.3.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: hashdiff
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.4.0
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: 2.0.0
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 0.4.0
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: 2.0.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: patron
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: 0.4.18
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.4.18
75
+ - !ruby/object:Gem::Dependency
76
+ name: curb
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: 0.7.16
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 0.7.16
89
+ - !ruby/object:Gem::Dependency
90
+ name: typhoeus
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: 0.5.0
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: 0.5.0
103
+ - !ruby/object:Gem::Dependency
104
+ name: em-http-request
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 1.0.2
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 1.0.2
117
+ - !ruby/object:Gem::Dependency
118
+ name: em-synchrony
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 1.0.0
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: 1.0.0
131
+ - !ruby/object:Gem::Dependency
132
+ name: async-http
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 0.48.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 0.48.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: http
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: 0.8.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: 0.8.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: rack
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">"
164
+ - !ruby/object:Gem::Version
165
+ version: '1.6'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">"
171
+ - !ruby/object:Gem::Version
172
+ version: '1.6'
173
+ - !ruby/object:Gem::Dependency
174
+ name: rspec
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: 3.1.0
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 3.1.0
187
+ - !ruby/object:Gem::Dependency
188
+ name: httpclient
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: 2.2.4
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: 2.2.4
201
+ - !ruby/object:Gem::Dependency
202
+ name: excon
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: 0.27.5
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: 0.27.5
215
+ - !ruby/object:Gem::Dependency
216
+ name: minitest
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ">="
220
+ - !ruby/object:Gem::Version
221
+ version: 5.0.0
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ version: 5.0.0
229
+ - !ruby/object:Gem::Dependency
230
+ name: test-unit
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 3.0.0
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ">="
241
+ - !ruby/object:Gem::Version
242
+ version: 3.0.0
243
+ - !ruby/object:Gem::Dependency
244
+ name: rdoc
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ">"
248
+ - !ruby/object:Gem::Version
249
+ version: 3.5.0
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ">"
255
+ - !ruby/object:Gem::Version
256
+ version: 3.5.0
257
+ - !ruby/object:Gem::Dependency
258
+ name: webrick
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ">="
262
+ - !ruby/object:Gem::Version
263
+ version: '0'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: '0'
271
+ - !ruby/object:Gem::Dependency
272
+ name: rspec-retry
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ description: WebMock allows stubbing HTTP requests and setting expectations on HTTP
286
+ requests.
325
287
  email:
326
- - bartosz.blimke@gmail.com
288
+ - bartosz.blimke@gmail.com
327
289
  executables: []
328
290
  extensions: []
329
291
  extra_rdoc_files: []
330
292
  files:
331
- - CHANGELOG.md
332
- - LICENSE
333
- - README.md
334
- - lib/webmock.rb
335
- - lib/webmock/api.rb
336
- - lib/webmock/assertion_failure.rb
337
- - lib/webmock/callback_registry.rb
338
- - lib/webmock/config.rb
339
- - lib/webmock/cucumber.rb
340
- - lib/webmock/deprecation.rb
341
- - lib/webmock/errors.rb
342
- - lib/webmock/http_lib_adapters/async_http_client_adapter.rb
343
- - lib/webmock/http_lib_adapters/curb_adapter.rb
344
- - lib/webmock/http_lib_adapters/em_http_request_adapter.rb
345
- - lib/webmock/http_lib_adapters/excon_adapter.rb
346
- - lib/webmock/http_lib_adapters/http_lib_adapter.rb
347
- - lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb
348
- - lib/webmock/http_lib_adapters/http_rb/client.rb
349
- - lib/webmock/http_lib_adapters/http_rb/request.rb
350
- - lib/webmock/http_lib_adapters/http_rb/response.rb
351
- - lib/webmock/http_lib_adapters/http_rb/streamer.rb
352
- - lib/webmock/http_lib_adapters/http_rb/webmock.rb
353
- - lib/webmock/http_lib_adapters/http_rb_adapter.rb
354
- - lib/webmock/http_lib_adapters/httpclient_adapter.rb
355
- - lib/webmock/http_lib_adapters/manticore_adapter.rb
356
- - lib/webmock/http_lib_adapters/net_http.rb
357
- - lib/webmock/http_lib_adapters/net_http_response.rb
358
- - lib/webmock/http_lib_adapters/patron_adapter.rb
359
- - lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
360
- - lib/webmock/matchers/any_arg_matcher.rb
361
- - lib/webmock/matchers/hash_argument_matcher.rb
362
- - lib/webmock/matchers/hash_excluding_matcher.rb
363
- - lib/webmock/matchers/hash_including_matcher.rb
364
- - lib/webmock/minitest.rb
365
- - lib/webmock/rack_response.rb
366
- - lib/webmock/request_body_diff.rb
367
- - lib/webmock/request_execution_verifier.rb
368
- - lib/webmock/request_pattern.rb
369
- - lib/webmock/request_registry.rb
370
- - lib/webmock/request_signature.rb
371
- - lib/webmock/request_signature_snippet.rb
372
- - lib/webmock/request_stub.rb
373
- - lib/webmock/response.rb
374
- - lib/webmock/responses_sequence.rb
375
- - lib/webmock/rspec.rb
376
- - lib/webmock/rspec/matchers.rb
377
- - lib/webmock/rspec/matchers/request_pattern_matcher.rb
378
- - lib/webmock/rspec/matchers/webmock_matcher.rb
379
- - lib/webmock/stub_registry.rb
380
- - lib/webmock/stub_request_snippet.rb
381
- - lib/webmock/test_unit.rb
382
- - lib/webmock/util/hash_counter.rb
383
- - lib/webmock/util/hash_keys_stringifier.rb
384
- - lib/webmock/util/hash_validator.rb
385
- - lib/webmock/util/headers.rb
386
- - lib/webmock/util/parsers/json.rb
387
- - lib/webmock/util/parsers/parse_error.rb
388
- - lib/webmock/util/parsers/xml.rb
389
- - lib/webmock/util/query_mapper.rb
390
- - lib/webmock/util/uri.rb
391
- - lib/webmock/util/values_stringifier.rb
392
- - lib/webmock/util/version_checker.rb
393
- - lib/webmock/version.rb
394
- - lib/webmock/webmock.rb
395
- homepage: "https://github.com/bblimke/webmock"
293
+ - CHANGELOG.md
294
+ - LICENSE
295
+ - README.md
296
+ - lib/webmock.rb
297
+ - lib/webmock/api.rb
298
+ - lib/webmock/assertion_failure.rb
299
+ - lib/webmock/callback_registry.rb
300
+ - lib/webmock/config.rb
301
+ - lib/webmock/cucumber.rb
302
+ - lib/webmock/deprecation.rb
303
+ - lib/webmock/errors.rb
304
+ - lib/webmock/http_lib_adapters/async_http_client_adapter.rb
305
+ - lib/webmock/http_lib_adapters/curb_adapter.rb
306
+ - lib/webmock/http_lib_adapters/em_http_request_adapter.rb
307
+ - lib/webmock/http_lib_adapters/excon_adapter.rb
308
+ - lib/webmock/http_lib_adapters/http_lib_adapter.rb
309
+ - lib/webmock/http_lib_adapters/http_lib_adapter_registry.rb
310
+ - lib/webmock/http_lib_adapters/http_rb/client.rb
311
+ - lib/webmock/http_lib_adapters/http_rb/request.rb
312
+ - lib/webmock/http_lib_adapters/http_rb/response.rb
313
+ - lib/webmock/http_lib_adapters/http_rb/streamer.rb
314
+ - lib/webmock/http_lib_adapters/http_rb/webmock.rb
315
+ - lib/webmock/http_lib_adapters/http_rb_adapter.rb
316
+ - lib/webmock/http_lib_adapters/httpclient_adapter.rb
317
+ - lib/webmock/http_lib_adapters/manticore_adapter.rb
318
+ - lib/webmock/http_lib_adapters/net_http.rb
319
+ - lib/webmock/http_lib_adapters/net_http_response.rb
320
+ - lib/webmock/http_lib_adapters/patron_adapter.rb
321
+ - lib/webmock/http_lib_adapters/typhoeus_hydra_adapter.rb
322
+ - lib/webmock/matchers/any_arg_matcher.rb
323
+ - lib/webmock/matchers/hash_argument_matcher.rb
324
+ - lib/webmock/matchers/hash_excluding_matcher.rb
325
+ - lib/webmock/matchers/hash_including_matcher.rb
326
+ - lib/webmock/minitest.rb
327
+ - lib/webmock/rack_response.rb
328
+ - lib/webmock/request_body_diff.rb
329
+ - lib/webmock/request_execution_verifier.rb
330
+ - lib/webmock/request_pattern.rb
331
+ - lib/webmock/request_registry.rb
332
+ - lib/webmock/request_signature.rb
333
+ - lib/webmock/request_signature_snippet.rb
334
+ - lib/webmock/request_stub.rb
335
+ - lib/webmock/response.rb
336
+ - lib/webmock/responses_sequence.rb
337
+ - lib/webmock/rspec.rb
338
+ - lib/webmock/rspec/matchers.rb
339
+ - lib/webmock/rspec/matchers/request_pattern_matcher.rb
340
+ - lib/webmock/rspec/matchers/webmock_matcher.rb
341
+ - lib/webmock/stub_registry.rb
342
+ - lib/webmock/stub_request_snippet.rb
343
+ - lib/webmock/test_unit.rb
344
+ - lib/webmock/util/hash_counter.rb
345
+ - lib/webmock/util/hash_keys_stringifier.rb
346
+ - lib/webmock/util/hash_validator.rb
347
+ - lib/webmock/util/headers.rb
348
+ - lib/webmock/util/parsers/json.rb
349
+ - lib/webmock/util/parsers/parse_error.rb
350
+ - lib/webmock/util/parsers/xml.rb
351
+ - lib/webmock/util/query_mapper.rb
352
+ - lib/webmock/util/uri.rb
353
+ - lib/webmock/util/values_stringifier.rb
354
+ - lib/webmock/util/version_checker.rb
355
+ - lib/webmock/version.rb
356
+ - lib/webmock/webmock.rb
357
+ homepage: https://github.com/bblimke/webmock
396
358
  licenses:
397
- - MIT
359
+ - MIT
398
360
  metadata:
399
- bug_tracker_uri: "https://github.com/bblimke/webmock/issues"
400
- changelog_uri: "https://github.com/bblimke/webmock/blob/v3.26.3/CHANGELOG.md"
401
- documentation_uri: "https://www.rubydoc.info/gems/webmock/3.26.3"
402
- source_code_uri: "https://github.com/bblimke/webmock/tree/v3.26.3"
403
- wiki_uri: "https://github.com/bblimke/webmock/wiki"
361
+ bug_tracker_uri: https://github.com/bblimke/webmock/issues
362
+ changelog_uri: https://github.com/bblimke/webmock/blob/v3.27.0/CHANGELOG.md
363
+ documentation_uri: https://www.rubydoc.info/gems/webmock/3.27.0
364
+ source_code_uri: https://github.com/bblimke/webmock/tree/v3.27.0
365
+ wiki_uri: https://github.com/bblimke/webmock/wiki
366
+ post_install_message:
404
367
  rdoc_options: []
405
368
  require_paths:
406
- - lib
369
+ - lib
407
370
  required_ruby_version: !ruby/object:Gem::Requirement
408
371
  requirements:
409
- -
410
- - ">="
411
- - !ruby/object:Gem::Version
412
- version: "2.6"
372
+ - - ">="
373
+ - !ruby/object:Gem::Version
374
+ version: '2.6'
413
375
  required_rubygems_version: !ruby/object:Gem::Requirement
414
376
  requirements:
415
- -
416
- - ">="
417
- - !ruby/object:Gem::Version
418
- version: "0"
377
+ - - ">="
378
+ - !ruby/object:Gem::Version
379
+ version: '0'
419
380
  requirements: []
420
- rubygems_version: 4.1.0.dev
381
+ rubygems_version: 3.5.16
382
+ signing_key:
421
383
  specification_version: 4
422
384
  summary: Library for stubbing HTTP requests in Ruby.
423
385
  test_files: []