sigs.k8s.io/controller-runtime@v0.18.2/pkg/envtest/komega/komega_test.go (about) 1 package komega 2 3 import ( 4 "testing" 5 6 _ "github.com/onsi/ginkgo/v2" 7 . "github.com/onsi/gomega" 8 appsv1 "k8s.io/api/apps/v1" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "k8s.io/utils/ptr" 11 12 "sigs.k8s.io/controller-runtime/pkg/client" 13 fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake" 14 ) 15 16 func exampleDeployment() *appsv1.Deployment { 17 return &appsv1.Deployment{ 18 ObjectMeta: metav1.ObjectMeta{ 19 Namespace: "default", 20 Name: "test", 21 }, 22 Spec: appsv1.DeploymentSpec{ 23 Replicas: ptr.To(int32(5)), 24 }, 25 } 26 } 27 28 func createFakeClient() client.Client { 29 return fakeclient.NewClientBuilder(). 30 WithObjects(exampleDeployment()). 31 Build() 32 } 33 34 func TestGet(t *testing.T) { 35 g := NewWithT(t) 36 37 fc := createFakeClient() 38 k := New(fc) 39 40 fetched := appsv1.Deployment{ 41 ObjectMeta: metav1.ObjectMeta{ 42 Namespace: "default", 43 Name: "test", 44 }, 45 } 46 g.Eventually(k.Get(&fetched)).Should(Succeed()) 47 48 g.Expect(*fetched.Spec.Replicas).To(BeEquivalentTo(5)) 49 } 50 51 func TestList(t *testing.T) { 52 g := NewWithT(t) 53 54 fc := createFakeClient() 55 k := New(fc) 56 57 list := appsv1.DeploymentList{} 58 g.Eventually(k.List(&list)).Should(Succeed()) 59 60 g.Expect(list.Items).To(HaveLen(1)) 61 depl := exampleDeployment() 62 g.Expect(list.Items[0]).To(And( 63 HaveField("ObjectMeta.Name", Equal(depl.ObjectMeta.Name)), 64 HaveField("ObjectMeta.Namespace", Equal(depl.ObjectMeta.Namespace)), 65 )) 66 } 67 68 func TestUpdate(t *testing.T) { 69 g := NewWithT(t) 70 71 fc := createFakeClient() 72 k := New(fc) 73 74 updateDeployment := appsv1.Deployment{ 75 ObjectMeta: exampleDeployment().ObjectMeta, 76 } 77 g.Eventually(k.Update(&updateDeployment, func() { 78 updateDeployment.Annotations = map[string]string{"updated": "true"} 79 })).Should(Succeed()) 80 81 fetched := appsv1.Deployment{ 82 ObjectMeta: exampleDeployment().ObjectMeta, 83 } 84 g.Expect(k.Object(&fetched)()).To(HaveField("ObjectMeta.Annotations", HaveKeyWithValue("updated", "true"))) 85 } 86 87 func TestUpdateStatus(t *testing.T) { 88 g := NewWithT(t) 89 90 fc := createFakeClient() 91 k := New(fc) 92 93 updateDeployment := appsv1.Deployment{ 94 ObjectMeta: exampleDeployment().ObjectMeta, 95 } 96 g.Eventually(k.UpdateStatus(&updateDeployment, func() { 97 updateDeployment.Status.AvailableReplicas = 1 98 })).Should(Succeed()) 99 100 fetched := appsv1.Deployment{ 101 ObjectMeta: exampleDeployment().ObjectMeta, 102 } 103 g.Expect(k.Object(&fetched)()).To(HaveField("Status.AvailableReplicas", BeEquivalentTo(1))) 104 } 105 106 func TestObject(t *testing.T) { 107 g := NewWithT(t) 108 109 fc := createFakeClient() 110 k := New(fc) 111 112 fetched := appsv1.Deployment{ 113 ObjectMeta: metav1.ObjectMeta{ 114 Namespace: "default", 115 Name: "test", 116 }, 117 } 118 g.Eventually(k.Object(&fetched)).Should(And( 119 Not(BeNil()), 120 HaveField("Spec.Replicas", Equal(ptr.To(int32(5)))), 121 )) 122 } 123 124 func TestObjectList(t *testing.T) { 125 g := NewWithT(t) 126 127 fc := createFakeClient() 128 k := New(fc) 129 130 list := appsv1.DeploymentList{} 131 g.Eventually(k.ObjectList(&list)).Should(And( 132 Not(BeNil()), 133 HaveField("Items", And( 134 HaveLen(1), 135 ContainElement(HaveField("Spec.Replicas", Equal(ptr.To(int32(5))))), 136 )), 137 )) 138 }