Skip to content

Commit 472dd03

Browse files
committed
Add unit tests for Operator controller deletion handling.
1 parent ac075ae commit 472dd03

File tree

1 file changed

+54
-3
lines changed

1 file changed

+54
-3
lines changed

pkg/controller/operators/operator_controller_test.go

Lines changed: 54 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
. "github.com/onsi/gomega"
88
corev1 "k8s.io/api/core/v1"
99
rbacv1 "k8s.io/api/rbac/v1"
10+
apierrors "k8s.io/apimachinery/pkg/api/errors"
1011
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1112
"k8s.io/apimachinery/pkg/runtime"
1213
"k8s.io/apimachinery/pkg/types"
@@ -43,9 +44,54 @@ var _ = Describe("Operator Controller", func() {
4344
Expect(k8sClient.Create(ctx, operator)).To(Succeed())
4445
})
4546

46-
AfterEach(func() {
47-
Expect(k8sClient.Get(ctx, name, operator)).To(Succeed())
48-
Expect(k8sClient.Delete(ctx, operator, deleteOpts)).To(Succeed())
47+
Describe("operator deletion", func() {
48+
BeforeEach(func() {
49+
Expect(k8sClient.Delete(ctx, operator)).To(Succeed())
50+
Eventually(func() bool {
51+
err := k8sClient.Get(ctx, name, operator)
52+
return apierrors.IsNotFound(err)
53+
}, timeout, interval).Should(BeTrue())
54+
})
55+
Context("with components bearing its label", func() {
56+
var (
57+
objs []runtime.Object
58+
namespace string
59+
)
60+
61+
BeforeEach(func() {
62+
namespace = genName("ns-")
63+
objs = testobj.WithLabel(expectedKey, "",
64+
testobj.WithName(namespace, &corev1.Namespace{}),
65+
)
66+
67+
for _, obj := range objs {
68+
Expect(k8sClient.Create(ctx, obj.(client.Object))).To(Succeed())
69+
}
70+
})
71+
72+
AfterEach(func() {
73+
for _, obj := range objs {
74+
Expect(k8sClient.Get(ctx, testobj.NamespacedName(obj), obj.(client.Object))).To(Succeed())
75+
Expect(k8sClient.Delete(ctx, obj.(client.Object), deleteOpts)).To(Succeed())
76+
}
77+
Expect(k8sClient.Get(ctx, name, operator)).To(Succeed())
78+
Expect(k8sClient.Delete(ctx, operator, deleteOpts)).To(Succeed())
79+
})
80+
81+
It("should re-create it", func() {
82+
Eventually(func() error {
83+
return k8sClient.Get(ctx, name, operator)
84+
}).Should(Succeed())
85+
})
86+
})
87+
Context("with no components bearing its label", func() {
88+
It("should not re-create it", func() {
89+
Consistently(func() bool {
90+
err := k8sClient.Get(ctx, name, operator)
91+
return apierrors.IsNotFound(err)
92+
}, timeout, interval).Should(BeTrue())
93+
})
94+
})
4995
})
5096

5197
Describe("component selection", func() {
@@ -61,6 +107,11 @@ var _ = Describe("Operator Controller", func() {
61107
}, timeout, interval).Should(Equal(expectedComponentLabelSelector))
62108
})
63109

110+
AfterEach(func() {
111+
Expect(k8sClient.Get(ctx, name, operator)).To(Succeed())
112+
Expect(k8sClient.Delete(ctx, operator, deleteOpts)).To(Succeed())
113+
})
114+
64115
Context("with no components bearing its label", func() {
65116
Specify("a status containing no component references", func() {
66117
Consistently(func() ([]operatorsv1.RichReference, error) {

0 commit comments

Comments
 (0)