package hosts import ( "strings" "testing" "time" "github.com/coredns/coredns/middleware/pkg/dnsrecorder" "github.com/coredns/coredns/middleware/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 := dnsrecorder.New(&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`