coredns/plugin/file/ent_test.go
Miek Gieben ba1efee4f1
Default to scrubbing replies in the server (#2012)
Every plugin needs to deal with EDNS0 and should call Scrub to make a
message fit the client's buffer. Move this functionality into the server
and wrapping the ResponseWriter into a ScrubWriter that handles these
bits for us. Result:

Less code and faster, because multiple chained plugins could all be
calling scrub and SizeAndDo - now there is just one place.

Most tests in file/* and dnssec/* needed adjusting because in those unit
tests you don't see OPT RRs anymore. The DNSSEC signer was also looking
at the returned OPT RR to see if it needed to sign - as those are now
added by the server (and thus later), this needed to change slightly.

Scrub itself still exist (for backward compat reasons), but has been
made a noop. Scrub has been renamed to scrub as it should not be used by
external plugins.

Fixes: #2010

Signed-off-by: Miek Gieben <miek@miek.nl>
2018-08-29 12:26:22 +01:00

158 lines
5.5 KiB
Go

package file
import (
"context"
"strings"
"testing"
"github.com/coredns/coredns/plugin/pkg/dnstest"
"github.com/coredns/coredns/plugin/test"
"github.com/miekg/dns"
)
var entTestCases = []test.Case{
{
Qname: "b.c.miek.nl.", Qtype: dns.TypeA,
Ns: []dns.RR{
test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"),
},
},
{
Qname: "b.c.miek.nl.", Qtype: dns.TypeA, Do: true,
Ns: []dns.RR{
test.NSEC("a.miek.nl. 14400 IN NSEC a.b.c.miek.nl. A RRSIG NSEC"),
test.RRSIG("a.miek.nl. 14400 IN RRSIG NSEC 8 3 14400 20160502144311 20160402144311 12051 miek.nl. d5XZEy6SUpq98ZKUlzqhAfkLI9pQPc="),
test.RRSIG("miek.nl. 1800 IN RRSIG SOA 8 2 1800 20160502144311 20160402144311 12051 miek.nl. KegoBxA3Tbrhlc4cEdkRiteIkOfsq"),
test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"),
},
},
}
func TestLookupEnt(t *testing.T) {
zone, err := Parse(strings.NewReader(dbMiekENTNL), testzone, "stdin", 0)
if err != nil {
t.Fatalf("Expect no error when reading zone, got %q", err)
}
fm := File{Next: test.ErrorHandler(), Zones: Zones{Z: map[string]*Zone{testzone: zone}, Names: []string{testzone}}}
ctx := context.TODO()
for _, tc := range entTestCases {
m := tc.Msg()
rec := dnstest.NewRecorder(&test.ResponseWriter{})
_, err := fm.ServeDNS(ctx, rec, m)
if err != nil {
t.Errorf("Expected no error, got %v\n", err)
return
}
resp := rec.Msg
test.SortAndCheck(t, resp, tc)
}
}
// fdjfdjkf
const dbMiekENTNL = `; File written on Sat Apr 2 16:43:11 2016
; dnssec_signzone version 9.10.3-P4-Ubuntu
miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. (
1282630057 ; serial
14400 ; refresh (4 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
14400 ; minimum (4 hours)
)
1800 RRSIG SOA 8 2 1800 (
20160502144311 20160402144311 12051 miek.nl.
KegoBxA3Tbrhlc4cEdkRiteIkOfsqD4oCLLM
ISJ5bChWy00LGHUlAnHVu5Ti96hUjVNmGSxa
xtGSuAAMFCr52W8pAB8LBIlu9B6QZUPHMccr
SuzxAX3ioawk2uTjm+k8AGPT4RoQdXemGLAp
zJTASolTVmeMTh5J0sZTZJrtvZ0= )
1800 NS linode.atoom.net.
1800 RRSIG NS 8 2 1800 (
20160502144311 20160402144311 12051 miek.nl.
m0cOHL6Rre/0jZPXe+0IUjs/8AFASRCvDbSx
ZQsRDSlZgS6RoMP3OC77cnrKDVlfZ2Vhq3Ce
nYPoGe0/atB92XXsilmstx4HTSU64gsV9iLN
Xkzk36617t7zGOl/qumqfaUXeA9tihItzEim
6SGnufVZI4o8xeyaVCNDDuN0bvY= )
14400 NSEC a.miek.nl. NS SOA RRSIG NSEC DNSKEY
14400 RRSIG NSEC 8 2 14400 (
20160502144311 20160402144311 12051 miek.nl.
BCWVgwxWrs4tBjS9QXKkftCUbiLi40NyH1yA
nbFy1wCKQ2jDH00810+ia4b66QrjlAKgxE9z
9U7MKSMV86sNkyAtlCi+2OnjtWF6sxPdJO7k
CHeg46XBjrQuiJRY8CneQX56+IEPdufLeqPR
l+ocBQ2UkGhXmQdWp3CFDn2/eqU= )
1800 DNSKEY 256 3 8 (
AwEAAcNEU67LJI5GEgF9QLNqLO1SMq1EdoQ6
E9f85ha0k0ewQGCblyW2836GiVsm6k8Kr5EC
IoMJ6fZWf3CQSQ9ycWfTyOHfmI3eQ/1Covhb
2y4bAmL/07PhrL7ozWBW3wBfM335Ft9xjtXH
Py7ztCbV9qZ4TVDTW/Iyg0PiwgoXVesz
) ; ZSK; alg = RSASHA256; key id = 12051
1800 DNSKEY 257 3 8 (
AwEAAcWdjBl4W4wh/hPxMDcBytmNCvEngIgB
9Ut3C2+QI0oVz78/WK9KPoQF7B74JQ/mjO4f
vIncBmPp6mFNxs9/WQX0IXf7oKviEVOXLjct
R4D1KQLX0wprvtUIsQFIGdXaO6suTT5eDbSd
6tTwu5xIkGkDmQhhH8OQydoEuCwV245ZwF/8
AIsqBYDNQtQ6zhd6jDC+uZJXg/9LuPOxFHbi
MTjp6j3CCW0kHbfM/YHZErWWtjPj3U3Z7knQ
SIm5PO5FRKBEYDdr5UxWJ/1/20SrzI3iztvP
wHDsA2rdHm/4YRzq7CvG4N0t9ac/T0a0Sxba
/BUX2UVPWaIVBdTRBtgHi0s=
) ; KSK; alg = RSASHA256; key id = 33694
1800 RRSIG DNSKEY 8 2 1800 (
20160502144311 20160402144311 12051 miek.nl.
YNpi1jRDQKpnsQEjIjxqy+kJGaYnV16e8Iug
40c82y4pee7kIojFUllSKP44qiJpCArxF557
tfjfwBd6c4hkqCScGPZXJ06LMyG4u//rhVMh
4hyKcxzQFKxmrFlj3oQGksCI8lxGX6RxiZuR
qv2ol2lUWrqetpAL+Zzwt71884E= )
1800 RRSIG DNSKEY 8 2 1800 (
20160502144311 20160402144311 33694 miek.nl.
jKpLDEeyadgM0wDgzEk6sBBdWr2/aCrkAOU/
w6dYIafN98f21oIYQfscV1gc7CTsA0vwzzUu
x0QgwxoNLMvSxxjOiW/2MzF8eozczImeCWbl
ad/pVCYH6Jn5UBrZ5RCWMVcs2RP5KDXWeXKs
jEN/0EmQg5qNd4zqtlPIQinA9I1HquJAnS56
pFvYyGIbZmGEbhR18sXVBeTWYr+zOMHn2quX
0kkrx2udz+sPg7i4yRsLdhw138gPRy1qvbaC
8ELs1xo1mC9pTlDOhz24Q3iXpVAU1lXLYOh9
nUP1/4UvZEYXHBUQk/XPRciojniWjAF825x3
QoSivMHblBwRdAKJSg== )
a.miek.nl. 1800 IN A 127.0.0.1
1800 RRSIG A 8 3 1800 (
20160502144311 20160402144311 12051 miek.nl.
lUOYdSxScjyYz+Ebc+nb6iTNgCohqj7K+Dat
97KE7haV2nP3LxdYuDCJYZpeyhsXDLHd4bFI
bInYPwJiC6DUCxPCuCWy0KYlZOWW8KCLX3Ia
BOPQbvIwLsJhnX+/tyMD9mXortoqATO79/6p
nNxvFeM8pFDwaih17fXMuFR/BsI= )
14400 NSEC a.b.c.miek.nl. A RRSIG NSEC
14400 RRSIG NSEC 8 3 14400 (
20160502144311 20160402144311 12051 miek.nl.
d5XZEy6SUp+TPRJQED+0R65zf2Yeo/1dlEA2
jYYvkXGSHXke4sg9nH8U3nr1rLcuqA1DsQgH
uMIjdENvXuZ+WCSwvIbhC+JEI6AyQ6Gfaf/D
I3mfu60C730IRByTrKM5C2rt11lwRQlbdaUY
h23/nn/q98ZKUlzqhAfkLI9pQPc= )
a.b.c.miek.nl. 1800 IN A 127.0.0.1
1800 RRSIG A 8 5 1800 (
20160502144311 20160402144311 12051 miek.nl.
FwgU5+fFD4hEebco3gvKQt3PXfY+dcOJr8dl
Ky4WLsONIdhP+4e9oprPisSLxImErY21BcrW
xzu1IZrYDsS8XBVV44lBx5WXEKvAOrUcut/S
OWhFZW7ncdIQCp32ZBIatiLRJEqXUjx+guHs
noFLiHix35wJWsRKwjGLIhH1fbs= )
14400 NSEC miek.nl. A RRSIG NSEC
14400 RRSIG NSEC 8 5 14400 (
20160502144311 20160402144311 12051 miek.nl.
lXgOqm9/jRRYvaG5jC1CDvTtGYxMroTzf4t4
jeYGb60+qI0q9sHQKfAJvoQ5o8o1qfR7OuiF
f544ipYT9eTcJRyGAOoJ37yMie7ZIoVJ91tB
r8YdzZ9Q6x3v1cbwTaQiacwhPZhGYOw63qIs
q5IQErIPos2sNk+y9D8BEce2DO4= )`