diff --git a/middleware/etcd/stub_cycle_test.go b/middleware/etcd/stub_cycle_test.go new file mode 100644 index 000000000..d4fa19384 --- /dev/null +++ b/middleware/etcd/stub_cycle_test.go @@ -0,0 +1,61 @@ +// +build etcd + +package etcd + +import ( + "sort" + "testing" + + "github.com/miekg/coredns/middleware" + "github.com/miekg/coredns/middleware/test" + "github.com/miekg/dns" +) + +func TestStubLookup(t *testing.T) { + // reuse servics from stub_test.go + for _, serv := range servicesStub { + set(t, etc, serv.Key, 0, serv) + defer delete(t, etc, serv.Key) + } + etc.updateStubZones() + + for _, tc := range dnsTestCasesCycleStub { + m := tc.Msg() + if tc.Do { + // add our wacky edns fluff + m.Extra[0] = ednsStub + } + + rec := middleware.NewResponseRecorder(&test.ResponseWriter{}) + _, err := etc.ServeDNS(ctx, rec, m) + if err != nil { + t.Errorf("expected no error, got %v\n", err) + continue + } + resp := rec.Msg() + + sort.Sort(test.RRSet(resp.Answer)) + sort.Sort(test.RRSet(resp.Ns)) + sort.Sort(test.RRSet(resp.Extra)) + + if !test.Header(t, tc, resp) { + t.Logf("%v\n", resp) + continue + } + if !test.Section(t, tc, test.Answer, resp.Answer) { + t.Logf("%v\n", resp) + } + if !test.Section(t, tc, test.Ns, resp.Ns) { + t.Logf("%v\n", resp) + } + if !test.Section(t, tc, test.Extra, resp.Extra) { + t.Logf("%v\n", resp) + } + } +} + +var dnsTestCasesCycleStub = []test.Case{ + { + Qname: "example.org.", Qtype: dns.TypeA, Rcode: dns.RcodeRefused, Do: true, + }, +}