7
7
. "github.com/onsi/gomega"
8
8
corev1 "k8s.io/api/core/v1"
9
9
rbacv1 "k8s.io/api/rbac/v1"
10
+ apierrors "k8s.io/apimachinery/pkg/api/errors"
10
11
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11
12
"k8s.io/apimachinery/pkg/runtime"
12
13
"k8s.io/apimachinery/pkg/types"
@@ -43,9 +44,54 @@ var _ = Describe("Operator Controller", func() {
43
44
Expect (k8sClient .Create (ctx , operator )).To (Succeed ())
44
45
})
45
46
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
+ })
49
95
})
50
96
51
97
Describe ("component selection" , func () {
@@ -61,6 +107,11 @@ var _ = Describe("Operator Controller", func() {
61
107
}, timeout , interval ).Should (Equal (expectedComponentLabelSelector ))
62
108
})
63
109
110
+ AfterEach (func () {
111
+ Expect (k8sClient .Get (ctx , name , operator )).To (Succeed ())
112
+ Expect (k8sClient .Delete (ctx , operator , deleteOpts )).To (Succeed ())
113
+ })
114
+
64
115
Context ("with no components bearing its label" , func () {
65
116
Specify ("a status containing no component references" , func () {
66
117
Consistently (func () ([]operatorsv1.RichReference , error ) {
0 commit comments