@@ -45,6 +45,30 @@ func CreateRole(t Test, namespace string, policyRules []rbacv1.PolicyRule) *rbac
4545 return role
4646}
4747
48+ func CreateClusterRole (t Test , policyRules []rbacv1.PolicyRule ) * rbacv1.ClusterRole {
49+ t .T ().Helper ()
50+
51+ role := & rbacv1.ClusterRole {
52+ TypeMeta : metav1.TypeMeta {
53+ APIVersion : rbacv1 .SchemeGroupVersion .String (),
54+ Kind : "ClusterRole" ,
55+ },
56+ ObjectMeta : metav1.ObjectMeta {
57+ GenerateName : "clusterrole-" ,
58+ },
59+ Rules : policyRules ,
60+ }
61+ role , err := t .Client ().Core ().RbacV1 ().ClusterRoles ().Create (t .Ctx (), role , metav1.CreateOptions {})
62+ t .Expect (err ).NotTo (gomega .HaveOccurred ())
63+ t .T ().Logf ("Created ClusterRole %s/%s successfully" , role .Namespace , role .Name )
64+
65+ t .T ().Cleanup (func () {
66+ t .Client ().Core ().RbacV1 ().ClusterRoles ().Delete (t .Ctx (), role .Name , metav1.DeleteOptions {})
67+ })
68+
69+ return role
70+ }
71+
4872func CreateRoleBinding (t Test , namespace string , serviceAccount * corev1.ServiceAccount , role * rbacv1.Role ) * rbacv1.RoleBinding {
4973 t .T ().Helper ()
5074
@@ -76,3 +100,39 @@ func CreateRoleBinding(t Test, namespace string, serviceAccount *corev1.ServiceA
76100
77101 return rb
78102}
103+
104+ func CreateClusterRoleBinding (t Test , serviceAccount * corev1.ServiceAccount , role * rbacv1.ClusterRole ) * rbacv1.ClusterRoleBinding {
105+ t .T ().Helper ()
106+
107+ roleBinding := & rbacv1.ClusterRoleBinding {
108+ TypeMeta : metav1.TypeMeta {
109+ APIVersion : rbacv1 .SchemeGroupVersion .String (),
110+ Kind : "ClusterRoleBinding" ,
111+ },
112+ ObjectMeta : metav1.ObjectMeta {
113+ GenerateName : "crb-" ,
114+ },
115+ RoleRef : rbacv1.RoleRef {
116+ APIGroup : rbacv1 .SchemeGroupVersion .Group ,
117+ Kind : "ClusterRole" ,
118+ Name : role .Name ,
119+ },
120+ Subjects : []rbacv1.Subject {
121+ {
122+ Kind : "ServiceAccount" ,
123+ APIGroup : corev1 .SchemeGroupVersion .Group ,
124+ Name : serviceAccount .Name ,
125+ Namespace : serviceAccount .Namespace ,
126+ },
127+ },
128+ }
129+ rb , err := t .Client ().Core ().RbacV1 ().ClusterRoleBindings ().Create (t .Ctx (), roleBinding , metav1.CreateOptions {})
130+ t .Expect (err ).NotTo (gomega .HaveOccurred ())
131+ t .T ().Logf ("Created ClusterRoleBinding %s/%s successfully" , role .Namespace , role .Name )
132+
133+ t .T ().Cleanup (func () {
134+ t .Client ().Core ().RbacV1 ().ClusterRoleBindings ().Delete (t .Ctx (), rb .Name , metav1.DeleteOptions {})
135+ })
136+
137+ return rb
138+ }
0 commit comments