mirror of
https://github.com/HoneyryderChuck/httpx.git
synced 2025-10-04 00:00:37 -04:00
for multi-backed resolvers, resolving is attempted before sending it to the resolver. in this way, cached, local or ip resolves get propagated to the proper resolver by ip family, instead of the previous mess. the system resolver doesn't do these shenanigans (trust getaddrinfo)
33 lines
1.2 KiB
Ruby
33 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "test_helper"
|
|
|
|
class ResolverTest < Minitest::Test
|
|
include HTTPX
|
|
|
|
def test_cached_lookup
|
|
ips = Resolver.cached_lookup("test.com")
|
|
assert ips.nil?
|
|
dns_entry = { "data" => "::2", "TTL" => 2, "name" => "test.com" }
|
|
Resolver.cached_lookup_set("test.com", Socket::AF_INET6, [dns_entry])
|
|
ips = Resolver.cached_lookup("test.com")
|
|
assert ips == ["::2"]
|
|
sleep 2
|
|
ips = Resolver.cached_lookup("test.com")
|
|
assert ips.nil?
|
|
alias_entry = { "alias" => "test.com", "TTL" => 2, "name" => "foo.com" }
|
|
Resolver.cached_lookup_set("test.com", Socket::AF_INET6, [dns_entry])
|
|
Resolver.cached_lookup_set("foo.com", Socket::AF_INET6, [alias_entry])
|
|
ips = Resolver.cached_lookup("foo.com")
|
|
assert ips == ["::2"]
|
|
|
|
Resolver.cached_lookup_set("test.com", Socket::AF_INET6, [{ "data" => "::3", "TTL" => 2, "name" => "test.com" }])
|
|
ips = Resolver.cached_lookup("test.com")
|
|
assert ips == %w[::2 ::3]
|
|
|
|
Resolver.cached_lookup_set("test.com", Socket::AF_INET, [{ "data" => "127.0.0.2", "TTL" => 2, "name" => "test.com" }])
|
|
ips = Resolver.cached_lookup("test.com")
|
|
assert ips == %w[127.0.0.2 ::2 ::3]
|
|
end
|
|
end
|