httpx/test/https_test.rb

50 lines
1.5 KiB
Ruby

# frozen_string_literal: true
require_relative "support/http_helpers"
class HTTPSTest < Minitest::Test
include HTTPHelpers
include Requests
include Get
include Head
include WithBody
include Headers
include ResponseBody
include IO
include Errors
include Resolvers if ENV.key?("HTTPX_RESOLVER_URI")
# TODO: uncomment as soon as nghttpx supports altsvc for HTTP/2
# include AltSvc if ENV.key?("HTTPBIN_ALTSVC_HOST")
include Plugins::Proxy unless ENV.key?("HTTPX_NO_PROXY")
include Plugins::Authentication
include Plugins::FollowRedirects
include Plugins::Cookies
include Plugins::Compression
include Plugins::PushPromise if OpenSSL::SSL::SSLContext.instance_methods.include?(:alpn_protocols)
include Plugins::Retries
include Plugins::Multipart
def test_connection_coalescing
coalesced_origin = "https://#{ENV["HTTPBIN_COALESCING_HOST"]}"
HTTPX.wrap do |http|
response1 = http.get(origin)
verify_status(response1, 200)
response2 = http.get(coalesced_origin)
verify_status(response2, 200)
# introspection time
pool = http.__send__(:pool)
connections = pool.instance_variable_get(:@connections)
assert connections.any? { |conn|
conn.instance_variable_get(:@origins) == [origin, coalesced_origin]
}, "connections didn't coalesce (expected connection with both origins)"
end
end if ENV.key?("HTTPBIN_COALESCING_HOST")
private
def origin(orig = httpbin)
"https://#{orig}"
end
end