aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/metadata_test.go
diff options
context:
space:
mode:
authorGravatar Chris O'Haver <cohaver@infoblox.com> 2020-05-04 04:17:26 -0400
committerGravatar GitHub <noreply@github.com> 2020-05-04 10:17:26 +0200
commita5e286ac4e1ce203c0c67b77f4042b3cf8c46ba8 (patch)
tree378c8f6249b34eeb05c563422f8b6c4215a446a0 /plugin/kubernetes/metadata_test.go
parent5347bc38e733a0ff084aafe7713d24903596f440 (diff)
downloadcoredns-a5e286ac4e1ce203c0c67b77f4042b3cf8c46ba8.tar.gz
coredns-a5e286ac4e1ce203c0c67b77f4042b3cf8c46ba8.tar.zst
coredns-a5e286ac4e1ce203c0c67b77f4042b3cf8c46ba8.zip
plugin/kubernetes: Don't panic with metadata enabled and pods mode not verified (#3869)
* prevent panic in podWithIP Signed-off-by: Chris O'Haver <cohaver@infoblox.com> * add unit test, correct existing unit test Signed-off-by: Chris O'Haver <cohaver@infoblox.com> * unit tests make more sense this way Signed-off-by: Chris O'Haver <cohaver@infoblox.com>
Diffstat (limited to 'plugin/kubernetes/metadata_test.go')
-rw-r--r--plugin/kubernetes/metadata_test.go38
1 files changed, 34 insertions, 4 deletions
diff --git a/plugin/kubernetes/metadata_test.go b/plugin/kubernetes/metadata_test.go
index 1e3d823bc..c55258335 100644
--- a/plugin/kubernetes/metadata_test.go
+++ b/plugin/kubernetes/metadata_test.go
@@ -32,8 +32,6 @@ var metadataCases = []struct {
"kubernetes/port-name": "*",
"kubernetes/protocol": "*",
"kubernetes/service": "10-240-0-1",
- "kubernetes/client-namespace": "podns",
- "kubernetes/client-pod-name": "foo",
},
},
{
@@ -45,8 +43,6 @@ var metadataCases = []struct {
"kubernetes/port-name": "*",
"kubernetes/protocol": "*",
"kubernetes/service": "s",
- "kubernetes/client-namespace": "podns",
- "kubernetes/client-pod-name": "foo",
},
},
{
@@ -124,3 +120,37 @@ func TestMetadata(t *testing.T) {
}
}
}
+
+func TestMetadataPodsVerified(t *testing.T) {
+ k := New([]string{"cluster.local."})
+ k.podMode = podModeVerified
+ k.APIConn = &APIConnServeTest{}
+
+ ctx := metadata.ContextWithMetadata(context.Background())
+ state := request.Request{
+ Req: &dns.Msg{Question: []dns.Question{{Name: "s.ns.svc.cluster.local.", Qtype: dns.TypeA}}},
+ Zone: ".",
+ W: &test.ResponseWriter{},
+ }
+
+ k.Metadata(ctx, state)
+
+ expect := map[string]string{
+ "kubernetes/endpoint": "",
+ "kubernetes/kind": "svc",
+ "kubernetes/namespace": "ns",
+ "kubernetes/port-name": "*",
+ "kubernetes/protocol": "*",
+ "kubernetes/service": "s",
+ "kubernetes/client-namespace": "podns",
+ "kubernetes/client-pod-name": "foo",
+ }
+
+ md := make(map[string]string)
+ for _, l := range metadata.Labels(ctx) {
+ md[l] = metadata.ValueFunc(ctx, l)()
+ }
+ if mapsDiffer(expect, md) {
+ t.Errorf("Expected metadata %v and got %v", expect, md)
+ }
+}