github.com/gocrane/crane@v0.11.0/pkg/utils/pod_template_test.go (about) 1 package utils 2 3 import ( 4 "context" 5 "testing" 6 7 appsv1 "k8s.io/api/apps/v1" 8 corev1 "k8s.io/api/core/v1" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "sigs.k8s.io/controller-runtime/pkg/client" 11 fakeClient "sigs.k8s.io/controller-runtime/pkg/client/fake" 12 ) 13 14 func TestGetPodTemplate(t *testing.T) { 15 ctx := context.TODO() 16 testNamespace := "test-namespace" 17 testName := "test-name" 18 testImage := "test-image" 19 testCases := []struct { 20 object client.Object 21 kind string 22 apiVersion string 23 }{ 24 { 25 object: &appsv1.Deployment{ 26 ObjectMeta: metav1.ObjectMeta{ 27 Namespace: testNamespace, 28 Name: testName, 29 }, 30 Spec: appsv1.DeploymentSpec{ 31 Template: corev1.PodTemplateSpec{ 32 Spec: corev1.PodSpec{ 33 Containers: []corev1.Container{ 34 { 35 Image: testImage, 36 }, 37 }, 38 }, 39 }, 40 }, 41 }, 42 kind: "Deployment", 43 apiVersion: "apps/v1", 44 }, 45 { 46 object: &appsv1.StatefulSet{ 47 ObjectMeta: metav1.ObjectMeta{ 48 Namespace: testNamespace, 49 Name: testName, 50 }, 51 Spec: appsv1.StatefulSetSpec{ 52 Template: corev1.PodTemplateSpec{ 53 Spec: corev1.PodSpec{ 54 Containers: []corev1.Container{ 55 { 56 Image: testImage, 57 }, 58 }, 59 }, 60 }, 61 }, 62 }, 63 kind: "StatefulSet", 64 apiVersion: "apps/v1", 65 }, 66 { 67 object: &appsv1.DaemonSet{ 68 ObjectMeta: metav1.ObjectMeta{ 69 Namespace: testNamespace, 70 Name: testName, 71 }, 72 Spec: appsv1.DaemonSetSpec{ 73 Template: corev1.PodTemplateSpec{ 74 Spec: corev1.PodSpec{ 75 Containers: []corev1.Container{ 76 { 77 Image: testImage, 78 }, 79 }, 80 }, 81 }, 82 }, 83 }, 84 kind: "DaemonSet", 85 apiVersion: "apps/v1", 86 }, 87 } 88 89 for _, tc := range testCases { 90 fakeClient := fakeClient.NewClientBuilder().WithObjects(tc.object).Build() 91 podTemplate, err := GetPodTemplate(ctx, testNamespace, testName, tc.kind, tc.apiVersion, fakeClient) 92 if err != nil { 93 t.Errorf("get pod template error: %v", err) 94 } 95 if len(podTemplate.Spec.Containers) == 1 && podTemplate.Spec.Containers[0].Image != testImage { 96 t.Errorf("the container image of pod template is inconsistent: expect %s, actual is %s", testImage, podTemplate.Spec.Containers[0].Image) 97 } 98 } 99 }