webmock 3.18.0 → 3.18.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/webmock/http_lib_adapters/net_http.rb +50 -29
- data/lib/webmock/version.rb +1 -1
- data/spec/acceptance/net_http/net_http_spec.rb +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a7e964f28dd42787fd854c5fcc87dba4cd61ef214c3dee485d9bd0d71fc1cdd
|
4
|
+
data.tar.gz: f6921a9b14ccd71f18b4674aca8d4d24bf377545a4ef8c56862f95cc56b6e8a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80e85d1bb83018bdaab80aed649134757ee8ac591b98e9ccf1b6df10c0d8930db167dd5fd3bb039dd56a955d22c0cc6b1a1227bb88e8f3e56d31d0e1c9d7708e
|
7
|
+
data.tar.gz: c67f1f8486d6ee932bd9d01dff2bfcec35d9c3e3ed937e50e1f56d34f664ca11db4c9399c51e82da9316245c1d4727c726b9e307646aef80477764609ecf95ee
|
data/CHANGELOG.md
CHANGED
@@ -67,57 +67,78 @@ module WebMock
|
|
67
67
|
end
|
68
68
|
|
69
69
|
def request(request, body = nil, &block)
|
70
|
-
return super unless started?
|
71
|
-
|
72
70
|
request_signature = WebMock::NetHTTPUtility.request_signature_from_request(self, request, body)
|
73
71
|
|
74
72
|
WebMock::RequestRegistry.instance.requested_signatures.put(request_signature)
|
75
73
|
|
76
74
|
if webmock_response = WebMock::StubRegistry.instance.response_for_request(request_signature)
|
75
|
+
@socket = Net::HTTP.socket_type.new
|
77
76
|
WebMock::CallbackRegistry.invoke_callbacks(
|
78
77
|
{lib: :net_http}, request_signature, webmock_response)
|
79
78
|
build_net_http_response(webmock_response, &block)
|
80
79
|
elsif WebMock.net_connect_allowed?(request_signature.uri)
|
81
80
|
check_right_http_connection
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
81
|
+
after_request = lambda do |response|
|
82
|
+
if WebMock::CallbackRegistry.any_callbacks?
|
83
|
+
webmock_response = build_webmock_response(response)
|
84
|
+
WebMock::CallbackRegistry.invoke_callbacks(
|
85
|
+
{lib: :net_http, real_request: true}, request_signature, webmock_response)
|
86
|
+
end
|
87
|
+
response.extend Net::WebMockHTTPResponse
|
88
|
+
block.call response if block
|
89
|
+
response
|
90
|
+
end
|
91
|
+
super_with_after_request = lambda {
|
92
|
+
response = super(request, nil, &nil)
|
93
|
+
after_request.call(response)
|
94
|
+
}
|
95
|
+
if started?
|
96
|
+
ensure_actual_connection
|
97
|
+
super_with_after_request.call
|
98
|
+
else
|
99
|
+
start_with_connect {
|
100
|
+
super_with_after_request.call
|
101
|
+
}
|
92
102
|
end
|
93
|
-
|
94
|
-
response.extend Net::WebMockHTTPResponse
|
95
|
-
block.call response if block
|
96
|
-
response
|
97
103
|
else
|
98
104
|
raise WebMock::NetConnectNotAllowedError.new(request_signature)
|
99
105
|
end
|
100
106
|
end
|
101
107
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
@socket = StubSocket.new
|
108
|
+
def start_without_connect
|
109
|
+
raise IOError, 'HTTP session already opened' if @started
|
110
|
+
if block_given?
|
111
|
+
begin
|
112
|
+
@socket = Net::HTTP.socket_type.new
|
113
|
+
@started = true
|
114
|
+
return yield(self)
|
115
|
+
ensure
|
116
|
+
do_finish
|
117
|
+
end
|
113
118
|
end
|
119
|
+
@socket = Net::HTTP.socket_type.new
|
120
|
+
@started = true
|
121
|
+
self
|
114
122
|
end
|
115
123
|
|
116
|
-
|
124
|
+
|
125
|
+
def ensure_actual_connection
|
117
126
|
if @socket.is_a?(StubSocket)
|
118
127
|
@socket&.close
|
119
128
|
@socket = nil
|
120
|
-
|
129
|
+
do_start
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
alias_method :start_with_connect, :start
|
134
|
+
|
135
|
+
def start(&block)
|
136
|
+
uri = Addressable::URI.parse(WebMock::NetHTTPUtility.get_uri(self))
|
137
|
+
|
138
|
+
if WebMock.net_http_connect_on_start?(uri)
|
139
|
+
super(&block)
|
140
|
+
else
|
141
|
+
start_without_connect(&block)
|
121
142
|
end
|
122
143
|
end
|
123
144
|
|
data/lib/webmock/version.rb
CHANGED
@@ -198,14 +198,14 @@ describe "Net:HTTP" do
|
|
198
198
|
|
199
199
|
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.7.0')
|
200
200
|
it "uses the StubSocket to provide IP address" do
|
201
|
-
Net::HTTP.start("example.com") do |http|
|
201
|
+
Net::HTTP.start("http://example.com") do |http|
|
202
202
|
expect(http.ipaddr).to eq("127.0.0.1")
|
203
203
|
end
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
it "defines common socket methods" do
|
208
|
-
Net::HTTP.start("example.com") do |http|
|
208
|
+
Net::HTTP.start("http://example.com") do |http|
|
209
209
|
socket = http.instance_variable_get(:@socket)
|
210
210
|
expect(socket.io.ssl_version).to eq("TLSv1.3")
|
211
211
|
expect(socket.io.cipher).to eq(["TLS_AES_128_GCM_SHA256", "TLSv1.3", 128, 128])
|
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.18.
|
4
|
+
version: 3.18.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bartosz Blimke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -421,9 +421,9 @@ licenses:
|
|
421
421
|
- MIT
|
422
422
|
metadata:
|
423
423
|
bug_tracker_uri: https://github.com/bblimke/webmock/issues
|
424
|
-
changelog_uri: https://github.com/bblimke/webmock/blob/v3.18.
|
425
|
-
documentation_uri: https://www.rubydoc.info/gems/webmock/3.18.
|
426
|
-
source_code_uri: https://github.com/bblimke/webmock/tree/v3.18.
|
424
|
+
changelog_uri: https://github.com/bblimke/webmock/blob/v3.18.1/CHANGELOG.md
|
425
|
+
documentation_uri: https://www.rubydoc.info/gems/webmock/3.18.1
|
426
|
+
source_code_uri: https://github.com/bblimke/webmock/tree/v3.18.1
|
427
427
|
wiki_uri: https://github.com/bblimke/webmock/wiki
|
428
428
|
post_install_message:
|
429
429
|
rdoc_options: []
|
@@ -440,7 +440,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
440
440
|
- !ruby/object:Gem::Version
|
441
441
|
version: '0'
|
442
442
|
requirements: []
|
443
|
-
rubygems_version: 3.
|
443
|
+
rubygems_version: 3.1.2
|
444
444
|
signing_key:
|
445
445
|
specification_version: 4
|
446
446
|
summary: Library for stubbing HTTP requests in Ruby.
|