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 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.