diff options
Diffstat (limited to 'plugin/erratic/erratic_test.go')
-rw-r--r-- | plugin/erratic/erratic_test.go | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/plugin/erratic/erratic_test.go b/plugin/erratic/erratic_test.go index 8a3b4e011..406fd8774 100644 --- a/plugin/erratic/erratic_test.go +++ b/plugin/erratic/erratic_test.go @@ -14,19 +14,22 @@ func TestErraticDrop(t *testing.T) { e := &Erratic{drop: 2} // 50% drops tests := []struct { + rrtype uint16 expectedCode int expectedErr error drop bool }{ - {expectedCode: dns.RcodeSuccess, expectedErr: nil, drop: true}, - {expectedCode: dns.RcodeSuccess, expectedErr: nil, drop: false}, + {rrtype: dns.TypeA, expectedCode: dns.RcodeSuccess, expectedErr: nil, drop: true}, + {rrtype: dns.TypeA, expectedCode: dns.RcodeSuccess, expectedErr: nil, drop: false}, + {rrtype: dns.TypeAAAA, expectedCode: dns.RcodeSuccess, expectedErr: nil, drop: true}, + {rrtype: dns.TypeHINFO, expectedCode: dns.RcodeServerFailure, expectedErr: nil, drop: false}, } ctx := context.TODO() for i, tc := range tests { req := new(dns.Msg) - req.SetQuestion("example.org.", dns.TypeA) + req.SetQuestion("example.org.", tc.rrtype) rec := dnstest.NewRecorder(&test.ResponseWriter{}) code, err := e.ServeDNS(ctx, rec, req) @@ -77,3 +80,21 @@ func TestErraticTruncate(t *testing.T) { } } } + +func TestAxfr(t *testing.T) { + e := &Erratic{truncate: 0} // nothing, just check if we can get an axfr + + ctx := context.TODO() + + req := new(dns.Msg) + req.SetQuestion("example.org.", dns.TypeAXFR) + + rec := dnstest.NewRecorder(&test.ResponseWriter{}) + _, err := e.ServeDNS(ctx, rec, req) + if err != nil { + t.Errorf("Failed to set up AXFR: %s", err) + } + if x := rec.Msg.Answer[0].Header().Rrtype; x != dns.TypeSOA { + t.Errorf("Expected for record to be %d, got %d", dns.TypeSOA, x) + } +} |