38 lines
856 B
Go
38 lines
856 B
Go
package net
|
|
|
|
import (
|
|
"testing"
|
|
"net"
|
|
"github.com/benburkert/dns"
|
|
)
|
|
|
|
func TestPreferIPV4Resolver(t *testing.T) {
|
|
var (
|
|
cli = &dns.Client{Resolver: &PreferIPV4Resolver{}}
|
|
addrs []net.IP
|
|
err error
|
|
)
|
|
addrs, err = net.LookupIP("www.v6.facebook.com")
|
|
if err == nil && len(addrs) != 0 && len(addrs[0]) == net.IPv6len {
|
|
err = nil
|
|
t.Log("checked AAAA dns reponse")
|
|
} else {
|
|
t.Fatal("unknown error : ", err)
|
|
}
|
|
|
|
net.DefaultResolver.PreferGo = true
|
|
net.DefaultResolver.Dial = cli.Dial
|
|
|
|
addrs, err = net.LookupIP("www.v6.facebook.com")
|
|
if len(addrs) != 0 {
|
|
t.Fatal("ipv6 address isn't empty")
|
|
} else if err == nil {
|
|
t.Fatal("no error in AAAA record")
|
|
} else if dnserr, ok := err.(*net.DNSError); !ok || dnserr.Err != "no such host" {
|
|
t.Fatal("unknown error : ", err)
|
|
} else {
|
|
err = nil
|
|
t.Log("AAAA dns request filtered")
|
|
}
|
|
}
|