mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 10:43:17 -04:00
@@ -11,7 +11,7 @@ import (
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func TestHeader(t *testing.T) {
|
||||
func TestHeaderResponseRules(t *testing.T) {
|
||||
wr := dnstest.NewRecorder(&test.ResponseWriter{})
|
||||
next := plugin.HandlerFunc(func(ctx context.Context, writer dns.ResponseWriter, msg *dns.Msg) (int, error) {
|
||||
writer.WriteMsg(msg)
|
||||
@@ -25,8 +25,8 @@ func TestHeader(t *testing.T) {
|
||||
}{
|
||||
{
|
||||
handler: Header{
|
||||
Rules: []Rule{{Flag: recursionAvailable, State: true}},
|
||||
Next: next,
|
||||
ResponseRules: []Rule{{Flag: recursionAvailable, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionAvailable
|
||||
@@ -35,18 +35,18 @@ func TestHeader(t *testing.T) {
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
Rules: []Rule{{Flag: recursionAvailable, State: true}},
|
||||
Next: next,
|
||||
ResponseRules: []Rule{{Flag: recursionAvailable, State: false}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionAvailable
|
||||
},
|
||||
expected: true,
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
Rules: []Rule{{Flag: recursionDesired, State: true}},
|
||||
Next: next,
|
||||
ResponseRules: []Rule{{Flag: recursionDesired, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionDesired
|
||||
@@ -55,8 +55,8 @@ func TestHeader(t *testing.T) {
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
Rules: []Rule{{Flag: authoritative, State: true}},
|
||||
Next: next,
|
||||
ResponseRules: []Rule{{Flag: authoritative, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.Authoritative
|
||||
@@ -80,3 +80,73 @@ func TestHeader(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestHeaderQueryRules(t *testing.T) {
|
||||
wr := dnstest.NewRecorder(&test.ResponseWriter{})
|
||||
next := plugin.HandlerFunc(func(ctx context.Context, writer dns.ResponseWriter, msg *dns.Msg) (int, error) {
|
||||
writer.WriteMsg(msg)
|
||||
return dns.RcodeSuccess, nil
|
||||
})
|
||||
|
||||
tests := []struct {
|
||||
handler plugin.Handler
|
||||
got func(msg *dns.Msg) bool
|
||||
expected bool
|
||||
}{
|
||||
{
|
||||
handler: Header{
|
||||
QueryRules: []Rule{{Flag: recursionAvailable, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionAvailable
|
||||
},
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
QueryRules: []Rule{{Flag: recursionDesired, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionDesired
|
||||
},
|
||||
expected: true,
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
QueryRules: []Rule{{Flag: recursionDesired, State: false}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.RecursionDesired
|
||||
},
|
||||
expected: false,
|
||||
},
|
||||
{
|
||||
handler: Header{
|
||||
QueryRules: []Rule{{Flag: authoritative, State: true}},
|
||||
Next: next,
|
||||
},
|
||||
got: func(msg *dns.Msg) bool {
|
||||
return msg.Authoritative
|
||||
},
|
||||
expected: true,
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range tests {
|
||||
m := new(dns.Msg)
|
||||
|
||||
_, err := tc.handler.ServeDNS(context.TODO(), wr, m)
|
||||
if err != nil {
|
||||
t.Errorf("Test %d: Expected no error, but got %s", i, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if tc.got(m) != tc.expected {
|
||||
t.Errorf("Test %d: Expected flag state=%t, but got %t", i, tc.expected, tc.got(m))
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user