forked from AdguardTeam/dnsproxy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlookup_test.go
48 lines (40 loc) · 1.13 KB
/
lookup_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package proxy
import (
"net"
"testing"
"github.com/stretchr/testify/assert"
"github.com/AdguardTeam/dnsproxy/upstream"
)
func TestLookupIPAddr(t *testing.T) {
// Create a simple proxy
p := Proxy{}
upstreams := make([]upstream.Upstream, 0)
// Use AdGuard DNS here
opts := &upstream.Options{Timeout: defaultTimeout}
dnsUpstream, err := upstream.AddressToUpstream("94.140.14.14", opts)
if err != nil {
t.Fatalf("cannot prepare the upstream: %s", err)
}
p.UpstreamConfig = &UpstreamConfig{}
p.UpstreamConfig.Upstreams = append(upstreams, dnsUpstream)
// Init the proxy
p.Init()
// Now let's try doing some lookups
addrs, err := p.LookupIPAddr("dns.google")
assert.Nil(t, err)
assert.True(t, len(addrs) == 2 || len(addrs) == 4)
assertContainsIP(t, addrs, "8.8.8.8")
assertContainsIP(t, addrs, "8.8.4.4")
if len(addrs) == 4 {
assertContainsIP(t, addrs, "2001:4860:4860::8888")
assertContainsIP(t, addrs, "2001:4860:4860::8844")
}
}
func assertContainsIP(t *testing.T, addrs []net.IPAddr, ip string) {
for _, addr := range addrs {
if addr.String() == ip {
return
}
}
t.Fatalf("%s not found in %v", ip, addrs)
}