Skip to content

Commit b5b412a

Browse files
committed
Convert existing unit test to ginkgo
Signed-off-by: Rizwana777 <[email protected]>
1 parent a17f072 commit b5b412a

File tree

6 files changed

+256
-232
lines changed

6 files changed

+256
-232
lines changed

controllers/resources_test.go

Lines changed: 164 additions & 186 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package rollouts
33
import (
44
"context"
55
"fmt"
6-
"testing"
76

8-
"github.com/stretchr/testify/assert"
7+
"github.com/argoproj-labs/argo-rollouts-manager/api/v1alpha1"
8+
. "github.com/onsi/ginkgo/v2"
9+
. "github.com/onsi/gomega"
910
corev1 "k8s.io/api/core/v1"
1011
rbacv1 "k8s.io/api/rbac/v1"
1112
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -15,199 +16,176 @@ import (
1516
"sigs.k8s.io/controller-runtime/pkg/reconcile"
1617
)
1718

18-
func TestReconcileRolloutManager_verifyRolloutsResources(t *testing.T) {
19-
20-
ctx := context.Background()
21-
a := makeTestRolloutManager()
22-
23-
r := makeTestReconciler(t, a)
24-
assert.NoError(t, createNamespace(r, a.Namespace))
25-
26-
req := reconcile.Request{
27-
NamespacedName: types.NamespacedName{
28-
Name: a.Name,
19+
var _ = Describe("ReconcileRolloutManager tests", func() {
20+
var ctx context.Context
21+
var req reconcile.Request
22+
var a *v1alpha1.RolloutManager
23+
var r *RolloutManagerReconciler
24+
25+
BeforeEach(func() {
26+
ctx = context.Background()
27+
a = makeTestRolloutManager()
28+
r = makeTestReconciler(a)
29+
err := createNamespace(r, a.Namespace)
30+
Expect(err).ToNot(HaveOccurred())
31+
32+
req = reconcile.Request{
33+
NamespacedName: types.NamespacedName{
34+
Name: a.Name,
35+
Namespace: a.Namespace,
36+
},
37+
}
38+
})
39+
40+
It("Test to verify RolloutsResources", func() {
41+
res, err := r.Reconcile(ctx, req)
42+
Expect(err).ToNot(HaveOccurred())
43+
Expect(res.Requeue).Should(BeFalse(), "reconcile should not requeue request")
44+
45+
sa := &corev1.ServiceAccount{}
46+
Expect(r.Client.Get(ctx, types.NamespacedName{
47+
Name: DefaultArgoRolloutsResourceName,
48+
Namespace: testNamespace,
49+
}, sa)).To(Succeed(), fmt.Sprintf("failed to find the rollouts serviceaccount: %#v\n", err))
50+
51+
role := &rbacv1.Role{}
52+
Expect(r.Client.Get(ctx, types.NamespacedName{
53+
Name: DefaultArgoRolloutsResourceName,
54+
Namespace: testNamespace,
55+
}, role)).To(Succeed(), fmt.Sprintf("failed to find the rollouts role: %#v\n", err))
56+
57+
roleBinding := &rbacv1.RoleBinding{}
58+
Expect(r.Client.Get(ctx, types.NamespacedName{
59+
Name: DefaultArgoRolloutsResourceName,
60+
Namespace: testNamespace,
61+
}, roleBinding)).To(Succeed(), "failed to find the rollouts rolebinding")
62+
63+
aggregateToAdminClusterRole := &rbacv1.ClusterRole{}
64+
Expect(r.Client.Get(ctx, types.NamespacedName{
65+
Name: "argo-rollouts-aggregate-to-admin",
66+
}, aggregateToAdminClusterRole)).To(Succeed(), fmt.Sprintf("failed to find the aggregateToAdmin ClusterRole: %#v\n", err))
67+
68+
aggregateToEditClusterRole := &rbacv1.ClusterRole{}
69+
Expect(r.Client.Get(ctx, types.NamespacedName{
70+
Name: "argo-rollouts-aggregate-to-edit",
71+
}, aggregateToEditClusterRole)).To(Succeed(), fmt.Sprintf("failed to find the aggregateToEdit ClusterRole: %#v\n", err))
72+
73+
aggregateToViewClusterRole := &rbacv1.ClusterRole{}
74+
Expect(r.Client.Get(ctx, types.NamespacedName{
75+
Name: "argo-rollouts-aggregate-to-view",
76+
}, aggregateToViewClusterRole)).To(Succeed(), fmt.Sprintf("failed to find the aggregateToView ClusterRole: %#v\n", err))
77+
78+
service := &corev1.Service{}
79+
Expect(r.Client.Get(ctx, types.NamespacedName{
80+
Name: DefaultArgoRolloutsMetricsServiceName,
2981
Namespace: a.Namespace,
30-
},
31-
}
32-
33-
res, err := r.Reconcile(ctx, req)
34-
assert.NoError(t, err)
35-
if res.Requeue {
36-
t.Fatal("reconcile requeued request")
37-
}
38-
39-
sa := &corev1.ServiceAccount{}
40-
if err = r.Client.Get(ctx, types.NamespacedName{
41-
Name: DefaultArgoRolloutsResourceName,
42-
Namespace: testNamespace,
43-
}, sa); err != nil {
44-
t.Fatalf("failed to find the rollouts serviceaccount: %#v\n", err)
45-
}
46-
47-
role := &rbacv1.Role{}
48-
if err = r.Client.Get(ctx, types.NamespacedName{
49-
Name: DefaultArgoRolloutsResourceName,
50-
Namespace: testNamespace,
51-
}, role); err != nil {
52-
t.Fatalf("failed to find the rollouts role: %#v\n", err)
53-
}
54-
55-
rolebinding := &rbacv1.RoleBinding{}
56-
if err = r.Client.Get(ctx, types.NamespacedName{
57-
Name: DefaultArgoRolloutsResourceName,
58-
Namespace: testNamespace,
59-
}, rolebinding); err != nil {
60-
t.Fatalf("failed to find the rollouts rolebinding: %#v\n", err)
61-
}
62-
63-
aggregateToAdminClusterRole := &rbacv1.ClusterRole{}
64-
if err = r.Client.Get(ctx, types.NamespacedName{
65-
Name: "argo-rollouts-aggregate-to-admin",
66-
}, aggregateToAdminClusterRole); err != nil {
67-
t.Fatalf("failed to find the aggregateToAdmin ClusterRole: %#v\n", err)
68-
}
69-
70-
aggregateToEditClusterRole := &rbacv1.ClusterRole{}
71-
if err = r.Client.Get(ctx, types.NamespacedName{
72-
Name: "argo-rollouts-aggregate-to-edit",
73-
}, aggregateToEditClusterRole); err != nil {
74-
t.Fatalf("failed to find the aggregateToEdit ClusterRole: %#v\n", err)
75-
}
76-
77-
aggregateToViewClusterRole := &rbacv1.ClusterRole{}
78-
if err = r.Client.Get(ctx, types.NamespacedName{
79-
Name: "argo-rollouts-aggregate-to-view",
80-
}, aggregateToViewClusterRole); err != nil {
81-
t.Fatalf("failed to find the aggregateToView ClusterRole: %#v\n", err)
82-
}
83-
84-
service := &corev1.Service{}
85-
if err = r.Client.Get(ctx, types.NamespacedName{
86-
Name: DefaultArgoRolloutsMetricsServiceName,
87-
Namespace: a.Namespace,
88-
}, service); err != nil {
89-
t.Fatalf("failed to find the rollouts metrics service: %#v\n", err)
90-
}
91-
92-
secret := &corev1.Secret{}
93-
if err = r.Client.Get(ctx, types.NamespacedName{
94-
Name: DefaultRolloutsNotificationSecretName,
95-
Namespace: a.Namespace,
96-
}, secret); err != nil {
97-
t.Fatalf("failed to find the rollouts secret: %#v\n", err)
98-
}
99-
}
100-
101-
func TestReconcileAggregateToAdminClusterRole(t *testing.T) {
102-
a := makeTestRolloutManager()
103-
104-
r := makeTestReconciler(t, a)
105-
assert.NoError(t, createNamespace(r, a.Namespace))
106-
107-
assert.NoError(t, r.reconcileRolloutsAggregateToAdminClusterRole(context.Background(), a))
108-
}
109-
110-
func TestReconcileAggregateToEditClusterRole(t *testing.T) {
111-
a := makeTestRolloutManager()
112-
113-
r := makeTestReconciler(t, a)
114-
assert.NoError(t, createNamespace(r, a.Namespace))
115-
116-
assert.NoError(t, r.reconcileRolloutsAggregateToEditClusterRole(context.Background(), a))
117-
}
118-
119-
func TestReconcileAggregateToViewClusterRole(t *testing.T) {
120-
a := makeTestRolloutManager()
121-
122-
r := makeTestReconciler(t, a)
123-
assert.NoError(t, createNamespace(r, a.Namespace))
124-
125-
assert.NoError(t, r.reconcileRolloutsAggregateToViewClusterRole(context.Background(), a))
126-
}
127-
128-
func TestReconcileRolloutManager_CleanUp(t *testing.T) {
129-
130-
ctx := context.Background()
131-
a := makeTestRolloutManager()
132-
133-
resources := []runtime.Object{a}
134-
135-
r := makeTestReconciler(t, resources...)
136-
assert.NoError(t, createNamespace(r, a.Namespace))
137-
138-
req := reconcile.Request{
139-
NamespacedName: types.NamespacedName{
140-
Name: a.Name,
82+
}, service)).To(Succeed(), fmt.Sprintf("failed to find the rollouts metrics service: %#v\n", err))
83+
84+
secret := &corev1.Secret{}
85+
Expect(r.Client.Get(ctx, types.NamespacedName{
86+
Name: DefaultRolloutsNotificationSecretName,
14187
Namespace: a.Namespace,
142-
},
143-
}
144-
res, err := r.Reconcile(ctx, req)
145-
assert.NoError(t, err)
146-
if res.Requeue {
147-
t.Fatal("reconcile requeued request")
148-
}
149-
150-
err = r.Client.Delete(ctx, a)
151-
assert.NoError(t, err)
152-
153-
// check if rollouts resources are deleted
154-
tt := []struct {
155-
name string
156-
resource client.Object
157-
}{
158-
{
159-
fmt.Sprintf("ServiceAccount %s", DefaultArgoRolloutsResourceName),
160-
&corev1.ServiceAccount{
161-
ObjectMeta: metav1.ObjectMeta{
162-
Name: DefaultArgoRolloutsResourceName,
163-
Namespace: a.Namespace,
88+
}, secret)).To(Succeed(), fmt.Sprintf("failed to find the rollouts secret: %#v\n", err))
89+
})
90+
91+
It("ReconcileAggregate to adminClusterRole test", func() {
92+
err := r.reconcileRolloutsAggregateToAdminClusterRole(context.Background(), a)
93+
Expect(err).ToNot(HaveOccurred())
94+
})
95+
96+
It("ReconcileAggregate to EditClusterRole test", func() {
97+
err := r.reconcileRolloutsAggregateToEditClusterRole(context.Background(), a)
98+
Expect(err).ToNot(HaveOccurred())
99+
})
100+
101+
It("ReconcileAggregate to ViewClusterRole", func() {
102+
err := r.reconcileRolloutsAggregateToViewClusterRole(context.Background(), a)
103+
Expect(err).ToNot(HaveOccurred())
104+
})
105+
106+
Context("RolloutManager Cleaup tests", func() {
107+
ctx = context.Background()
108+
a = makeTestRolloutManager()
109+
110+
req = reconcile.Request{
111+
NamespacedName: types.NamespacedName{
112+
Name: a.Name,
113+
Namespace: a.Namespace,
114+
},
115+
}
116+
resources := []runtime.Object{a}
117+
118+
r := makeTestReconciler(resources...)
119+
err := createNamespace(r, a.Namespace)
120+
Expect(err).ToNot(HaveOccurred())
121+
122+
res, err := r.Reconcile(ctx, req)
123+
Expect(err).NotTo(HaveOccurred())
124+
Expect(res.Requeue).Should(BeFalse(), "reconcile should not requeue request")
125+
126+
err = r.Client.Delete(ctx, a)
127+
Expect(err).ToNot(HaveOccurred())
128+
129+
tt := []struct {
130+
name string
131+
resource client.Object
132+
}{
133+
{
134+
fmt.Sprintf("ServiceAccount %s", DefaultArgoRolloutsResourceName),
135+
&corev1.ServiceAccount{
136+
ObjectMeta: metav1.ObjectMeta{
137+
Name: DefaultArgoRolloutsResourceName,
138+
Namespace: a.Namespace,
139+
},
164140
},
165141
},
166-
},
167-
{
168-
fmt.Sprintf("Role %s", DefaultArgoRolloutsResourceName),
169-
&rbacv1.Role{
170-
ObjectMeta: metav1.ObjectMeta{
171-
Name: DefaultArgoRolloutsResourceName,
172-
Namespace: a.Namespace,
142+
{
143+
fmt.Sprintf("Role %s", DefaultArgoRolloutsResourceName),
144+
&rbacv1.Role{
145+
ObjectMeta: metav1.ObjectMeta{
146+
Name: DefaultArgoRolloutsResourceName,
147+
Namespace: a.Namespace,
148+
},
173149
},
174150
},
175-
},
176-
{
177-
fmt.Sprintf("RoleBinding %s", DefaultArgoRolloutsResourceName),
178-
&rbacv1.RoleBinding{
179-
ObjectMeta: metav1.ObjectMeta{
180-
Name: DefaultArgoRolloutsResourceName,
181-
Namespace: a.Namespace,
151+
{
152+
fmt.Sprintf("RoleBinding %s", DefaultArgoRolloutsResourceName),
153+
&rbacv1.RoleBinding{
154+
ObjectMeta: metav1.ObjectMeta{
155+
Name: DefaultArgoRolloutsResourceName,
156+
Namespace: a.Namespace,
157+
},
182158
},
183159
},
184-
},
185-
{
186-
fmt.Sprintf("Secret %s", DefaultRolloutsNotificationSecretName),
187-
&corev1.Secret{
188-
ObjectMeta: metav1.ObjectMeta{
189-
Name: DefaultRolloutsNotificationSecretName,
190-
Namespace: a.Namespace,
160+
{
161+
fmt.Sprintf("Secret %s", DefaultRolloutsNotificationSecretName),
162+
&corev1.Secret{
163+
ObjectMeta: metav1.ObjectMeta{
164+
Name: DefaultRolloutsNotificationSecretName,
165+
Namespace: a.Namespace,
166+
},
167+
Type: corev1.SecretTypeOpaque,
191168
},
192-
Type: corev1.SecretTypeOpaque,
193169
},
194-
},
195-
{
196-
fmt.Sprintf("Service %s", DefaultArgoRolloutsResourceName),
197-
&corev1.Service{
198-
ObjectMeta: metav1.ObjectMeta{
199-
Name: DefaultArgoRolloutsResourceName,
200-
Namespace: a.Namespace,
170+
{
171+
fmt.Sprintf("Service %s", DefaultArgoRolloutsResourceName),
172+
&corev1.Service{
173+
ObjectMeta: metav1.ObjectMeta{
174+
Name: DefaultArgoRolloutsResourceName,
175+
Namespace: a.Namespace,
176+
},
201177
},
202178
},
203-
},
204-
}
205-
206-
for _, test := range tt {
207-
t.Run(test.name, func(t *testing.T) {
208-
if err = fetchObject(ctx, r.Client, a.Namespace, test.name, test.resource); err == nil {
209-
t.Errorf("Expected %s to be deleted", test.name)
210-
}
211-
})
212-
}
213-
}
179+
}
180+
181+
for _, test := range tt {
182+
When(test.name, func() {
183+
It("ReconcileRolloutManager CleanUp Test for "+test.name+".", func() {
184+
err := fetchObject(ctx, r.Client, a.Namespace, test.name, test.resource)
185+
Expect(err).To(HaveOccurred(), fmt.Sprintf("Expected %s to be deleted", test.name))
186+
})
187+
})
188+
}
189+
})
190+
191+
})

0 commit comments

Comments
 (0)