Skip to content

Commit 9957915

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

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

support/rbac.go

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

203203
return rb
204204
}
205+
206+
func CreateUserNamespacedRoleBinding(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+
ObjectMeta: metav1.ObjectMeta{
212+
GenerateName: "rb-",
213+
Namespace: namespace.Name,
214+
},
215+
RoleRef: rbacv1.RoleRef{
216+
Kind: "ClusterRole",
217+
Name: roleName, // grants specified role 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 RoleBinding %s in namespace %s successfully", roleBinding.Name, roleBinding.Namespace)
232+
233+
return rb
234+
}

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 := CreateUserNamespacedRoleBinding(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)