Files
coredns/core/dnsserver/tsig_test.go

47 lines
990 B
Go
Raw Permalink Normal View History

package dnsserver
import (
"context"
"testing"
"github.com/miekg/dns"
)
type tsigStatusCheckPlugin struct {
t *testing.T
check func(*testing.T, error)
called chan struct{}
}
func (p tsigStatusCheckPlugin) Name() string { return "tsig-status-check" }
func (p tsigStatusCheckPlugin) ServeDNS(_ context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
p.t.Helper()
if p.called != nil {
p.called <- struct{}{}
}
p.check(p.t, w.TsigStatus())
m := new(dns.Msg)
m.SetReply(r)
if err := w.WriteMsg(m); err != nil {
p.t.Fatalf("WriteMsg() failed: %v", err)
}
return dns.RcodeSuccess, nil
}
func mustPackSignedTSIGQuery(t *testing.T, keyName, secret string, tsigTime int64) []byte {
t.Helper()
m := new(dns.Msg)
m.SetQuestion("example.com.", dns.TypeA)
m.Id = 0
m.SetTsig(keyName, dns.HmacSHA256, 300, tsigTime)
wire, _, err := dns.TsigGenerate(m, secret, "", false)
if err != nil {
t.Fatalf("dns.TsigGenerate() failed: %v", err)
}
return wire
}