aboutsummaryrefslogtreecommitdiff
path: root/plugin/hosts/hosts_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/hosts/hosts_test.go')
-rw-r--r--plugin/hosts/hosts_test.go75
1 files changed, 75 insertions, 0 deletions
diff --git a/plugin/hosts/hosts_test.go b/plugin/hosts/hosts_test.go
new file mode 100644
index 000000000..68b91b8c2
--- /dev/null
+++ b/plugin/hosts/hosts_test.go
@@ -0,0 +1,75 @@
+package hosts
+
+import (
+ "strings"
+ "testing"
+ "time"
+
+ "github.com/coredns/coredns/plugin/pkg/dnsrecorder"
+ "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 := 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`