package response
import (
"testing"
"time"
"github.com/coredns/coredns/plugin/test"
"github.com/miekg/dns"
)
func TestTypifyNilMsg(t *testing.T) {
var m *dns.Msg
ty, _ := Typify(m, time.Now().UTC())
if ty != OtherError {
t.Errorf("Message wrongly typified, expected OtherError, got %s", ty)
}
}
func TestTypifyDelegation(t *testing.T) {
m := delegationMsg()
mt, _ := Typify(m, time.Now().UTC())
if mt != Delegation {
t.Errorf("Message is wrongly typified, expected Delegation, got %s", mt)
}
}
func TestTypifyRRSIG(t *testing.T) {
now, _ := time.Parse(time.UnixDate, "Fri Apr 21 10:51:21 BST 2017")
utc := now.UTC()
m := delegationMsgRRSIGOK()
if mt, _ := Typify(m, utc); mt != Delegation {
t.Errorf("Message is wrongly typified, expected Delegation, got %s", mt)
}
m = delegationMsgRRSIGFail()
if mt, _ := Typify(m, utc); mt != Delegation {
t.Errorf("Message is wrongly typified, expected Delegation, got %s", mt)
}
m = delegationMsgRRSIGFail()
m.Extra = append(m.Extra, test.OPT(4096, true))
if mt, _ := Typify(m, utc); mt != OtherError {
t.Errorf("Message is wrongly typified, expected OtherError, got %s", mt)
}
}
func TestTypifyImpossible(t *testing.T) {
m := new(dns.Msg)
m.SetQuestion("bar.www.example.org.", dns.TypeAAAA)
m.Rcode = dns.RcodeNameError
m.Answer = []dns.RR{test.CNAME("bar.www.example.org. IN CNAME foo.example.org.")}
mt, _ := Typify(m, time.Now().UTC())
if mt != OtherError {
t.Errorf("Impossible message not typified as OtherError, got %s", mt)
}
}
func TestTypifyRefused(t *testing.T) {
m := new(dns.Msg)
m.SetQuestion("foo.example.org.", dns.TypeA)
m.Rcode = dns.RcodeRefused
mt, _ := Typify(m, time.Now().UTC())
if mt != OtherError {
t.Errorf("Refused message not typified as OtherError, got %s", mt)
}
}
func delegationMsg() *dns.Msg {
return &dns.Msg{
Ns: []dns.RR{
test.NS("miek.nl. 3600 IN NS linode.atoom.net."),
test.NS("miek.nl. 3600 IN NS ns-ext.nlnetlabs.nl."),
test.NS("miek.nl. 3600 IN NS omval.tednet.nl."),
},
Extra: []dns.RR{
test.A("omval.tednet.nl. 3600 IN A 185.49.141.42"),
test.AAAA("omval.tednet.nl. 3600 IN AAAA 2a04:b900:0:100::42"),
},
}
}
func delegationMsgRRSIGOK() *dns.Msg {
del := delegationMsg()
del.Ns = append(del.Ns,
test.RRSIG("miek.nl. 1800 IN RRSIG NS 8 2 1800 20170521031301 20170421031301 12051 miek.nl. PIUu3TKX/sB/N1n1E1yWxHHIcPnc2q6Wq9InShk+5ptRqChqKdZNMLDm gCq+1bQAZ7jGvn2PbwTwE65JzES7T+hEiqR5PU23DsidvZyClbZ9l0xG JtKwgzGXLtUHxp4xv/Plq+rq/7pOG61bNCxRyS7WS7i7QcCCWT1BCcv+ wZ0="),
)
return del
}
func delegationMsgRRSIGFail() *dns.Msg {
del := delegationMsg()
del.Ns = append(del.Ns,
test.RRSIG("miek.nl. 1800 IN RRSIG NS 8 2 1800 20160521031301 20160421031301 12051 miek.nl. PIUu3TKX/sB/N1n1E1yWxHHIcPnc2q6Wq9InShk+5ptRqChqKdZNMLDm gCq+1bQAZ7jGvn2PbwTwE65JzES7T+hEiqR5PU23DsidvZyClbZ9l0xG JtKwgzGXLtUHxp4xv/Plq+rq/7pOG61bNCxRyS7WS7i7QcCCWT1BCcv+ wZ0="),
)
return del
}