Skip to content

Commit e9217d4

Browse files
add method to create rolebinding for user in namespace scope
1 parent 1834ab9 commit e9217d4

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

support/rbac.go

+34
Original file line numberDiff line numberDiff line change
@@ -202,3 +202,37 @@ func CreateUserClusterRoleBinding(t Test, userName string, roleName string) *rba
202202

203203
return rb
204204
}
205+
206+
func CreateUserRoleBindingWithClusterRole(t Test, userName string, namespace *corev1.Namespace, roleName string) *rbacv1.RoleBinding {
207+
t.T().Helper()
208+
209+
// Create a RoleBinding to give specified role access to the user for given namespace
210+
roleBinding := &rbacv1.RoleBinding{
211+
TypeMeta: metav1.TypeMeta{
212+
APIVersion: rbacv1.SchemeGroupVersion.String(),
213+
Kind: "RoleBinding",
214+
},
215+
ObjectMeta: metav1.ObjectMeta{
216+
GenerateName: "rb-",
217+
Namespace: namespace.Name,
218+
},
219+
RoleRef: rbacv1.RoleRef{
220+
Kind: "ClusterRole",
221+
Name: roleName, // grants specified role access
222+
APIGroup: rbacv1.SchemeGroupVersion.Group,
223+
},
224+
Subjects: []rbacv1.Subject{
225+
{
226+
Kind: "User",
227+
Name: userName,
228+
APIGroup: rbacv1.SchemeGroupVersion.Group,
229+
},
230+
},
231+
}
232+
233+
rb, err := t.Client().Core().RbacV1().RoleBindings(namespace.Name).Create(t.Ctx(), roleBinding, metav1.CreateOptions{})
234+
t.Expect(err).NotTo(gomega.HaveOccurred())
235+
t.T().Logf("Created User RoleBinding %s in namespace %s successfully", roleBinding.Name, roleBinding.Namespace)
236+
237+
return rb
238+
}

support/rbac_test.go

+19
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,22 @@ func TestCreateUserClusterRoleBinding(t *testing.T) {
6060
test.Expect(rb.Subjects[0].Kind).To(gomega.Equal("User"))
6161
test.Expect(rb.Subjects[0].Name).To(gomega.Equal("user-1"))
6262
}
63+
64+
func TestCreateUserRoleBindingWithClusterRole(t *testing.T) {
65+
66+
test := NewTest(t)
67+
namespace := test.NewTestNamespace()
68+
69+
rb := CreateUserRoleBindingWithClusterRole(test, "user-1", namespace, "role1")
70+
71+
test.Expect(rb).To(gomega.Not(gomega.BeNil()))
72+
test.Expect(rb.GenerateName).To(gomega.Equal("rb-"))
73+
74+
test.Expect(rb.RoleRef.APIGroup).To(gomega.Equal(rbacv1.SchemeGroupVersion.Group))
75+
test.Expect(rb.RoleRef.Kind).To(gomega.Equal("ClusterRole"))
76+
test.Expect(rb.RoleRef.Name).To(gomega.Equal("role1"))
77+
78+
test.Expect(rb.Subjects[0].APIGroup).To(gomega.Equal(rbacv1.SchemeGroupVersion.Group))
79+
test.Expect(rb.Subjects[0].Kind).To(gomega.Equal("User"))
80+
test.Expect(rb.Subjects[0].Name).To(gomega.Equal("user-1"))
81+
}

0 commit comments

Comments
 (0)