@@ -3,9 +3,10 @@ package rollouts
33import (
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