fix(netxlite): resolver _always_ short circuits IP addrs (#458)

We will use this in a moment when we will add support for the
dnstransports that currently are in engine/netx.

See https://github.com/ooni/probe/issues/1591
This commit is contained in:
Simone Basso 2021-09-05 20:12:05 +02:00 committed by GitHub
commit b52d784f00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 3 deletions

View file

@ -194,7 +194,47 @@ func TestNewResolverTypeChain(t *testing.T) {
if rl.Logger != log.Log {
t.Fatal("invalid logger")
}
if _, ok := rl.Resolver.(*resolverSystem); !ok {
scia, ok := rl.Resolver.(*resolverShortCircuitIPAddr)
if !ok {
t.Fatal("invalid resolver")
}
if _, ok := scia.Resolver.(*resolverSystem); !ok {
t.Fatal("invalid resolver")
}
}
func TestResolverShortCircuitIPAddrWithIPAddr(t *testing.T) {
r := &resolverShortCircuitIPAddr{
Resolver: &mocks.Resolver{
MockLookupHost: func(ctx context.Context, domain string) ([]string, error) {
return nil, errors.New("mocked error")
},
},
}
ctx := context.Background()
addrs, err := r.LookupHost(ctx, "8.8.8.8")
if err != nil {
t.Fatal(err)
}
if len(addrs) != 1 || addrs[0] != "8.8.8.8" {
t.Fatal("invalid result")
}
}
func TestResolverShortCircuitIPAddrWithDomain(t *testing.T) {
r := &resolverShortCircuitIPAddr{
Resolver: &mocks.Resolver{
MockLookupHost: func(ctx context.Context, domain string) ([]string, error) {
return nil, errors.New("mocked error")
},
},
}
ctx := context.Background()
addrs, err := r.LookupHost(ctx, "dns.google")
if err == nil || err.Error() != "mocked error" {
t.Fatal("not the error we expected", err)
}
if addrs != nil {
t.Fatal("invalid result")
}
}