Files
coredns/middleware/whoami/whoami_test.go
Miek Gieben c4ab98c6e3 Add middleware.NextOrFailure (#462)
This checks if the next middleware to be called is nil, and if so returns
ServerFailure and an error. This makes the next calling more robust and
saves some lines of code.

Also prefix the error with the name of the middleware to aid in
debugging.
2016-12-20 18:58:05 +00:00

57 lines
1.3 KiB
Go

package whoami
import (
"testing"
"github.com/miekg/coredns/middleware/pkg/dnsrecorder"
"github.com/miekg/coredns/middleware/test"
"github.com/miekg/dns"
"golang.org/x/net/context"
)
func TestWhoami(t *testing.T) {
wh := Whoami{}
tests := []struct {
qname string
qtype uint16
expectedCode int
expectedReply []string // ownernames for the records in the additional section.
expectedErr error
}{
{
qname: "example.org",
qtype: dns.TypeA,
expectedCode: dns.RcodeSuccess,
expectedReply: []string{"example.org.", "_udp.example.org."},
expectedErr: nil,
},
}
ctx := context.TODO()
for i, tc := range tests {
req := new(dns.Msg)
req.SetQuestion(dns.Fqdn(tc.qname), tc.qtype)
rec := dnsrecorder.New(&test.ResponseWriter{})
code, err := wh.ServeDNS(ctx, rec, req)
if err != tc.expectedErr {
t.Errorf("Test %d: Expected error %v, but got %v", i, tc.expectedErr, err)
}
if code != int(tc.expectedCode) {
t.Errorf("Test %d: Expected status code %d, but got %d", i, tc.expectedCode, code)
}
if len(tc.expectedReply) != 0 {
for i, expected := range tc.expectedReply {
actual := rec.Msg.Extra[i].Header().Name
if actual != expected {
t.Errorf("Test %d: Expected answer %s, but got %s", i, expected, actual)
}
}
}
}
}