webmock 3.4.2 → 3.5.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 +5 -5
- data/.travis.yml +6 -6
- data/CHANGELOG.md +20 -0
- data/README.md +25 -0
- data/lib/webmock.rb +52 -52
- data/lib/webmock/api.rb +4 -0
- data/lib/webmock/http_lib_adapters/net_http.rb +2 -1
- data/lib/webmock/stub_registry.rb +1 -1
- data/lib/webmock/util/hash_counter.rb +2 -2
- data/lib/webmock/util/query_mapper.rb +1 -1
- data/lib/webmock/version.rb +1 -1
- data/spec/acceptance/excon/excon_spec.rb +4 -2
- data/spec/acceptance/shared/callbacks.rb +1 -1
- data/spec/unit/api_spec.rb +19 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2fcd3ec57f1f8be3dbf2685777853444680221a9c0230e6c068d3581bfb831a4
|
4
|
+
data.tar.gz: c14190f8962b927f5d1c5493db24a226c6cc56d54aff9d34589e7fa3adbf44b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ed35459642359c3dc62cae4016b636110432e2bef6b6047acc5bb11d7ffa6dd180cb8938ad6e6dc522a4cb3429150ad7533e442df5fe8ab2fc3b9638126da7c
|
7
|
+
data.tar.gz: 2e7ebfc8da28d95acf8477b7166dba7e19657ba5d8fd7c4f44ae19985d216c639250c6c7ff47e2b65b007f58791f0116509a15f98b8babd75fd0acb66d00ca1d
|
data/.travis.yml
CHANGED
@@ -2,14 +2,14 @@ before_install:
|
|
2
2
|
- gem update --system
|
3
3
|
- gem update bundler
|
4
4
|
rvm:
|
5
|
-
- 2.
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
5
|
+
- 2.3.8
|
6
|
+
- 2.4.5
|
7
|
+
- 2.5.3
|
8
|
+
- 2.6.0
|
9
9
|
- rbx-2
|
10
10
|
- ruby-head
|
11
|
-
- jruby-9.
|
12
|
-
- jruby-9.
|
11
|
+
- jruby-9.1.17.0
|
12
|
+
- jruby-9.2.5.0
|
13
13
|
- jruby-head
|
14
14
|
matrix:
|
15
15
|
allow_failures:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 3.5.0
|
4
|
+
|
5
|
+
* Ruby 2.6.0 support
|
6
|
+
|
7
|
+
Thanks to [Arkadiy Tetelman](https://github.com/arkadiyt)
|
8
|
+
|
9
|
+
* Added `WebMock.reset_executed_requests!` method.
|
10
|
+
|
11
|
+
stub_get = stub_request(:get, "www.example.com")
|
12
|
+
Net::HTTP.get('www.example.com', '/')
|
13
|
+
WebMock::RequestRegistry.instance.times_executed(stub_get.request_pattern) # => 1
|
14
|
+
reset_executed_requests!
|
15
|
+
WebMock::RequestRegistry.instance.times_executed(stub_get.request_pattern) # => 0
|
16
|
+
|
17
|
+
Thanks to [Olia Kremmyda](https://github.com/oliakremmyda)
|
18
|
+
|
19
|
+
* Performance improvements
|
20
|
+
|
21
|
+
Thanks to [Pavel Rosický](https://github.com/ahorek)
|
22
|
+
|
3
23
|
## 3.4.2
|
4
24
|
|
5
25
|
* Fixed `rbuf_fill` in Net::HTTP adapter to be thread-safe
|
data/README.md
CHANGED
@@ -705,6 +705,28 @@ Net::HTTP.get('www.example.com', '/') # ===> Failure
|
|
705
705
|
assert_not_requested :get, "www.example.com" # ===> Success
|
706
706
|
```
|
707
707
|
|
708
|
+
## Clearing request counters
|
709
|
+
|
710
|
+
If you want to reset **only** the counters of the executed requests use `WebMock.reset_executed_requests!`
|
711
|
+
|
712
|
+
```ruby
|
713
|
+
stub = stub_request(:get, "www.example.com")
|
714
|
+
stub2 = stub_request(:get, "www.example2.com")
|
715
|
+
|
716
|
+
Net::HTTP.get('www.example.com', '/')
|
717
|
+
Net::HTTP.get('www.example.com', '/')
|
718
|
+
|
719
|
+
Net::HTTP.get('www.example2.com', '/')
|
720
|
+
|
721
|
+
expect(stub).to have_been_requested.times(2)
|
722
|
+
expect(stub2).to have_been_requested.times(1)
|
723
|
+
|
724
|
+
WebMock.reset_executed_requests!
|
725
|
+
|
726
|
+
expect(stub).not_to have_been_requested
|
727
|
+
expect(stub2).not_to have_been_requested
|
728
|
+
```
|
729
|
+
|
708
730
|
## Disabling and enabling WebMock or only some http client adapters
|
709
731
|
|
710
732
|
```ruby
|
@@ -1058,6 +1080,9 @@ People who submitted patches and new features or suggested improvements. Many th
|
|
1058
1080
|
* Lukas Pokorny
|
1059
1081
|
* Arkadiy Tetelman
|
1060
1082
|
* Kazato Sugimoto
|
1083
|
+
* Olle Jonsson
|
1084
|
+
* Pavel Rosický
|
1085
|
+
* Geremia Taglialatela
|
1061
1086
|
|
1062
1087
|
For a full list of contributors you can visit the
|
1063
1088
|
[contributors](https://github.com/bblimke/webmock/contributors) page.
|
data/lib/webmock.rb
CHANGED
@@ -4,55 +4,55 @@ require 'addressable/uri'
|
|
4
4
|
require 'addressable/template'
|
5
5
|
require 'crack/xml'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
7
|
+
require_relative 'webmock/deprecation'
|
8
|
+
require_relative 'webmock/version'
|
9
|
+
|
10
|
+
require_relative 'webmock/errors'
|
11
|
+
|
12
|
+
require_relative 'webmock/util/query_mapper'
|
13
|
+
require_relative 'webmock/util/uri'
|
14
|
+
require_relative 'webmock/util/headers'
|
15
|
+
require_relative 'webmock/util/hash_counter'
|
16
|
+
require_relative 'webmock/util/hash_keys_stringifier'
|
17
|
+
require_relative 'webmock/util/values_stringifier'
|
18
|
+
require_relative 'webmock/util/json'
|
19
|
+
require_relative 'webmock/util/version_checker'
|
20
|
+
require_relative 'webmock/util/hash_validator'
|
21
|
+
|
22
|
+
require_relative 'webmock/matchers/hash_argument_matcher'
|
23
|
+
require_relative 'webmock/matchers/hash_excluding_matcher'
|
24
|
+
require_relative 'webmock/matchers/hash_including_matcher'
|
25
|
+
require_relative 'webmock/matchers/any_arg_matcher'
|
26
|
+
|
27
|
+
require_relative 'webmock/request_pattern'
|
28
|
+
require_relative 'webmock/request_signature'
|
29
|
+
require_relative 'webmock/responses_sequence'
|
30
|
+
require_relative 'webmock/request_stub'
|
31
|
+
require_relative 'webmock/response'
|
32
|
+
require_relative 'webmock/rack_response'
|
33
|
+
|
34
|
+
require_relative 'webmock/stub_request_snippet'
|
35
|
+
require_relative 'webmock/request_signature_snippet'
|
36
|
+
require_relative 'webmock/request_body_diff'
|
37
|
+
|
38
|
+
require_relative 'webmock/assertion_failure'
|
39
|
+
require_relative 'webmock/request_execution_verifier'
|
40
|
+
require_relative 'webmock/config'
|
41
|
+
require_relative 'webmock/callback_registry'
|
42
|
+
require_relative 'webmock/request_registry'
|
43
|
+
require_relative 'webmock/stub_registry'
|
44
|
+
require_relative 'webmock/api'
|
45
|
+
|
46
|
+
require_relative 'webmock/http_lib_adapters/http_lib_adapter_registry'
|
47
|
+
require_relative 'webmock/http_lib_adapters/http_lib_adapter'
|
48
|
+
require_relative 'webmock/http_lib_adapters/net_http'
|
49
|
+
require_relative 'webmock/http_lib_adapters/http_rb_adapter'
|
50
|
+
require_relative 'webmock/http_lib_adapters/httpclient_adapter'
|
51
|
+
require_relative 'webmock/http_lib_adapters/patron_adapter'
|
52
|
+
require_relative 'webmock/http_lib_adapters/curb_adapter'
|
53
|
+
require_relative 'webmock/http_lib_adapters/em_http_request_adapter'
|
54
|
+
require_relative 'webmock/http_lib_adapters/typhoeus_hydra_adapter'
|
55
|
+
require_relative 'webmock/http_lib_adapters/excon_adapter'
|
56
|
+
require_relative 'webmock/http_lib_adapters/manticore_adapter'
|
57
|
+
|
58
|
+
require_relative 'webmock/webmock'
|
data/lib/webmock/api.rb
CHANGED
@@ -66,6 +66,10 @@ module WebMock
|
|
66
66
|
WebMock::StubRegistry.instance.remove_request_stub(stub)
|
67
67
|
end
|
68
68
|
|
69
|
+
def reset_executed_requests!
|
70
|
+
WebMock::RequestRegistry.instance.reset!
|
71
|
+
end
|
72
|
+
|
69
73
|
private
|
70
74
|
|
71
75
|
def convert_uri_method_and_options_to_request_and_options(method, uri, options, &block)
|
@@ -256,8 +256,9 @@ end
|
|
256
256
|
module Net #:nodoc: all
|
257
257
|
|
258
258
|
class WebMockNetBufferedIO < BufferedIO
|
259
|
-
def initialize(io, read_timeout: 60, continue_timeout: nil, debug_output: nil)
|
259
|
+
def initialize(io, read_timeout: 60, write_timeout: 60, continue_timeout: nil, debug_output: nil)
|
260
260
|
@read_timeout = read_timeout
|
261
|
+
@write_timeout = write_timeout
|
261
262
|
@rbuf = ''.dup
|
262
263
|
@debug_output = debug_output
|
263
264
|
|
@@ -25,7 +25,7 @@ module WebMock
|
|
25
25
|
responses = {}
|
26
26
|
|
27
27
|
stub = ::WebMock::RequestStub.new(:any, /.*/).with { |request|
|
28
|
-
responses[request.object_id] =
|
28
|
+
responses[request.object_id] = yield(request)
|
29
29
|
}.to_return(lambda { |request| responses.delete(request.object_id) })
|
30
30
|
|
31
31
|
global_stubs.push stub
|
@@ -81,7 +81,7 @@ module WebMock::Util
|
|
81
81
|
value = if value.nil?
|
82
82
|
nil
|
83
83
|
else
|
84
|
-
::Addressable::URI.unencode_component(value.
|
84
|
+
::Addressable::URI.unencode_component(value.tr('+', ' '))
|
85
85
|
end
|
86
86
|
key = Addressable::URI.unencode_component(key)
|
87
87
|
key = key.dup.force_encoding(Encoding::ASCII_8BIT) if key.respond_to?(:force_encoding)
|
data/lib/webmock/version.rb
CHANGED
@@ -20,7 +20,8 @@ describe "Excon" do
|
|
20
20
|
it "should support excon response_block for real requests", net_connect: true do
|
21
21
|
a = []
|
22
22
|
WebMock.allow_net_connect!
|
23
|
-
r = Excon.new('http://httpstat.us/200'
|
23
|
+
r = Excon.new('http://httpstat.us/200', headers: { "Accept" => "*" }).
|
24
|
+
get(response_block: lambda {|e, remaining, total| a << e}, chunk_size: 1)
|
24
25
|
expect(a).to eq(["2", "0", "0", " ", "O", "K"])
|
25
26
|
expect(r.body).to eq("")
|
26
27
|
end
|
@@ -40,7 +41,8 @@ describe "Excon" do
|
|
40
41
|
WebMock.after_request { |_, res|
|
41
42
|
response = res
|
42
43
|
}
|
43
|
-
r = Excon.new('http://httpstat.us/200'
|
44
|
+
r = Excon.new('http://httpstat.us/200', headers: { "Accept" => "*" }).
|
45
|
+
get(response_block: lambda {|e, remaining, total| a << e}, chunk_size: 1)
|
44
46
|
expect(response.body).to eq("200 OK")
|
45
47
|
expect(a).to eq(["2", "0", "0", " ", "O", "K"])
|
46
48
|
expect(r.body).to eq("")
|
@@ -102,7 +102,7 @@ shared_context "callbacks" do |*adapter_info|
|
|
102
102
|
WebMock.after_request(except: [:other_lib]) do |_, response|
|
103
103
|
@response = response
|
104
104
|
end
|
105
|
-
http_request(:get, "http://httpstat.us/201")
|
105
|
+
http_request(:get, "http://httpstat.us/201", headers: { "Accept" => "*" })
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should pass real response to callback with status and message" do
|
data/spec/unit/api_spec.rb
CHANGED
@@ -153,4 +153,23 @@ describe WebMock::API do
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
end
|
156
|
+
|
157
|
+
describe '#reset_executed_requests!' do
|
158
|
+
subject { WebMock::API.reset_executed_requests! }
|
159
|
+
|
160
|
+
let(:request_signature) { WebMock::RequestSignature.new(:get, "www.example.com") }
|
161
|
+
let(:request_pattern) { WebMock::RequestPattern.new(:get, "www.example.com") }
|
162
|
+
|
163
|
+
before do
|
164
|
+
WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'resets request registry counter' do
|
168
|
+
expect{
|
169
|
+
subject
|
170
|
+
}.to change{
|
171
|
+
WebMock::RequestRegistry.instance.times_executed(request_pattern)
|
172
|
+
}.from(1).to(0)
|
173
|
+
end
|
174
|
+
end
|
156
175
|
end
|
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: 3.
|
4
|
+
version: 3.5.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: 2018-
|
11
|
+
date: 2018-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -399,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
399
399
|
version: '0'
|
400
400
|
requirements: []
|
401
401
|
rubyforge_project: webmock
|
402
|
-
rubygems_version: 2.6
|
402
|
+
rubygems_version: 2.7.6
|
403
403
|
signing_key:
|
404
404
|
specification_version: 4
|
405
405
|
summary: Library for stubbing HTTP requests in Ruby.
|