improve coverage of altsvc and resolver modules

This commit is contained in:
HoneyryderChuck 2023-06-13 16:54:19 +01:00
parent 7c1d7083ab
commit b9b2715b10
2 changed files with 30 additions and 12 deletions

View File

@ -16,6 +16,12 @@ class AltSvcTest < Minitest::Test
assert AltSvc.cached_altsvc("http://www.example-altsvc-cache.com").empty?
end
def test_altsvc_scheme
assert "https", AltSvc.parse_altsvc_scheme("h2")
assert "http", AltSvc.parse_altsvc_scheme("h2c")
assert AltSvc.parse_altsvc_scheme("wat").nil?
end
def test_altsvc_parse_svc
assert [["h2=alt.example.com", {}]], AltSvc.parse("h2=alt.example.com").to_a
end

View File

@ -6,28 +6,30 @@ class ResolverTest < Minitest::Test
include HTTPX
def test_cached_lookup
ips = Resolver.cached_lookup("test.com")
assert ips.nil?
assert_ips nil, Resolver.cached_lookup("test.com")
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"]
assert_ips ["::2"], Resolver.cached_lookup("test.com")
sleep 2
ips = Resolver.cached_lookup("test.com")
assert ips.nil?
assert_ips nil, Resolver.cached_lookup("test.com")
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"]
assert_ips ["::2"], Resolver.cached_lookup("foo.com")
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]
assert_ips %w[::2 ::3], Resolver.cached_lookup("test.com")
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]
assert_ips %w[127.0.0.2 ::2 ::3], Resolver.cached_lookup("test.com")
Resolver.cached_lookup_set("test2.com", Socket::AF_INET6, [{ "data" => "::4", "TTL" => 2, "name" => "test3.com" }])
assert_ips %w[::4], Resolver.cached_lookup("test2.com")
assert_ips %w[::4], Resolver.cached_lookup("test3.com")
Resolver.cached_lookup_set("test2.com", Socket::AF_INET, [{ "data" => "127.0.0.3", "TTL" => 2, "name" => "test3.com" }])
assert_ips %w[127.0.0.3 ::4], Resolver.cached_lookup("test2.com")
assert_ips %w[127.0.0.3 ::4], Resolver.cached_lookup("test3.com")
end
def test_resolver_for
@ -38,4 +40,14 @@ class ResolverTest < Minitest::Test
ex = assert_raises(Error) { Resolver.resolver_for(Object) }
assert(ex.message.include?("unsupported resolver type"))
end
private
def assert_ips(expected, actual)
if expected.nil?
assert_nil(actual)
else
assert_equal(expected.map(&IPAddr.method(:new)), actual)
end
end
end