mirror of
https://github.com/coredns/coredns.git
synced 2025-12-18 16:15:18 -05:00
plugin/cache: cache now uses source query DNSSEC option for upstream refresh (#5671)
Signed-off-by: Grant Spence <gspence@redhat.com> Signed-off-by: Grant Spence <gspence@redhat.com>
This commit is contained in:
33
plugin/cache/dnssec_test.go
vendored
33
plugin/cache/dnssec_test.go
vendored
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/coredns/coredns/plugin"
|
||||
"github.com/coredns/coredns/plugin/pkg/dnstest"
|
||||
"github.com/coredns/coredns/plugin/test"
|
||||
"github.com/coredns/coredns/request"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
@@ -67,19 +68,27 @@ func dnssecHandler() plugin.Handler {
|
||||
return plugin.HandlerFunc(func(ctx context.Context, w dns.ResponseWriter, r *dns.Msg) (int, error) {
|
||||
m := new(dns.Msg)
|
||||
m.SetQuestion("example.org.", dns.TypeA)
|
||||
state := request.Request{W: &test.ResponseWriter{}, Req: r}
|
||||
|
||||
m.AuthenticatedData = true
|
||||
m.Answer = make([]dns.RR, 4)
|
||||
m.Answer[0] = test.CNAME("invent.example.org. 1781 IN CNAME leptone.example.org.")
|
||||
m.Answer[1] = test.RRSIG("invent.example.org. 1781 IN RRSIG CNAME 8 3 1800 20201012085750 20200912082613 57411 example.org. ijSv5FmsNjFviBcOFwQgqjt073lttxTTNqkno6oMa3DD3kC+")
|
||||
m.Answer[2] = test.A("leptone.example.org. 1781 IN A 195.201.182.103")
|
||||
m.Answer[3] = test.RRSIG("leptone.example.org. 1781 IN RRSIG A 8 3 1800 20201012093630 20200912083827 57411 example.org. eLuSOkLAzm/WIOpaZD3/4TfvKP1HAFzjkis9LIJSRVpQt307dm9WY9")
|
||||
// If query has the DO bit, then send DNSSEC responses (RRSIGs)
|
||||
if state.Do() {
|
||||
m.Answer = make([]dns.RR, 4)
|
||||
m.Answer[0] = test.CNAME("invent.example.org. 1781 IN CNAME leptone.example.org.")
|
||||
m.Answer[1] = test.RRSIG("invent.example.org. 1781 IN RRSIG CNAME 8 3 1800 20201012085750 20200912082613 57411 example.org. ijSv5FmsNjFviBcOFwQgqjt073lttxTTNqkno6oMa3DD3kC+")
|
||||
m.Answer[2] = test.A("leptone.example.org. 1781 IN A 195.201.182.103")
|
||||
m.Answer[3] = test.RRSIG("leptone.example.org. 1781 IN RRSIG A 8 3 1800 20201012093630 20200912083827 57411 example.org. eLuSOkLAzm/WIOpaZD3/4TfvKP1HAFzjkis9LIJSRVpQt307dm9WY9")
|
||||
} else {
|
||||
m.Answer = make([]dns.RR, 2)
|
||||
m.Answer[0] = test.CNAME("invent.example.org. 1781 IN CNAME leptone.example.org.")
|
||||
m.Answer[1] = test.A("leptone.example.org. 1781 IN A 195.201.182.103")
|
||||
}
|
||||
w.WriteMsg(m)
|
||||
return dns.RcodeSuccess, nil
|
||||
})
|
||||
}
|
||||
|
||||
func TestFliterRRSlice(t *testing.T) {
|
||||
func TestFilterRRSlice(t *testing.T) {
|
||||
rrs := []dns.RR{
|
||||
test.CNAME("invent.example.org. 1781 IN CNAME leptone.example.org."),
|
||||
test.RRSIG("invent.example.org. 1781 IN RRSIG CNAME 8 3 1800 20201012085750 20200912082613 57411 example.org. ijSv5FmsNjFviBcOFwQgqjt073lttxTTNqkno6oMa3DD3kC+"),
|
||||
@@ -87,7 +96,7 @@ func TestFliterRRSlice(t *testing.T) {
|
||||
test.RRSIG("leptone.example.org. 1781 IN RRSIG A 8 3 1800 20201012093630 20200912083827 57411 example.org. eLuSOkLAzm/WIOpaZD3/4TfvKP1HAFzjkis9LIJSRVpQt307dm9WY9"),
|
||||
}
|
||||
|
||||
filter1 := filterRRSlice(rrs, 0, true, false)
|
||||
filter1 := filterRRSlice(rrs, 0, false)
|
||||
if len(filter1) != 4 {
|
||||
t.Errorf("Expected 4 RRs after filtering, got %d", len(filter1))
|
||||
}
|
||||
@@ -101,9 +110,9 @@ func TestFliterRRSlice(t *testing.T) {
|
||||
t.Errorf("Expected 2 RRSIGs after filtering, got %d", rrsig)
|
||||
}
|
||||
|
||||
filter2 := filterRRSlice(rrs, 0, false, false)
|
||||
if len(filter2) != 2 {
|
||||
t.Errorf("Expected 2 RRs after filtering, got %d", len(filter2))
|
||||
filter2 := filterRRSlice(rrs, 0, false)
|
||||
if len(filter2) != 4 {
|
||||
t.Errorf("Expected 4 RRs after filtering, got %d", len(filter2))
|
||||
}
|
||||
rrsig = 0
|
||||
for _, f := range filter2 {
|
||||
@@ -111,7 +120,7 @@ func TestFliterRRSlice(t *testing.T) {
|
||||
rrsig++
|
||||
}
|
||||
}
|
||||
if rrsig != 0 {
|
||||
t.Errorf("Expected 0 RRSIGs after filtering, got %d", rrsig)
|
||||
if rrsig != 2 {
|
||||
t.Errorf("Expected 2 RRSIGs after filtering, got %d", rrsig)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user