@@ -418,6 +418,112 @@ var _ = Describe("Resource creation and cleanup tests", func() {
418418 })
419419 })
420420
421+ Context ("Verify correct RBAC permissions are assigned while switching between namespace and cluster scoped Rollouts" , func () {
422+ var (
423+ ctx context.Context
424+ a v1alpha1.RolloutManager
425+ r * RolloutManagerReconciler
426+ )
427+
428+ BeforeEach (func () {
429+ ctx = context .Background ()
430+ a = * makeTestRolloutManager ()
431+ r = makeTestReconciler (& a )
432+ err := createNamespace (r , a .Namespace )
433+ Expect (err ).ToNot (HaveOccurred ())
434+ })
435+
436+ It ("Should delete existing Role when ClusterRole is reconciled" , func () {
437+ By ("Reconcile Role." )
438+ role , err := r .reconcileRolloutsRole (ctx , a )
439+ Expect (err ).ToNot (HaveOccurred ())
440+
441+ By ("Verify Role is created" )
442+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (Succeed ())
443+
444+ By ("Reconcile ClusterRole" )
445+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
446+ Expect (err ).ToNot (HaveOccurred ())
447+
448+ By ("Verify ClusterRole is created" )
449+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (Succeed ())
450+
451+ By ("Verify existing Role is deleted" )
452+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (HaveOccurred ())
453+ })
454+
455+ It ("Should delete existing ClusterRole when Role is reconciled" , func () {
456+
457+ By ("Reconcile ClusterRole" )
458+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
459+ Expect (err ).ToNot (HaveOccurred ())
460+
461+ By ("Verify ClusterRole is created" )
462+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (Succeed ())
463+
464+ By ("Reconcile Role." )
465+ role , err := r .reconcileRolloutsRole (ctx , a )
466+ Expect (err ).ToNot (HaveOccurred ())
467+
468+ By ("Verify Role is created" )
469+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (role ), role )).To (Succeed ())
470+
471+ By ("Verify existing ClusterRole is deleted" )
472+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (HaveOccurred ())
473+ })
474+
475+ It ("Should delete existing RoleBinding when ClusterRoleBinding is reconciled" , func () {
476+
477+ By ("Reconcile RoleBinding" )
478+ sa , err := r .reconcileRolloutsServiceAccount (ctx , a )
479+ Expect (err ).ToNot (HaveOccurred ())
480+ role , err := r .reconcileRolloutsRole (ctx , a )
481+ Expect (err ).ToNot (HaveOccurred ())
482+ Expect (r .reconcileRolloutsRoleBinding (ctx , a , role , sa )).To (Succeed ())
483+
484+ By ("Verify RoleBinding is created" )
485+ roleBinding := & rbacv1.RoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName , Namespace : a .Namespace }}
486+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (Succeed ())
487+
488+ By ("Reconcile ClusterRoleBinding" )
489+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
490+ Expect (err ).ToNot (HaveOccurred ())
491+ Expect (r .reconcileRolloutsClusterRoleBinding (ctx , clusterRole , sa , a )).To (Succeed ())
492+
493+ By ("Verify ClusterRoleBinding is created" )
494+ clusterRoleBinding := & rbacv1.ClusterRoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName }}
495+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRoleBinding ), clusterRoleBinding )).To (Succeed ())
496+
497+ By ("Verify RoleBinding is deleted" )
498+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (HaveOccurred ())
499+ })
500+
501+ It ("Should delete existing ClusterRoleBinding when RoleBinding is reconciled" , func () {
502+
503+ By ("Reconcile ClusterRoleBinding" )
504+ sa , err := r .reconcileRolloutsServiceAccount (ctx , a )
505+ Expect (err ).ToNot (HaveOccurred ())
506+ clusterRole , err := r .reconcileRolloutsClusterRole (ctx , a )
507+ Expect (err ).ToNot (HaveOccurred ())
508+ Expect (r .reconcileRolloutsClusterRoleBinding (ctx , clusterRole , sa , a )).To (Succeed ())
509+
510+ By ("Verify ClusterRoleBinding is created" )
511+ clusterRoleBinding := & rbacv1.ClusterRoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName }}
512+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRoleBinding ), clusterRoleBinding )).To (Succeed ())
513+
514+ By ("Reconcile RoleBinding" )
515+ role , err := r .reconcileRolloutsRole (ctx , a )
516+ Expect (err ).ToNot (HaveOccurred ())
517+ Expect (r .reconcileRolloutsRoleBinding (ctx , a , role , sa )).To (Succeed ())
518+
519+ By ("Verify RoleBinding is created" )
520+ roleBinding := & rbacv1.RoleBinding {ObjectMeta : metav1.ObjectMeta {Name : DefaultArgoRolloutsResourceName , Namespace : a .Namespace }}
521+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (roleBinding ), roleBinding )).To (Succeed ())
522+
523+ By ("Verify ClusterRoleBinding is deleted" )
524+ Expect (r .Client .Get (ctx , client .ObjectKeyFromObject (clusterRole ), clusterRole )).To (HaveOccurred ())
525+ })
526+ })
421527})
422528
423529func serviceMonitor () * monitoringv1.ServiceMonitor {
0 commit comments