diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ds_file_test.go | 86 | ||||
-rw-r--r-- | test/miek_test.go | 31 |
2 files changed, 117 insertions, 0 deletions
diff --git a/test/ds_file_test.go b/test/ds_file_test.go new file mode 100644 index 000000000..407e04b42 --- /dev/null +++ b/test/ds_file_test.go @@ -0,0 +1,86 @@ +package test + +import ( + "io/ioutil" + "log" + "sort" + "testing" + + "github.com/miekg/coredns/middleware/proxy" + mtest "github.com/miekg/coredns/middleware/test" + "github.com/miekg/coredns/request" + + "github.com/miekg/dns" +) + +// Using miek.nl here because this is the easiest zone to get access to and it's masters +// run both NSD and BIND9, making checks like "what should we actually return" super easy. +var dsTestCases = []mtest.Case{ + { + Qname: "_udp.miek.nl.", Qtype: dns.TypeDS, + Rcode: dns.RcodeNameError, + Ns: []dns.RR{ + mtest.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), + }, + }, + { + Qname: "miek.nl.", Qtype: dns.TypeDS, + Ns: []dns.RR{ + mtest.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), + }, + }, +} + +func TestLookupDS(t *testing.T) { + name, rm, err := TempFile(".", miekNL) + if err != nil { + t.Fatalf("failed to created zone: %s", err) + } + defer rm() + + corefile := `miek.nl:0 { + file ` + name + ` +} +` + + i, err := CoreDNSServer(corefile) + if err != nil { + t.Fatalf("Could not get CoreDNS serving instance: %s", err) + } + + udp, _ := CoreDNSServerPorts(i, 0) + if udp == "" { + t.Fatalf("Could not get UDP listening port") + } + defer i.Stop() + + log.SetOutput(ioutil.Discard) + + p := proxy.New([]string{udp}) + state := request.Request{W: &mtest.ResponseWriter{}, Req: new(dns.Msg)} + + for _, tc := range dsTestCases { + resp, err := p.Lookup(state, tc.Qname, tc.Qtype) + if err != nil || resp == nil { + t.Fatalf("Expected to receive reply, but didn't for %s %d", tc.Qname, tc.Qtype) + } + + sort.Sort(mtest.RRSet(resp.Answer)) + sort.Sort(mtest.RRSet(resp.Ns)) + sort.Sort(mtest.RRSet(resp.Extra)) + + if !mtest.Header(t, tc, resp) { + t.Logf("%v\n", resp) + continue + } + if !mtest.Section(t, tc, mtest.Answer, resp.Answer) { + t.Logf("%v\n", resp) + } + if !mtest.Section(t, tc, mtest.Ns, resp.Ns) { + t.Logf("%v\n", resp) + } + if !mtest.Section(t, tc, mtest.Extra, resp.Extra) { + t.Logf("%v\n", resp) + } + } +} diff --git a/test/miek_test.go b/test/miek_test.go new file mode 100644 index 000000000..2778817a3 --- /dev/null +++ b/test/miek_test.go @@ -0,0 +1,31 @@ +package test + +const miekNL = `; miek.nl test zone +$TTL 30M +$ORIGIN miek.nl. +@ IN SOA linode.atoom.net. miek.miek.nl. ( + 1282630059 ; Serial + 4H ; Refresh + 1H ; Retry + 7D ; Expire + 4H ) ; Negative Cache TTL + IN NS linode.atoom.net. + IN NS ns-ext.nlnetlabs.nl. + IN NS omval.tednet.nl. + IN NS ext.ns.whyscream.net. + + IN MX 1 aspmx.l.google.com. + IN MX 5 alt1.aspmx.l.google.com. + IN MX 5 alt2.aspmx.l.google.com. + IN MX 10 aspmx2.googlemail.com. + IN MX 10 aspmx3.googlemail.com. + + IN A 176.58.119.54 + IN AAAA 2a01:7e00::f03c:91ff:fe79:234c + IN HINFO "Please stop asking for ANY" "See draft-ietf-dnsop-refuse-any" + +a IN A 176.58.119.54 + IN AAAA 2a01:7e00::f03c:91ff:fe79:234c +www IN CNAME a +archive IN CNAME a +` |