aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/kubernetes_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/kubernetes/kubernetes_test.go')
-rw-r--r--plugin/kubernetes/kubernetes_test.go57
1 files changed, 56 insertions, 1 deletions
diff --git a/plugin/kubernetes/kubernetes_test.go b/plugin/kubernetes/kubernetes_test.go
index 6d078f67e..c04574e8c 100644
--- a/plugin/kubernetes/kubernetes_test.go
+++ b/plugin/kubernetes/kubernetes_test.go
@@ -2,6 +2,7 @@ package kubernetes
import (
"context"
+ "net"
"testing"
"github.com/coredns/coredns/plugin"
@@ -254,7 +255,6 @@ func (APIConnServiceTest) GetNamespaceByName(name string) (*api.Namespace, error
}
func TestServices(t *testing.T) {
-
k := New([]string{"interwebs.test."})
k.APIConn = &APIConnServiceTest{}
@@ -301,6 +301,61 @@ func TestServices(t *testing.T) {
}
}
+func TestServicesAuthority(t *testing.T) {
+ k := New([]string{"interwebs.test."})
+ k.APIConn = &APIConnServiceTest{}
+
+ type svcAns struct {
+ host string
+ key string
+ }
+ type svcTest struct {
+ interfaceAddrs func() net.IP
+ qname string
+ qtype uint16
+ answer *svcAns
+ }
+ tests := []svcTest{
+ {interfaceAddrs: func() net.IP { return net.ParseIP("127.0.0.1") }, qname: "ns.dns.interwebs.test.", qtype: dns.TypeA, answer: &svcAns{host: "127.0.0.1", key: "/" + coredns + "/test/interwebs/dns/ns"}},
+ {interfaceAddrs: func() net.IP { return net.ParseIP("127.0.0.1") }, qname: "ns.dns.interwebs.test.", qtype: dns.TypeAAAA},
+ {interfaceAddrs: func() net.IP { return net.ParseIP("::1") }, qname: "ns.dns.interwebs.test.", qtype: dns.TypeA},
+ {interfaceAddrs: func() net.IP { return net.ParseIP("::1") }, qname: "ns.dns.interwebs.test.", qtype: dns.TypeAAAA, answer: &svcAns{host: "::1", key: "/" + coredns + "/test/interwebs/dns/ns"}},
+ }
+
+ for i, test := range tests {
+ k.interfaceAddrsFunc = test.interfaceAddrs
+
+ state := request.Request{
+ Req: &dns.Msg{Question: []dns.Question{{Name: test.qname, Qtype: test.qtype}}},
+ Zone: "interwebs.test.", // must match from k.Zones[0]
+ }
+ svcs, e := k.Services(context.TODO(), state, false, plugin.Options{})
+ if e != nil {
+ t.Errorf("Test %d: got error '%v'", i, e)
+ continue
+ }
+ if test.answer != nil && len(svcs) != 1 {
+ t.Errorf("Test %d, expected 1 answer, got %v", i, len(svcs))
+ continue
+ }
+ if test.answer == nil && len(svcs) != 0 {
+ t.Errorf("Test %d, expected no answer, got %v", i, len(svcs))
+ continue
+ }
+
+ if test.answer == nil && len(svcs) == 0 {
+ continue
+ }
+
+ if test.answer.host != svcs[0].Host {
+ t.Errorf("Test %d, expected host '%v', got '%v'", i, test.answer.host, svcs[0].Host)
+ }
+ if test.answer.key != svcs[0].Key {
+ t.Errorf("Test %d, expected key '%v', got '%v'", i, test.answer.key, svcs[0].Key)
+ }
+ }
+}
+
func TestServiceFQDN(t *testing.T) {
fqdn := serviceFQDN(
&object.Service{