webmock 3.4.2 → 3.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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.
|