aboutsummaryrefslogtreecommitdiff
path: root/plugin/k8s_external/apex_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/k8s_external/apex_test.go')
-rw-r--r--plugin/k8s_external/apex_test.go105
1 files changed, 105 insertions, 0 deletions
diff --git a/plugin/k8s_external/apex_test.go b/plugin/k8s_external/apex_test.go
new file mode 100644
index 000000000..e6b118d3d
--- /dev/null
+++ b/plugin/k8s_external/apex_test.go
@@ -0,0 +1,105 @@
+package external
+
+import (
+ "context"
+ "testing"
+
+ "github.com/coredns/coredns/plugin/kubernetes"
+ "github.com/coredns/coredns/plugin/pkg/dnstest"
+ "github.com/coredns/coredns/plugin/test"
+
+ "github.com/miekg/dns"
+)
+
+func TestApex(t *testing.T) {
+ k := kubernetes.New([]string{"cluster.local."})
+ k.Namespaces = map[string]struct{}{"testns": struct{}{}}
+ k.APIConn = &external{}
+
+ e := New()
+ e.Zones = []string{"example.com."}
+ e.Next = test.NextHandler(dns.RcodeSuccess, nil)
+ e.externalFunc = k.External
+ e.externalAddrFunc = externalAddress // internal test function
+
+ ctx := context.TODO()
+ for i, tc := range testsApex {
+ r := tc.Msg()
+ w := dnstest.NewRecorder(&test.ResponseWriter{})
+
+ _, err := e.ServeDNS(ctx, w, r)
+ if err != tc.Error {
+ t.Errorf("Test %d expected no error, got %v", i, err)
+ return
+ }
+ if tc.Error != nil {
+ continue
+ }
+
+ resp := w.Msg
+ if resp == nil {
+ t.Fatalf("Test %d, got nil message and no error for %q", i, r.Question[0].Name)
+ }
+ test.SortAndCheck(t, resp, tc)
+ }
+}
+
+var testsApex = []test.Case{
+ {
+ Qname: "example.com.", Qtype: dns.TypeSOA, Rcode: dns.RcodeSuccess,
+ Answer: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "example.com.", Qtype: dns.TypeNS, Rcode: dns.RcodeSuccess,
+ Answer: []dns.RR{
+ test.NS("example.com. 5 IN NS ns1.dns.example.com."),
+ },
+ Extra: []dns.RR{
+ test.A("example.com. 5 IN A 127.0.0.1"),
+ },
+ },
+ {
+ Qname: "example.com.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "dns.example.com.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "dns.example.com.", Qtype: dns.TypeNS, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "ns1.dns.example.com.", Qtype: dns.TypeSRV, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "ns1.dns.example.com.", Qtype: dns.TypeNS, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "ns1.dns.example.com.", Qtype: dns.TypeAAAA, Rcode: dns.RcodeSuccess,
+ Ns: []dns.RR{
+ test.SOA("example.com. 5 IN SOA ns1.dns.example.com. hostmaster.example.com. 1499347823 7200 1800 86400 5"),
+ },
+ },
+ {
+ Qname: "ns1.dns.example.com.", Qtype: dns.TypeA, Rcode: dns.RcodeSuccess,
+ Answer: []dns.RR{
+ test.A("ns1.dns.example.com. 5 IN A 127.0.0.1"),
+ },
+ },
+}