mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: add endpoint for retrieving workspace acl (#19375)
Implements `/acl [get]` for workspaces, with tests. Blocked by experiment enablement
This commit is contained in:
@@ -308,13 +308,13 @@ func convertTemplateUsers(tus []database.TemplateUser, orgIDsByUserIDs map[uuid.
|
||||
|
||||
func convertToTemplateRole(actions []policy.Action) codersdk.TemplateRole {
|
||||
switch {
|
||||
case len(actions) == 2 && slice.SameElements(actions, []policy.Action{policy.ActionUse, policy.ActionRead}):
|
||||
return codersdk.TemplateRoleUse
|
||||
case len(actions) == 1 && actions[0] == policy.WildcardSymbol:
|
||||
case slice.SameElements(actions, db2sdk.TemplateRoleActions(codersdk.TemplateRoleAdmin)):
|
||||
return codersdk.TemplateRoleAdmin
|
||||
case slice.SameElements(actions, db2sdk.TemplateRoleActions(codersdk.TemplateRoleUse)):
|
||||
return codersdk.TemplateRoleUse
|
||||
}
|
||||
|
||||
return ""
|
||||
return codersdk.TemplateRoleDeleted
|
||||
}
|
||||
|
||||
// TODO move to api.RequireFeatureMW when we are OK with changing the behavior.
|
||||
|
||||
@@ -3909,13 +3909,22 @@ func TestUpdateWorkspaceACL(t *testing.T) {
|
||||
ctx := testutil.Context(t, testutil.WaitMedium)
|
||||
err := client.UpdateWorkspaceACL(ctx, ws.ID, codersdk.UpdateWorkspaceACL{
|
||||
UserRoles: map[string]codersdk.WorkspaceRole{
|
||||
friend.ID.String(): codersdk.WorkspaceRoleAdmin,
|
||||
friend.ID.String(): codersdk.WorkspaceRoleUse,
|
||||
},
|
||||
GroupRoles: map[string]codersdk.WorkspaceRole{
|
||||
group.ID.String(): codersdk.WorkspaceRoleAdmin,
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
workspaceACL, err := client.WorkspaceACL(ctx, ws.ID)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, workspaceACL.Users, 1)
|
||||
require.Equal(t, workspaceACL.Users[0].ID, friend.ID)
|
||||
require.Equal(t, workspaceACL.Users[0].Role, codersdk.WorkspaceRoleUse)
|
||||
require.Len(t, workspaceACL.Groups, 1)
|
||||
require.Equal(t, workspaceACL.Groups[0].ID, group.ID)
|
||||
require.Equal(t, workspaceACL.Groups[0].Role, codersdk.WorkspaceRoleAdmin)
|
||||
})
|
||||
|
||||
t.Run("UnknownIDs", func(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user