@@ -1139,6 +1139,112 @@ var _ = Describe("Resource creation and cleanup tests", func() {
11391139 })
11401140 })
11411141
1142+ Context ("Verify correct RBAC permissions are assigned while switching between namespace and cluster scoped Rollouts" , func () {
1143+ var (
1144+ ctx context.Context
1145+ a v1alpha1.RolloutManager
1146+ r * RolloutManagerReconciler
1147+ )
1148+
1149+ BeforeEach (func () {
1150+ ctx = context .Background ()
1151+ a = * makeTestRolloutManager ()
1152+ r = makeTestReconciler (& a )
1153+ err := createNamespace (r , a .Namespace )
1154+ Expect (err ).ToNot (HaveOccurred ())
1155+ })
1156+
1157+ It ("Should delete existing Role when ClusterRole is reconciled" , func () {
1158+ By ("Reconcile Role." )
1159+ role , err := r .reconcileRolloutsRole (ctx , a )
1160+ Expect (err ).ToNot (HaveOccurred ())
1161+
1162+ By ("Verify Role is created" )
1163+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (Succeed ())
1164+
1165+ By ("Reconcile ClusterRole" )
1166+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
1167+ Expect (err ).ToNot (HaveOccurred ())
1168+
1169+ By ("Verify ClusterRole is created" )
1170+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (Succeed ())
1171+
1172+ By ("Verify existing Role is deleted" )
1173+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (HaveOccurred ())
1174+ })
1175+
1176+ It ("Should delete existing ClusterRole when Role is reconciled" , func () {
1177+
1178+ By ("Reconcile ClusterRole" )
1179+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
1180+ Expect (err ).ToNot (HaveOccurred ())
1181+
1182+ By ("Verify ClusterRole is created" )
1183+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (Succeed ())
1184+
1185+ By ("Reconcile Role." )
1186+ role , err := r .reconcileRolloutsRole (ctx , a )
1187+ Expect (err ).ToNot (HaveOccurred ())
1188+
1189+ By ("Verify Role is created" )
1190+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (Succeed ())
1191+
1192+ By ("Verify existing ClusterRole is deleted" )
1193+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (HaveOccurred ())
1194+ })
1195+
1196+ It ("Should delete existing RoleBinding when ClusterRoleBinding is reconciled" , func () {
1197+
1198+ By ("Reconcile RoleBinding" )
1199+ sa , err := r .reconcileRolloutsServiceAccount (ctx , a )
1200+ Expect (err ).ToNot (HaveOccurred ())
1201+ role , err := r .reconcileRolloutsRole (ctx , a )
1202+ Expect (err ).ToNot (HaveOccurred ())
1203+ Expect (r .reconcileRolloutsRoleBinding (ctx , a , role , sa )).To (Succeed ())
1204+
1205+ By ("Verify RoleBinding is created" )
1206+ roleBinding := & rbacv1.RoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName , Namespace : a .Namespace }}
1207+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (Succeed ())
1208+
1209+ By ("Reconcile ClusterRoleBinding" )
1210+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
1211+ Expect (err ).ToNot (HaveOccurred ())
1212+ Expect (r .reconcileRolloutsClusterRoleBinding (ctx , clusterRole , sa , a )).To (Succeed ())
1213+
1214+ By ("Verify ClusterRoleBinding is created" )
1215+ clusterRoleBinding := & rbacv1.ClusterRoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName }}
1216+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRoleBinding ), clusterRoleBinding )).To (Succeed ())
1217+
1218+ By ("Verify RoleBinding is deleted" )
1219+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (HaveOccurred ())
1220+ })
1221+
1222+ It ("Should delete existing ClusterRoleBinding when RoleBinding is reconciled" , func () {
1223+
1224+ By ("Reconcile ClusterRoleBinding" )
1225+ sa , err := r .reconcileRolloutsServiceAccount (ctx , a )
1226+ Expect (err ).ToNot (HaveOccurred ())
1227+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
1228+ Expect (err ).ToNot (HaveOccurred ())
1229+ Expect (r .reconcileRolloutsClusterRoleBinding (ctx , clusterRole , sa , a )).To (Succeed ())
1230+
1231+ By ("Verify ClusterRoleBinding is created" )
1232+ clusterRoleBinding := & rbacv1.ClusterRoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName }}
1233+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRoleBinding ), clusterRoleBinding )).To (Succeed ())
1234+
1235+ By ("Reconcile RoleBinding" )
1236+ role , err := r .reconcileRolloutsRole (ctx , a )
1237+ Expect (err ).ToNot (HaveOccurred ())
1238+ Expect (r .reconcileRolloutsRoleBinding (ctx , a , role , sa )).To (Succeed ())
1239+
1240+ By ("Verify RoleBinding is created" )
1241+ roleBinding := & rbacv1.RoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName , Namespace : a .Namespace }}
1242+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (Succeed ())
1243+
1244+ By ("Verify ClusterRoleBinding is deleted" )
1245+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (HaveOccurred ())
1246+ })
1247+ })
11421248})
11431249
11441250func serviceMonitor () * monitoringv1.ServiceMonitor {
0 commit comments