Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7bb52e1

Browse files
authored
test: add tests for updating workspace acl (#19240)
1 parentd1e64af commit7bb52e1

File tree

3 files changed

+196
-27
lines changed

3 files changed

+196
-27
lines changed

‎coderd/workspaces_test.go‎

Lines changed: 105 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2678,8 +2678,7 @@ func TestWorkspaceUpdateAutostart(t *testing.T) {
26782678
// ensure test invariant: new workspaces have no autostart schedule.
26792679
require.Empty(t,workspace.AutostartSchedule,"expected newly-minted workspace to have no autostart schedule")
26802680

2681-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
2682-
defercancel()
2681+
ctx:=testutil.Context(t,testutil.WaitLong)
26832682

26842683
err:=client.UpdateWorkspaceAutostart(ctx,workspace.ID, codersdk.UpdateWorkspaceAutostartRequest{
26852684
Schedule:ptr.Ref("CRON_TZ=Europe/Dublin 30 9 * * 1-5"),
@@ -2698,8 +2697,7 @@ func TestWorkspaceUpdateAutostart(t *testing.T) {
26982697
}
26992698
)
27002699

2701-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
2702-
defercancel()
2700+
ctx:=testutil.Context(t,testutil.WaitLong)
27032701

27042702
err:=client.UpdateWorkspaceAutostart(ctx,wsid,req)
27052703
require.IsType(t,err,&codersdk.Error{},"expected codersdk.Error")
@@ -4813,3 +4811,106 @@ func TestMultipleAITasksDisallowed(t *testing.T) {
48134811
require.NoError(t,err)
48144812
require.Contains(t,pj.Error.String,"only one 'coder_ai_task' resource can be provisioned per template")
48154813
}
4814+
4815+
funcTestUpdateWorkspaceACL(t*testing.T) {
4816+
t.Parallel()
4817+
4818+
t.Run("OK",func(t*testing.T) {
4819+
t.Parallel()
4820+
4821+
dv:=coderdtest.DeploymentValues(t)
4822+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
4823+
adminClient:=coderdtest.New(t,&coderdtest.Options{
4824+
IncludeProvisionerDaemon:true,
4825+
DeploymentValues:dv,
4826+
})
4827+
adminUser:=coderdtest.CreateFirstUser(t,adminClient)
4828+
orgID:=adminUser.OrganizationID
4829+
client,_:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
4830+
_,friend:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
4831+
4832+
tv:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,nil)
4833+
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,tv.ID)
4834+
template:=coderdtest.CreateTemplate(t,adminClient,orgID,tv.ID)
4835+
4836+
ws:=coderdtest.CreateWorkspace(t,client,template.ID)
4837+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,ws.LatestBuild.ID)
4838+
4839+
ctx:=testutil.Context(t,testutil.WaitMedium)
4840+
err:=client.UpdateWorkspaceACL(ctx,ws.ID, codersdk.UpdateWorkspaceACL{
4841+
UserRoles:map[string]codersdk.WorkspaceRole{
4842+
friend.ID.String():codersdk.WorkspaceRoleAdmin,
4843+
},
4844+
})
4845+
require.NoError(t,err)
4846+
})
4847+
4848+
t.Run("UnknownUserID",func(t*testing.T) {
4849+
t.Parallel()
4850+
4851+
dv:=coderdtest.DeploymentValues(t)
4852+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
4853+
adminClient:=coderdtest.New(t,&coderdtest.Options{
4854+
IncludeProvisionerDaemon:true,
4855+
DeploymentValues:dv,
4856+
})
4857+
adminUser:=coderdtest.CreateFirstUser(t,adminClient)
4858+
orgID:=adminUser.OrganizationID
4859+
client,_:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
4860+
4861+
tv:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,nil)
4862+
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,tv.ID)
4863+
template:=coderdtest.CreateTemplate(t,adminClient,orgID,tv.ID)
4864+
4865+
ws:=coderdtest.CreateWorkspace(t,client,template.ID)
4866+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,ws.LatestBuild.ID)
4867+
4868+
ctx:=testutil.Context(t,testutil.WaitMedium)
4869+
err:=client.UpdateWorkspaceACL(ctx,ws.ID, codersdk.UpdateWorkspaceACL{
4870+
UserRoles:map[string]codersdk.WorkspaceRole{
4871+
uuid.NewString():codersdk.WorkspaceRoleAdmin,
4872+
},
4873+
})
4874+
require.Error(t,err)
4875+
cerr,ok:=codersdk.AsError(err)
4876+
require.True(t,ok)
4877+
require.Len(t,cerr.Validations,1)
4878+
require.Equal(t,cerr.Validations[0].Field,"user_roles")
4879+
})
4880+
4881+
t.Run("DeletedUser",func(t*testing.T) {
4882+
t.Parallel()
4883+
4884+
dv:=coderdtest.DeploymentValues(t)
4885+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
4886+
adminClient:=coderdtest.New(t,&coderdtest.Options{
4887+
IncludeProvisionerDaemon:true,
4888+
DeploymentValues:dv,
4889+
})
4890+
adminUser:=coderdtest.CreateFirstUser(t,adminClient)
4891+
orgID:=adminUser.OrganizationID
4892+
client,_:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
4893+
_,mike:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
4894+
4895+
tv:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,nil)
4896+
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,tv.ID)
4897+
template:=coderdtest.CreateTemplate(t,adminClient,orgID,tv.ID)
4898+
4899+
ws:=coderdtest.CreateWorkspace(t,client,template.ID)
4900+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,ws.LatestBuild.ID)
4901+
4902+
ctx:=testutil.Context(t,testutil.WaitMedium)
4903+
err:=adminClient.DeleteUser(ctx,mike.ID)
4904+
require.NoError(t,err)
4905+
err=client.UpdateWorkspaceACL(ctx,ws.ID, codersdk.UpdateWorkspaceACL{
4906+
UserRoles:map[string]codersdk.WorkspaceRole{
4907+
mike.ID.String():codersdk.WorkspaceRoleAdmin,
4908+
},
4909+
})
4910+
require.Error(t,err)
4911+
cerr,ok:=codersdk.AsError(err)
4912+
require.True(t,ok)
4913+
require.Len(t,cerr.Validations,1)
4914+
require.Equal(t,cerr.Validations[0].Field,"user_roles")
4915+
})
4916+
}

