Skip to content

Commit 5620f13

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

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 CreateUserNamespaceRoleBinding(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 test-namespace
210+
roleBinding := &rbacv1.RoleBinding{
211+
ObjectMeta: metav1.ObjectMeta{
212+
GenerateName: "rb-ns-",
213+
Namespace: namespace.Name,
214+
},
215+
RoleRef: rbacv1.RoleRef{
216+
Kind: "ClusterRole",
217+
Name: roleName, // grants admin access
218+
APIGroup: "rbac.authorization.k8s.io",
219+
},
220+
Subjects: []rbacv1.Subject{
221+
{
222+
Kind: "User",
223+
Name: userName,
224+
APIGroup: "rbac.authorization.k8s.io",
225+
},
226+
},
227+
}
228+
229+
rb, err := t.Client().Core().RbacV1().RoleBindings(namespace.Name).Create(t.Ctx(), roleBinding, metav1.CreateOptions{})
230+
t.Expect(err).NotTo(gomega.HaveOccurred())
231+
t.T().Logf("Created User ClusterRoleBinding %s successfully", roleBinding.Name)
232+
233+
t.T().Cleanup(func() {
234+
t.Client().Core().RbacV1().ClusterRoleBindings().Delete(t.Ctx(), rb.Name, metav1.DeleteOptions{})
235+
})
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 TestCreateUserNamespaceRoleBinding(t *testing.T) {
65+
66+
test := NewTest(t)
67+
namespace := test.NewTestNamespace()
68+
69+
rb := CreateUserNamespaceRoleBinding(test, "user-1", namespace, "role1")
70+
71+
test.Expect(rb).To(gomega.Not(gomega.BeNil()))
72+
test.Expect(rb.GenerateName).To(gomega.Equal("rb-ns-"))
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)