...

Source file src/sigs.k8s.io/controller-runtime/pkg/envtest/komega/komega_test.go

Documentation: sigs.k8s.io/controller-runtime/pkg/envtest/komega

     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  }
   139  

View as plain text