aboutsummaryrefslogtreecommitdiff
path: root/plugin/log/log_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/log/log_test.go')
-rw-r--r--plugin/log/log_test.go101
1 files changed, 101 insertions, 0 deletions
diff --git a/plugin/log/log_test.go b/plugin/log/log_test.go
new file mode 100644
index 000000000..ee1201a13
--- /dev/null
+++ b/plugin/log/log_test.go
@@ -0,0 +1,101 @@
+package log
+
+import (
+ "bytes"
+ "log"
+ "strings"
+ "testing"
+
+ "github.com/coredns/coredns/plugin/pkg/dnsrecorder"
+ "github.com/coredns/coredns/plugin/pkg/response"
+ "github.com/coredns/coredns/plugin/test"
+
+ "github.com/miekg/dns"
+ "golang.org/x/net/context"
+)
+
+func TestLoggedStatus(t *testing.T) {
+ var f bytes.Buffer
+ rule := Rule{
+ NameScope: ".",
+ Format: DefaultLogFormat,
+ Log: log.New(&f, "", 0),
+ }
+
+ 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{})
+
+ rcode, _ := logger.ServeDNS(ctx, rec, r)
+ if rcode != 0 {
+ t.Errorf("Expected rcode to be 0 - was: %d", rcode)
+ }
+
+ logged := f.String()
+ if !strings.Contains(logged, "A IN example.org. udp 29 false 512") {
+ 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)
+ }
+}