Add a full test server impl in this new package + tests. Move dnsrecorder into this package as well and finish up the commented out tests that were left in the old dnsrecorder package. Update all callers and tests.
75 lines
1.6 KiB
Go
75 lines
1.6 KiB
Go
package hosts
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/coredns/coredns/plugin/pkg/dnstest"
|
|
"github.com/coredns/coredns/plugin/test"
|
|
|
|
"github.com/miekg/dns"
|
|
"golang.org/x/net/context"
|
|
)
|
|
|
|
func TestLookupA(t *testing.T) {
|
|
h := Hosts{Next: test.ErrorHandler(), Hostsfile: &Hostsfile{expire: time.Now().Add(1 * time.Hour), Origins: []string{"."}}}
|
|
h.Parse(strings.NewReader(hostsExample))
|
|
|
|
ctx := context.TODO()
|
|
|
|
for _, tc := range hostsTestCases {
|
|
m := tc.Msg()
|
|
|
|
rec := dnstest.NewRecorder(&test.ResponseWriter{})
|
|
_, err := h.ServeDNS(ctx, rec, m)
|
|
if err != nil {
|
|
t.Errorf("Expected no error, got %v\n", err)
|
|
return
|
|
}
|
|
|
|
resp := rec.Msg
|
|
test.SortAndCheck(t, resp, tc)
|
|
}
|
|
}
|
|
|
|
var hostsTestCases = []test.Case{
|
|
{
|
|
Qname: "example.org.", Qtype: dns.TypeA,
|
|
Answer: []dns.RR{
|
|
test.A("example.org. 3600 IN A 10.0.0.1"),
|
|
},
|
|
},
|
|
{
|
|
Qname: "localhost.", Qtype: dns.TypeAAAA,
|
|
Answer: []dns.RR{
|
|
test.AAAA("localhost. 3600 IN AAAA ::1"),
|
|
},
|
|
},
|
|
{
|
|
Qname: "1.0.0.10.in-addr.arpa.", Qtype: dns.TypePTR,
|
|
Answer: []dns.RR{
|
|
test.PTR("1.0.0.10.in-addr.arpa. 3600 PTR example.org."),
|
|
},
|
|
},
|
|
{
|
|
Qname: "1.0.0.127.in-addr.arpa.", Qtype: dns.TypePTR,
|
|
Answer: []dns.RR{
|
|
test.PTR("1.0.0.127.in-addr.arpa. 3600 PTR localhost."),
|
|
test.PTR("1.0.0.127.in-addr.arpa. 3600 PTR localhost.domain."),
|
|
},
|
|
},
|
|
{
|
|
Qname: "example.org.", Qtype: dns.TypeAAAA,
|
|
Answer: []dns.RR{},
|
|
},
|
|
{
|
|
Qname: "example.org.", Qtype: dns.TypeMX,
|
|
Answer: []dns.RR{},
|
|
},
|
|
}
|
|
|
|
const hostsExample = `
|
|
127.0.0.1 localhost localhost.domain
|
|
::1 localhost localhost.domain
|
|
10.0.0.1 example.org`
|