webmock 3.18.0 → 3.18.1

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: 70c0ad15601d48c3f413012ced7fde245d03fcc5d5bb7b609fd2ce89084b2589
4
- data.tar.gz: 4575309d868350685b573d8929ce1836eb044b00fb862c1b9b266a73a1992e9f
3
+ metadata.gz: 3a7e964f28dd42787fd854c5fcc87dba4cd61ef214c3dee485d9bd0d71fc1cdd
4
+ data.tar.gz: f6921a9b14ccd71f18b4674aca8d4d24bf377545a4ef8c56862f95cc56b6e8a7
5
5
  SHA512:
6
- metadata.gz: acba1ac0ec3d97c5eb244a84d1b8e895f13e9b3cfb1ca5ac4c0d5109eb7fcc508a3d1e51faa426bd31cb2509d61effed7c134119b5c05d128b3466ec3ee397c7
7
- data.tar.gz: e8eb5385dd3d4fc9f02c541fbec1bc2c825e07445046b3bde50c471925728c08b1bb9aaf963d61fb44f5a38041f54964ab9fa89caef4cd16fd06fe6bb1ceca44
6
+ metadata.gz: 80e85d1bb83018bdaab80aed649134757ee8ac591b98e9ccf1b6df10c0d8930db167dd5fd3bb039dd56a955d22c0cc6b1a1227bb88e8f3e56d31d0e1c9d7708e
7
+ data.tar.gz: c67f1f8486d6ee932bd9d01dff2bfcec35d9c3e3ed937e50e1f56d34f664ca11db4c9399c51e82da9316245c1d4727c726b9e307646aef80477764609ecf95ee
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ # 3.18.1
4
+
5
+ * Reverted simplified connection handing in Net::HTTP adapter due to https://github.com/bblimke/webmock/issues/999
6
+
3
7
  # 3.18.0
4
8
 
5
9
  * Net::BufferedIO is not replaced anymore.
@@ -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
- ensure_actually_connected
83
-
84
- response = super(request, nil, &nil)
85
-
86
- if WebMock::CallbackRegistry.any_callbacks?
87
- WebMock::CallbackRegistry.invoke_callbacks(
88
- {lib: :net_http, real_request: true},
89
- request_signature,
90
- build_webmock_response(response)
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
- private
103
-
104
- alias_method :actually_connect, :connect
105
-
106
- def connect
107
- uri = Addressable::URI.parse(WebMock::NetHTTPUtility.get_uri(self))
108
-
109
- if WebMock.net_http_connect_on_start?(uri)
110
- super
111
- else
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
- def ensure_actually_connected
124
+
125
+ def ensure_actual_connection
117
126
  if @socket.is_a?(StubSocket)
118
127
  @socket&.close
119
128
  @socket = nil
120
- actually_connect
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
 
@@ -1,3 +1,3 @@
1
1
  module WebMock
2
- VERSION = '3.18.0' unless defined?(::WebMock::VERSION)
2
+ VERSION = '3.18.1' unless defined?(::WebMock::VERSION)
3
3
  end
@@ -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.0
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-17 00:00:00.000000000 Z
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.0/CHANGELOG.md
425
- documentation_uri: https://www.rubydoc.info/gems/webmock/3.18.0
426
- source_code_uri: https://github.com/bblimke/webmock/tree/v3.18.0
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.0.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.