diff options
Diffstat (limited to 'middleware/log/log_test.go')
-rw-r--r-- | middleware/log/log_test.go | 70 |
1 files changed, 60 insertions, 10 deletions
diff --git a/middleware/log/log_test.go b/middleware/log/log_test.go index 77e3f2e3c..2f4d8c098 100644 --- a/middleware/log/log_test.go +++ b/middleware/log/log_test.go @@ -7,21 +7,15 @@ import ( "testing" "github.com/miekg/coredns/middleware/pkg/dnsrecorder" + "github.com/miekg/coredns/middleware/pkg/response" "github.com/miekg/coredns/middleware/test" "github.com/miekg/dns" "golang.org/x/net/context" ) -type erroringMiddleware struct{} - -func (erroringMiddleware) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) { - return dns.RcodeServerFailure, nil -} - func TestLoggedStatus(t *testing.T) { var f bytes.Buffer - var next erroringMiddleware rule := Rule{ NameScope: ".", Format: DefaultLogFormat, @@ -30,7 +24,7 @@ func TestLoggedStatus(t *testing.T) { logger := Logger{ Rules: []Rule{rule}, - Next: next, + Next: test.ErrorHandler(), } ctx := context.TODO() @@ -41,11 +35,67 @@ func TestLoggedStatus(t *testing.T) { rcode, _ := logger.ServeDNS(ctx, rec, r) if rcode != 0 { - t.Error("Expected rcode to be 0 - was", rcode) + t.Errorf("Expected rcode to be 0 - was: %d", rcode) } logged := f.String() if !strings.Contains(logged, "A IN example.org. udp false 512") { - t.Error("Expected it to be logged. Logged string -", logged) + t.Errorf("Expected it to be logged. Logged string: %s", logged) + } +} + +func TestLoggedClassDenial(t *testing.T) { + var f bytes.Buffer + rule := Rule{ + NameScope: ".", + Format: DefaultLogFormat, + Log: log.New(&f, "", 0), + Class: response.Denial, + } + + logger := Logger{ + Rules: []Rule{rule}, + Next: test.ErrorHandler(), + } + + ctx := context.TODO() + r := new(dns.Msg) + r.SetQuestion("example.org.", dns.TypeA) + + rec := dnsrecorder.New(&test.ResponseWriter{}) + + logger.ServeDNS(ctx, rec, r) + + logged := f.String() + if len(logged) != 0 { + t.Errorf("Expected it not to be logged, but got string: %s", logged) + } +} + +func TestLoggedClassError(t *testing.T) { + var f bytes.Buffer + rule := Rule{ + NameScope: ".", + Format: DefaultLogFormat, + Log: log.New(&f, "", 0), + Class: response.Error, + } + + logger := Logger{ + Rules: []Rule{rule}, + Next: test.ErrorHandler(), + } + + ctx := context.TODO() + r := new(dns.Msg) + r.SetQuestion("example.org.", dns.TypeA) + + rec := dnsrecorder.New(&test.ResponseWriter{}) + + logger.ServeDNS(ctx, rec, r) + + logged := f.String() + if !strings.Contains(logged, "SERVFAIL") { + t.Errorf("Expected it to be logged. Logged string: %s", logged) } } |