diff options
Diffstat (limited to 'middleware/file/dname_test.go')
-rw-r--r-- | middleware/file/dname_test.go | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/middleware/file/dname_test.go b/middleware/file/dname_test.go deleted file mode 100644 index 27890a78c..000000000 --- a/middleware/file/dname_test.go +++ /dev/null @@ -1,300 +0,0 @@ -package file - -import ( - "strings" - "testing" - - "github.com/coredns/coredns/middleware/pkg/dnsrecorder" - "github.com/coredns/coredns/middleware/test" - - "github.com/miekg/dns" - "golang.org/x/net/context" -) - -// RFC 6672, Section 2.2. Assuming QTYPE != DNAME. -var dnameSubstitutionTestCases = []struct { - qname string - owner string - target string - expected string -}{ - {"com.", "example.com.", "example.net.", ""}, - {"example.com.", "example.com.", "example.net.", ""}, - {"a.example.com.", "example.com.", "example.net.", "a.example.net."}, - {"a.b.example.com.", "example.com.", "example.net.", "a.b.example.net."}, - {"ab.example.com.", "b.example.com.", "example.net.", ""}, - {"foo.example.com.", "example.com.", "example.net.", "foo.example.net."}, - {"a.x.example.com.", "x.example.com.", "example.net.", "a.example.net."}, - {"a.example.com.", "example.com.", "y.example.net.", "a.y.example.net."}, - {"cyc.example.com.", "example.com.", "example.com.", "cyc.example.com."}, - {"cyc.example.com.", "example.com.", "c.example.com.", "cyc.c.example.com."}, - {"shortloop.x.x.", "x.", ".", "shortloop.x."}, - {"shortloop.x.", "x.", ".", "shortloop."}, -} - -func TestDNAMESubstitution(t *testing.T) { - for i, tc := range dnameSubstitutionTestCases { - result := substituteDNAME(tc.qname, tc.owner, tc.target) - if result != tc.expected { - if result == "" { - result = "<no match>" - } - - t.Errorf("Case %d: Expected %s -> %s, got %v", i, tc.qname, tc.expected, result) - return - } - } -} - -var dnameTestCases = []test.Case{ - { - Qname: "dname.miek.nl.", Qtype: dns.TypeDNAME, - Answer: []dns.RR{ - test.DNAME("dname.miek.nl. 1800 IN DNAME test.miek.nl."), - }, - Ns: miekAuth, - }, - { - Qname: "dname.miek.nl.", Qtype: dns.TypeA, - Answer: []dns.RR{ - test.A("dname.miek.nl. 1800 IN A 127.0.0.1"), - }, - Ns: miekAuth, - }, - { - Qname: "dname.miek.nl.", Qtype: dns.TypeMX, - Answer: []dns.RR{}, - Ns: []dns.RR{ - test.SOA("miek.nl. 1800 IN SOA linode.atoom.net. miek.miek.nl. 1282630057 14400 3600 604800 14400"), - }, - }, - { - Qname: "a.dname.miek.nl.", Qtype: dns.TypeA, - Answer: []dns.RR{ - test.CNAME("a.dname.miek.nl. 1800 IN CNAME a.test.miek.nl."), - test.A("a.test.miek.nl. 1800 IN A 139.162.196.78"), - test.DNAME("dname.miek.nl. 1800 IN DNAME test.miek.nl."), - }, - Ns: miekAuth, - }, - { - Qname: "www.dname.miek.nl.", Qtype: dns.TypeA, - Answer: []dns.RR{ - test.A("a.test.miek.nl. 1800 IN A 139.162.196.78"), - test.DNAME("dname.miek.nl. 1800 IN DNAME test.miek.nl."), - test.CNAME("www.dname.miek.nl. 1800 IN CNAME www.test.miek.nl."), - test.CNAME("www.test.miek.nl. 1800 IN CNAME a.test.miek.nl."), - }, - Ns: miekAuth, - }, -} - -func TestLookupDNAME(t *testing.T) { - zone, err := Parse(strings.NewReader(dbMiekNLDNAME), 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 dnameTestCases { - m := tc.Msg() - - rec := dnsrecorder.New(&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) - } -} - -var dnameDnssecTestCases = []test.Case{ - { - // We have no auth section, because the test zone does not have nameservers. - Qname: "ns.example.org.", Qtype: dns.TypeA, - Answer: []dns.RR{ - test.A("ns.example.org. 1800 IN A 127.0.0.1"), - }, - }, - { - Qname: "dname.example.org.", Qtype: dns.TypeDNAME, - Do: true, - Answer: []dns.RR{ - test.DNAME("dname.example.org. 1800 IN DNAME test.example.org."), - test.RRSIG("dname.example.org. 1800 IN RRSIG DNAME 5 3 1800 20170702091734 20170602091734 54282 example.org. HvXtiBM="), - }, - Extra: []dns.RR{test.OPT(4096, true)}, - }, - { - Qname: "a.dname.example.org.", Qtype: dns.TypeA, - Do: true, - Answer: []dns.RR{ - test.CNAME("a.dname.example.org. 1800 IN CNAME a.test.example.org."), - test.DNAME("dname.example.org. 1800 IN DNAME test.example.org."), - test.RRSIG("dname.example.org. 1800 IN RRSIG DNAME 5 3 1800 20170702091734 20170602091734 54282 example.org. HvXtiBM="), - }, - Extra: []dns.RR{test.OPT(4096, true)}, - }, -} - -func TestLookupDNAMEDNSSEC(t *testing.T) { - zone, err := Parse(strings.NewReader(dbExampleDNAMESigned), 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{"example.org.": zone}, Names: []string{"example.org."}}} - ctx := context.TODO() - - for _, tc := range dnameDnssecTestCases { - m := tc.Msg() - - rec := dnsrecorder.New(&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) - } -} - -const dbMiekNLDNAME = ` -$TTL 30M -$ORIGIN miek.nl. -@ IN SOA linode.atoom.net. miek.miek.nl. ( - 1282630057 ; Serial - 4H ; Refresh - 1H ; Retry - 7D ; Expire - 4H ) ; Negative Cache TTL - IN NS linode.atoom.net. - IN NS ns-ext.nlnetlabs.nl. - IN NS omval.tednet.nl. - IN NS ext.ns.whyscream.net. - -test IN MX 1 aspmx.l.google.com. - IN MX 5 alt1.aspmx.l.google.com. - IN MX 5 alt2.aspmx.l.google.com. - IN MX 10 aspmx2.googlemail.com. - IN MX 10 aspmx3.googlemail.com. -a.test IN A 139.162.196.78 - IN AAAA 2a01:7e00::f03c:91ff:fef1:6735 -www.test IN CNAME a.test - -dname IN DNAME test -dname IN A 127.0.0.1 -a.dname IN A 127.0.0.1 -` - -const dbExampleDNAMESigned = ` -; File written on Fri Jun 2 10:17:34 2017 -; dnssec_signzone version 9.10.3-P4-Debian -example.org. 1800 IN SOA a.example.org. b.example.org. ( - 1282630057 ; serial - 14400 ; refresh (4 hours) - 3600 ; retry (1 hour) - 604800 ; expire (1 week) - 14400 ; minimum (4 hours) - ) - 1800 RRSIG SOA 5 2 1800 ( - 20170702091734 20170602091734 54282 example.org. - mr5eQtFs1GubgwaCcqrpiF6Cgi822OkESPeV - X0OJYq3JzthJjHw8TfYAJWQ2yGqhlePHir9h - FT/uFZdYyytHq+qgIUbJ9IVCrq0gZISZdHML - Ry1DNffMR9CpD77KocOAUABfopcvH/3UGOHn - TFxkAr447zPaaoC68JYGxYLfZk8= ) - 1800 NS ns.example.org. - 1800 RRSIG NS 5 2 1800 ( - 20170702091734 20170602091734 54282 example.org. - McM4UdMxkscVQkJnnEbdqwyjpPgq5a/EuOLA - r2MvG43/cwOaWULiZoNzLi5Rjzhf+GTeVTan - jw6EsL3gEuYI1nznwlLQ04/G0XAHjbq5VvJc - rlscBD+dzf774yfaTjRNoeo2xTem6S7nyYPW - Y+1f6xkrsQPLYJfZ6VZ9QqyupBw= ) - 14400 NSEC dname.example.org. NS SOA RRSIG NSEC DNSKEY - 14400 RRSIG NSEC 5 2 14400 ( - 20170702091734 20170602091734 54282 example.org. - VT+IbjDFajM0doMKFipdX3+UXfCn3iHIxg5x - LElp4Q/YddTbX+6tZf53+EO+G8Kye3JDLwEl - o8VceijNeF3igZ+LiZuXCei5Qg/TJ7IAUnAO - xd85IWwEYwyKkKd6Z2kXbAN2pdcHE8EmboQd - wfTr9oyWhpZk1Z+pN8vdejPrG0M= ) - 1800 DNSKEY 256 3 5 ( - AwEAAczLlmTk5bMXUzpBo/Jta6MWSZYy3Nfw - gz8t/pkfSh4IlFF6vyXZhEqCeQsCBdD7ltkD - h5qd4A+nFrYOMwsi5XIjoHMlJN15xwFS9EgS - ZrZmuxePIEiYB5KccEf9JQMgM1t07Iu1FnrY - 02OuAqGWcO4tuyTLaK3QP4MLQOfAgKqf - ) ; ZSK; alg = RSASHA1; key id = 54282 - 1800 RRSIG DNSKEY 5 2 1800 ( - 20170702091734 20170602091734 54282 example.org. - MBgSRtZ6idJblLIHxZWpWL/1oqIwImb1mkl7 - hDFxqV6Hw19yLX06P7gcJEWiisdZBkVEfcOK - LeMJly05vgKfrMzLgIu2Ry4bL8AMKc8NMXBG - b1VDCEBW69P2omogj2KnORHDCZQr/BX9+wBU - 5rIMTTKlMSI5sT6ecJHHEymtiac= ) -dname.example.org. 1800 IN A 127.0.0.1 - 1800 RRSIG A 5 3 1800 ( - 20170702091734 20170602091734 54282 example.org. - LPCK2nLyDdGwvmzGLkUO2atEUjoc+aEspkC3 - keZCdXZaLnAwBH7dNAjvvXzzy0WrgWeiyDb4 - +rJ2N0oaKEZicM4QQDHKhugJblKbU5G4qTey - LSEaV3vvQnzGd0S6dCqnwfPj9czagFN7Zlf5 - DmLtdxx0aiDPCUpqT0+H/vuGPfk= ) - 1800 DNAME test.example.org. - 1800 RRSIG DNAME 5 3 1800 ( - 20170702091734 20170602091734 54282 example.org. - HvX79T1flWJ8H9/1XZjX6gz8rP/o2jbfPXJ9 - vC7ids/ZJilSReabLru4DCqcw1IV2DM/CZdE - tBnED/T2PJXvMut9tnYMrz+ZFPxoV6XyA3Z7 - bok3B0OuxizzAN2EXdol04VdbMHoWUzjQCzi - 0Ri12zLGRPzDepZ7FolgD+JtiBM= ) - 14400 NSEC a.dname.example.org. A DNAME RRSIG NSEC - 14400 RRSIG NSEC 5 3 14400 ( - 20170702091734 20170602091734 54282 example.org. - U3ZPYMUBJl3wF2SazQv/kBf6ec0CH+7n0Hr9 - w6lBKkiXz7P9WQzJDVnTHEZOrbDI6UetFGyC - 6qcaADCASZ9Wxc+riyK1Hl4ox+Y/CHJ97WHy - oS2X//vEf6qmbHQXin0WQtFdU/VCRYF40X5v - 8VfqOmrr8iKiEqXND8XNVf58mTw= ) -a.dname.example.org. 1800 IN A 127.0.0.1 - 1800 RRSIG A 5 4 1800 ( - 20170702091734 20170602091734 54282 example.org. - y7RHBWZwli8SJQ4BgTmdXmYS3KGHZ7AitJCx - zXFksMQtNoOfVEQBwnFqjAb8ezcV5u92h1gN - i1EcuxCFiElML1XFT8dK2GnlPAga9w3oIwd5 - wzW/YHcnR0P9lF56Sl7RoIt6+jJqOdRfixS6 - TDoLoXsNbOxQ+qV3B8pU2Tam204= ) - 14400 NSEC ns.example.org. A RRSIG NSEC - 14400 RRSIG NSEC 5 4 14400 ( - 20170702091734 20170602091734 54282 example.org. - Tmu27q3+xfONSZZtZLhejBUVtEw+83ZU1AFb - Rsxctjry/x5r2JSxw/sgSAExxX/7tx/okZ8J - oJqtChpsr91Kiw3eEBgINi2lCYIpMJlW4cWz - 8bYlHfR81VsKYgy/cRgrq1RRvBoJnw+nwSty - mKPIvUtt67LAvLxJheSCEMZLCKI= ) -ns.example.org. 1800 IN A 127.0.0.1 - 1800 RRSIG A 5 3 1800 ( - 20170702091734 20170602091734 54282 example.org. - mhi1SGaaAt+ndQEg5uKWKCH0HMzaqh/9dUK3 - p2wWMBrLbTZrcWyz10zRnvehicXDCasbBrer - ZpDQnz5AgxYYBURvdPfUzx1XbNuRJRE4l5PN - CEUTlTWcqCXnlSoPKEJE5HRf7v0xg2BrBUfM - 4mZnW2bFLwjrRQ5mm/mAmHmTROk= ) - 14400 NSEC example.org. A RRSIG NSEC - 14400 RRSIG NSEC 5 3 14400 ( - 20170702091734 20170602091734 54282 example.org. - loHcdjX+NIWLAkUDfPSy2371wrfUvrBQTfMO - 17eO2Y9E/6PE935NF5bjQtZBRRghyxzrFJhm - vY1Ad5ZTb+NLHvdSWbJQJog+eCc7QWp64WzR - RXpMdvaE6ZDwalWldLjC3h8QDywDoFdndoRY - eHOsmTvvtWWqtO6Fa5A8gmHT5HA= ) -` |