mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
chore: Make member role struct match site roles (#3671)
This commit is contained in:
@ -105,11 +105,17 @@ func (api *API) updateOrganizationMemberRoles(ctx context.Context, args database
|
||||
}
|
||||
|
||||
func convertOrganizationMember(mem database.OrganizationMember) codersdk.OrganizationMember {
|
||||
return codersdk.OrganizationMember{
|
||||
convertedMember := codersdk.OrganizationMember{
|
||||
UserID: mem.UserID,
|
||||
OrganizationID: mem.OrganizationID,
|
||||
CreatedAt: mem.CreatedAt,
|
||||
UpdatedAt: mem.UpdatedAt,
|
||||
Roles: mem.Roles,
|
||||
Roles: make([]codersdk.Role, 0, len(mem.Roles)),
|
||||
}
|
||||
|
||||
for _, roleName := range mem.Roles {
|
||||
rbacRole, _ := rbac.RoleByName(roleName)
|
||||
convertedMember.Roles = append(convertedMember.Roles, convertRole(rbacRole))
|
||||
}
|
||||
return convertedMember
|
||||
}
|
||||
|
@ -1000,7 +1000,7 @@ func convertUser(user database.User, organizationIDs []uuid.UUID) codersdk.User
|
||||
Username: user.Username,
|
||||
Status: codersdk.UserStatus(user.Status),
|
||||
OrganizationIDs: organizationIDs,
|
||||
Roles: make([]codersdk.Role, 0),
|
||||
Roles: make([]codersdk.Role, 0, len(user.RBACRoles)),
|
||||
}
|
||||
|
||||
for _, roleName := range user.RBACRoles {
|
||||
|
@ -489,17 +489,19 @@ func TestGrantSiteRoles(t *testing.T) {
|
||||
})
|
||||
require.NoError(t, err)
|
||||
_, randOrgUser := coderdtest.CreateAnotherUserWithUser(t, admin, randOrg.ID, rbac.RoleOrgAdmin(randOrg.ID))
|
||||
userAdmin := coderdtest.CreateAnotherUser(t, admin, first.OrganizationID, rbac.RoleUserAdmin())
|
||||
|
||||
const newUser = "newUser"
|
||||
|
||||
testCases := []struct {
|
||||
Name string
|
||||
Client *codersdk.Client
|
||||
OrgID uuid.UUID
|
||||
AssignToUser string
|
||||
Roles []string
|
||||
Error bool
|
||||
StatusCode int
|
||||
Name string
|
||||
Client *codersdk.Client
|
||||
OrgID uuid.UUID
|
||||
AssignToUser string
|
||||
Roles []string
|
||||
ExpectedRoles []string
|
||||
Error bool
|
||||
StatusCode int
|
||||
}{
|
||||
{
|
||||
Name: "OrgRoleInSite",
|
||||
@ -576,7 +578,20 @@ func TestGrantSiteRoles(t *testing.T) {
|
||||
OrgID: first.OrganizationID,
|
||||
AssignToUser: newUser,
|
||||
Roles: []string{rbac.RoleOrgAdmin(first.OrganizationID)},
|
||||
Error: false,
|
||||
ExpectedRoles: []string{
|
||||
rbac.RoleOrgAdmin(first.OrganizationID),
|
||||
},
|
||||
Error: false,
|
||||
},
|
||||
{
|
||||
Name: "UserAdminMakeMember",
|
||||
Client: userAdmin,
|
||||
AssignToUser: newUser,
|
||||
Roles: []string{rbac.RoleMember()},
|
||||
ExpectedRoles: []string{
|
||||
rbac.RoleMember(),
|
||||
},
|
||||
Error: false,
|
||||
},
|
||||
}
|
||||
|
||||
@ -597,16 +612,21 @@ func TestGrantSiteRoles(t *testing.T) {
|
||||
c.AssignToUser = newUser.ID.String()
|
||||
}
|
||||
|
||||
var newRoles []codersdk.Role
|
||||
if c.OrgID != uuid.Nil {
|
||||
// Org assign
|
||||
_, err = c.Client.UpdateOrganizationMemberRoles(ctx, c.OrgID, c.AssignToUser, codersdk.UpdateRoles{
|
||||
var mem codersdk.OrganizationMember
|
||||
mem, err = c.Client.UpdateOrganizationMemberRoles(ctx, c.OrgID, c.AssignToUser, codersdk.UpdateRoles{
|
||||
Roles: c.Roles,
|
||||
})
|
||||
newRoles = mem.Roles
|
||||
} else {
|
||||
// Site assign
|
||||
_, err = c.Client.UpdateUserRoles(ctx, c.AssignToUser, codersdk.UpdateRoles{
|
||||
var user codersdk.User
|
||||
user, err = c.Client.UpdateUserRoles(ctx, c.AssignToUser, codersdk.UpdateRoles{
|
||||
Roles: c.Roles,
|
||||
})
|
||||
newRoles = user.Roles
|
||||
}
|
||||
|
||||
if c.Error {
|
||||
@ -614,6 +634,11 @@ func TestGrantSiteRoles(t *testing.T) {
|
||||
requireStatusCode(t, err, c.StatusCode)
|
||||
} else {
|
||||
require.NoError(t, err)
|
||||
roles := make([]string, 0, len(newRoles))
|
||||
for _, r := range newRoles {
|
||||
roles = append(roles, r.Name)
|
||||
}
|
||||
require.ElementsMatch(t, roles, c.ExpectedRoles)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Reference in New Issue
Block a user