‎enterprise/coderd/templates_test.go‎

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ func TestTemplates(t *testing.T) {
7070

7171
_=coderdtest.CreateWorkspace(t,otherClient,secondTemplate.ID)
7272

73-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
74-
defercancel()
73+
ctx:=testutil.Context(t,testutil.WaitLong)
7574

7675
updated,err:=client.UpdateTemplateMeta(ctx,template.ID, codersdk.UpdateTemplateMeta{
7776
DeprecationMessage:ptr.Ref("Stop using this template"),
@@ -185,8 +184,7 @@ func TestTemplates(t *testing.T) {
185184
ws,err:=client.Workspace(context.Background(),ws.ID)
186185
require.NoError(t,err)
187186

188-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
189-
defercancel()
187+
ctx:=testutil.Context(t,testutil.WaitLong)
190188

191189
// OK
192190
varlevel codersdk.WorkspaceAgentPortShareLevel=codersdk.WorkspaceAgentPortShareLevelPublic
@@ -704,8 +702,7 @@ func TestTemplates(t *testing.T) {
704702
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
705703
require.True(t,template.RequireActiveVersion)
706704

707-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
708-
defercancel()
705+
ctx:=testutil.Context(t,testutil.WaitLong)
709706

710707
// Update the field and assert it persists.
711708
updatedTemplate,err:=anotherClient.UpdateTemplateMeta(ctx,template.ID, codersdk.UpdateTemplateMeta{
@@ -761,9 +758,6 @@ func TestTemplates(t *testing.T) {
761758
})
762759
require.NoError(t,err)
763760

764-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
765-
defercancel()
766-
767761
_,err=owner.Template(ctx,template.ID)
768762
require.NoError(t,err)
769763
})
@@ -932,8 +926,7 @@ func TestTemplateACL(t *testing.T) {
932926
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
933927
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
934928

935-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
936-
defercancel()
929+
ctx:=testutil.Context(t,testutil.WaitLong)
937930

938931
acl,err:=anotherClient.TemplateACL(ctx,template.ID)
939932
require.NoError(t,err)
@@ -955,8 +948,7 @@ func TestTemplateACL(t *testing.T) {
955948
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
956949
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
957950

958-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
959-
defercancel()
951+
ctx:=testutil.Context(t,testutil.WaitLong)
960952

961953
//nolint:gocritic // non-template-admin cannot update template acl
962954
acl,err:=client.TemplateACL(ctx,template.ID)
@@ -1004,8 +996,7 @@ func TestTemplateACL(t *testing.T) {
1004996
version:=coderdtest.CreateTemplateVersion(t,client,admin.OrganizationID,nil)
1005997
template:=coderdtest.CreateTemplate(t,client,admin.OrganizationID,version.ID)
1006998

1007-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
1008-
defercancel()
999+
ctx:=testutil.Context(t,testutil.WaitLong)
10091000

10101001
//nolint:gocritic // non-template-admin cannot get template acl
10111002
acl,err:=client.TemplateACL(ctx,template.ID)
@@ -1267,8 +1258,7 @@ func TestUpdateTemplateACL(t *testing.T) {
12671258
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
12681259
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
12691260

1270-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
1271-
defercancel()
1261+
ctx:=testutil.Context(t,testutil.WaitLong)
12721262

12731263
err:=anotherClient.UpdateTemplateACL(ctx,template.ID, codersdk.UpdateTemplateACL{
12741264
UserPerms:map[string]codersdk.TemplateRole{
@@ -1359,8 +1349,7 @@ func TestUpdateTemplateACL(t *testing.T) {
13591349
},
13601350
}
13611351

1362-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
1363-
defercancel()
1352+
ctx:=testutil.Context(t,testutil.WaitLong)
13641353

13651354
err:=anotherClient.UpdateTemplateACL(ctx,template.ID,req)
13661355
require.NoError(t,err)
@@ -1679,8 +1668,7 @@ func TestUpdateTemplateACL(t *testing.T) {
16791668
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
16801669
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
16811670

1682-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
1683-
defercancel()
1671+
ctx:=testutil.Context(t,testutil.WaitLong)
16841672

16851673
acl,err:=anotherClient.TemplateACL(ctx,template.ID)
16861674
require.NoError(t,err)
@@ -1769,8 +1757,7 @@ func TestUpdateTemplateACL(t *testing.T) {
17691757
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
17701758
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID)
17711759

1772-
ctx,cancel:=context.WithTimeout(context.Background(),testutil.WaitLong)
1773-
defercancel()
1760+
ctx:=testutil.Context(t,testutil.WaitLong)
17741761

17751762
acl,err:=anotherClient.TemplateACL(ctx,template.ID)
17761763
require.NoError(t,err)

‎enterprise/coderd/workspaces_test.go‎

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3523,3 +3523,84 @@ func must[T any](value T, err error) T {
35233523
}
35243524
returnvalue
35253525
}
3526+
3527+
funcTestUpdateWorkspaceACL(t*testing.T) {
3528+
t.Parallel()
3529+
3530+
t.Run("OKWithGroup",func(t*testing.T) {
3531+
t.Parallel()
3532+
3533+
dv:=coderdtest.DeploymentValues(t)
3534+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3535+
adminClient,adminUser:=coderdenttest.New(t,&coderdenttest.Options{
3536+
Options:&coderdtest.Options{
3537+
IncludeProvisionerDaemon:true,
3538+
DeploymentValues:dv,
3539+
},
3540+
LicenseOptions:&coderdenttest.LicenseOptions{
3541+
Features: license.Features{
3542+
codersdk.FeatureTemplateRBAC:1,
3543+
},
3544+
},
3545+
})
3546+
orgID:=adminUser.OrganizationID
3547+
client,_:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
3548+
_,friend:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
3549+
group:=coderdtest.CreateGroup(t,adminClient,orgID,"bloob")
3550+
3551+
tv:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,nil)
3552+
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,tv.ID)
3553+
template:=coderdtest.CreateTemplate(t,adminClient,orgID,tv.ID)
3554+
3555+
ws:=coderdtest.CreateWorkspace(t,client,template.ID)
3556+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,ws.LatestBuild.ID)
3557+
3558+
ctx:=testutil.Context(t,testutil.WaitMedium)
3559+
err:=client.UpdateWorkspaceACL(ctx,ws.ID, codersdk.UpdateWorkspaceACL{
3560+
UserRoles:map[string]codersdk.WorkspaceRole{
3561+
friend.ID.String():codersdk.WorkspaceRoleAdmin,
3562+
},
3563+
GroupRoles:map[string]codersdk.WorkspaceRole{
3564+
group.ID.String():codersdk.WorkspaceRoleAdmin,
3565+
},
3566+
})
3567+
require.NoError(t,err)
3568+
})
3569+
3570+
t.Run("UnknownIDs",func(t*testing.T) {
3571+
t.Parallel()
3572+
3573+
dv:=coderdtest.DeploymentValues(t)
3574+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
3575+
adminClient:=coderdtest.New(t,&coderdtest.Options{
3576+
IncludeProvisionerDaemon:true,
3577+
DeploymentValues:dv,
3578+
})
3579+
adminUser:=coderdtest.CreateFirstUser(t,adminClient)
3580+
orgID:=adminUser.OrganizationID
3581+
client,_:=coderdtest.CreateAnotherUser(t,adminClient,orgID)
3582+
3583+
tv:=coderdtest.CreateTemplateVersion(t,adminClient,orgID,nil)
3584+
coderdtest.AwaitTemplateVersionJobCompleted(t,adminClient,tv.ID)
3585+
template:=coderdtest.CreateTemplate(t,adminClient,orgID,tv.ID)
3586+
3587+
ws:=coderdtest.CreateWorkspace(t,client,template.ID)
3588+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,ws.LatestBuild.ID)
3589+
3590+
ctx:=testutil.Context(t,testutil.WaitMedium)
3591+
err:=client.UpdateWorkspaceACL(ctx,ws.ID, codersdk.UpdateWorkspaceACL{
3592+
UserRoles:map[string]codersdk.WorkspaceRole{
3593+
uuid.NewString():codersdk.WorkspaceRoleAdmin,
3594+
},
3595+
GroupRoles:map[string]codersdk.WorkspaceRole{
3596+
uuid.NewString():codersdk.WorkspaceRoleAdmin,
3597+
},
3598+
})
3599+
require.Error(t,err)
3600+
cerr,ok:=codersdk.AsError(err)
3601+
require.True(t,ok)
3602+
require.Len(t,cerr.Validations,2)
3603+
require.Equal(t,cerr.Validations[0].Field,"group_roles")
3604+
require.Equal(t,cerr.Validations[1].Field,"user_roles")
3605+
})
3606+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp