1
16
17 package configmap
18
19
20
21 import (
22 "context"
23 "testing"
24
25 "k8s.io/api/core/v1"
26 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
27 clientset "k8s.io/client-go/kubernetes"
28 kubeapiservertesting "k8s.io/kubernetes/cmd/kube-apiserver/app/testing"
29 "k8s.io/kubernetes/test/integration"
30 "k8s.io/kubernetes/test/integration/framework"
31 )
32
33
34 func TestConfigMap(t *testing.T) {
35
36 server := kubeapiservertesting.StartTestServerOrDie(t, nil, []string{"--disable-admission-plugins=ServiceAccount"}, framework.SharedEtcd())
37 defer server.TearDownFn()
38
39 client := clientset.NewForConfigOrDie(server.ClientConfig)
40
41 ns := framework.CreateNamespaceOrDie(client, "config-map", t)
42 defer framework.DeleteNamespaceOrDie(client, ns, t)
43
44 DoTestConfigMap(t, client, ns)
45 }
46
47 func DoTestConfigMap(t *testing.T, client clientset.Interface, ns *v1.Namespace) {
48 cfg := v1.ConfigMap{
49 ObjectMeta: metav1.ObjectMeta{
50 Name: "configmap",
51 Namespace: ns.Name,
52 },
53 Data: map[string]string{
54 "data-1": "value-1",
55 "data-2": "value-2",
56 "data-3": "value-3",
57 },
58 }
59
60 if _, err := client.CoreV1().ConfigMaps(cfg.Namespace).Create(context.TODO(), &cfg, metav1.CreateOptions{}); err != nil {
61 t.Errorf("unable to create test configMap: %v", err)
62 }
63 defer deleteConfigMapOrErrorf(t, client, cfg.Namespace, cfg.Name)
64
65 pod := &v1.Pod{
66 ObjectMeta: metav1.ObjectMeta{
67 Name: "XXX",
68 Namespace: ns.Name,
69 },
70 Spec: v1.PodSpec{
71 Containers: []v1.Container{
72 {
73 Name: "fake-name",
74 Image: "fakeimage",
75 Env: []v1.EnvVar{
76 {
77 Name: "CONFIG_DATA_1",
78 ValueFrom: &v1.EnvVarSource{
79 ConfigMapKeyRef: &v1.ConfigMapKeySelector{
80 LocalObjectReference: v1.LocalObjectReference{
81 Name: "configmap",
82 },
83 Key: "data-1",
84 },
85 },
86 },
87 {
88 Name: "CONFIG_DATA_2",
89 ValueFrom: &v1.EnvVarSource{
90 ConfigMapKeyRef: &v1.ConfigMapKeySelector{
91 LocalObjectReference: v1.LocalObjectReference{
92 Name: "configmap",
93 },
94 Key: "data-2",
95 },
96 },
97 }, {
98 Name: "CONFIG_DATA_3",
99 ValueFrom: &v1.EnvVarSource{
100 ConfigMapKeyRef: &v1.ConfigMapKeySelector{
101 LocalObjectReference: v1.LocalObjectReference{
102 Name: "configmap",
103 },
104 Key: "data-3",
105 },
106 },
107 },
108 },
109 },
110 },
111 },
112 }
113
114 pod.ObjectMeta.Name = "uses-configmap"
115 if _, err := client.CoreV1().Pods(ns.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil {
116 t.Errorf("Failed to create pod: %v", err)
117 }
118 defer integration.DeletePodOrErrorf(t, client, ns.Name, pod.Name)
119 }
120
121 func deleteConfigMapOrErrorf(t *testing.T, c clientset.Interface, ns, name string) {
122 if err := c.CoreV1().ConfigMaps(ns).Delete(context.TODO(), name, metav1.DeleteOptions{}); err != nil {
123 t.Errorf("unable to delete ConfigMap %v: %v", name, err)
124 }
125 }
126
View as plain text