@@ -16,6 +16,7 @@ import (
16
16
"github.com/coder/coder/v2/coderd/autobuild"
17
17
"github.com/coder/coder/v2/coderd/coderdtest"
18
18
"github.com/coder/coder/v2/coderd/database"
19
+ "github.com/coder/coder/v2/coderd/rbac"
19
20
agplschedule "github.com/coder/coder/v2/coderd/schedule"
20
21
"github.com/coder/coder/v2/coderd/schedule/cron"
21
22
"github.com/coder/coder/v2/coderd/util/ptr"
@@ -50,20 +51,21 @@ func TestCreateWorkspace(t *testing.T) {
50
51
codersdk .FeatureTemplateRBAC : 1 ,
51
52
},
52
53
}})
54
+ templateAdminClient , _ := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleTemplateAdmin ())
53
55
54
56
version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , nil )
55
57
template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
56
58
57
59
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
58
60
defer cancel ()
59
61
60
- acl , err := client .TemplateACL (ctx , template .ID )
62
+ acl , err := templateAdminClient .TemplateACL (ctx , template .ID )
61
63
require .NoError (t , err )
62
64
63
65
require .Len (t , acl .Groups , 1 )
64
66
require .Len (t , acl .Users , 0 )
65
67
66
- err = client .UpdateTemplateACL (ctx , template .ID , codersdk.UpdateTemplateACL {
68
+ err = templateAdminClient .UpdateTemplateACL (ctx , template .ID , codersdk.UpdateTemplateACL {
67
69
GroupPerms : map [string ]codersdk.TemplateRole {
68
70
acl .Groups [0 ].ID .String (): codersdk .TemplateRoleDeleted ,
69
71
},
@@ -504,6 +506,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
504
506
_ = coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , ws .LatestBuild .ID )
505
507
506
508
// Assert that the workspace is actually deleted.
509
+ //nolint:gocritic // ensuring workspace is deleted and not just invisible to us due to RBAC
507
510
_ , err := client .Workspace (testutil .Context (t , testutil .WaitShort ), ws .ID )
508
511
require .Error (t , err )
509
512
cerr , ok := codersdk .AsError (err )
@@ -531,6 +534,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
531
534
Features : license.Features {codersdk .FeatureAdvancedTemplateScheduling : 1 },
532
535
},
533
536
})
537
+ anotherClient , _ := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleTemplateAdmin ())
534
538
version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
535
539
Parse : echo .ParseComplete ,
536
540
ProvisionPlan : echo .PlanComplete ,
@@ -540,12 +544,12 @@ func TestWorkspaceAutobuild(t *testing.T) {
540
544
ctr .TimeTilDormantAutoDeleteMillis = ptr.Ref [int64 ](dormantTTL .Milliseconds ())
541
545
})
542
546
coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
543
- ws := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
544
- build := coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , ws .LatestBuild .ID )
547
+ ws := coderdtest .CreateWorkspace (t , anotherClient , user .OrganizationID , template .ID )
548
+ build := coderdtest .AwaitWorkspaceBuildJobCompleted (t , anotherClient , ws .LatestBuild .ID )
545
549
require .Equal (t , codersdk .WorkspaceStatusRunning , build .Status )
546
550
547
551
ctx := testutil .Context (t , testutil .WaitMedium )
548
- err := client .UpdateWorkspaceDormancy (ctx , ws .ID , codersdk.UpdateWorkspaceDormancy {
552
+ err := anotherClient .UpdateWorkspaceDormancy (ctx , ws .ID , codersdk.UpdateWorkspaceDormancy {
549
553
Dormant : true ,
550
554
})
551
555
require .NoError (t , err )
@@ -559,7 +563,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
559
563
// Expect no transitions since not enough time has elapsed.
560
564
require .Len (t , stats .Transitions , 0 )
561
565
562
- _ , err = client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
566
+ _ , err = anotherClient .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
563
567
TimeTilDormantAutoDeleteMillis : dormantTTL .Milliseconds (),
564
568
})
565
569
require .NoError (t , err )
@@ -671,6 +675,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
671
675
Features : license.Features {codersdk .FeatureAdvancedTemplateScheduling : 1 },
672
676
},
673
677
})
678
+ templateAdmin , _ := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleTemplateAdmin ())
674
679
675
680
// Create a template version that passes to get a functioning workspace.
676
681
version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
@@ -682,8 +687,8 @@ func TestWorkspaceAutobuild(t *testing.T) {
682
687
683
688
template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
684
689
685
- ws := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
686
- coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , ws .LatestBuild .ID )
690
+ ws := coderdtest .CreateWorkspace (t , templateAdmin , user .OrganizationID , template .ID )
691
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , ws .LatestBuild .ID )
687
692
688
693
// Create a new version that will fail when we try to delete a workspace.
689
694
version = coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
@@ -696,7 +701,7 @@ func TestWorkspaceAutobuild(t *testing.T) {
696
701
coderdtest .AwaitTemplateVersionJobCompleted (t , client , version .ID )
697
702
698
703
// Try to delete the workspace. This simulates a "failed" autodelete.
699
- build , err := client .CreateWorkspaceBuild (ctx , ws .ID , codersdk.CreateWorkspaceBuildRequest {
704
+ build , err := templateAdmin .CreateWorkspaceBuild (ctx , ws .ID , codersdk.CreateWorkspaceBuildRequest {
700
705
Transition : codersdk .WorkspaceTransitionDelete ,
701
706
TemplateVersionID : version .ID ,
702
707
})
@@ -706,13 +711,13 @@ func TestWorkspaceAutobuild(t *testing.T) {
706
711
require .NotEmpty (t , build .Job .Error )
707
712
708
713
// Update our workspace to be dormant so that it qualifies for auto-deletion.
709
- err = client .UpdateWorkspaceDormancy (ctx , ws .ID , codersdk.UpdateWorkspaceDormancy {
714
+ err = templateAdmin .UpdateWorkspaceDormancy (ctx , ws .ID , codersdk.UpdateWorkspaceDormancy {
710
715
Dormant : true ,
711
716
})
712
717
require .NoError (t , err )
713
718
714
719
// Enable auto-deletion for the template.
715
- _ , err = client .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
720
+ _ , err = templateAdmin .UpdateTemplateMeta (ctx , template .ID , codersdk.UpdateTemplateMeta {
716
721
TimeTilDormantAutoDeleteMillis : transitionTTL .Milliseconds (),
717
722
})
718
723
require .NoError (t , err )
@@ -901,6 +906,7 @@ func TestWorkspacesFiltering(t *testing.T) {
901
906
Features : license.Features {codersdk .FeatureAdvancedTemplateScheduling : 1 },
902
907
},
903
908
})
909
+ templateAdmin , _ := coderdtest .CreateAnotherUser (t , client , user .OrganizationID , rbac .RoleTemplateAdmin ())
904
910
905
911
// Create a template version that passes to get a functioning workspace.
906
912
version := coderdtest .CreateTemplateVersion (t , client , user .OrganizationID , & echo.Responses {
@@ -912,22 +918,22 @@ func TestWorkspacesFiltering(t *testing.T) {
912
918
913
919
template := coderdtest .CreateTemplate (t , client , user .OrganizationID , version .ID )
914
920
915
- dormantWS1 := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
916
- coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , dormantWS1 .LatestBuild .ID )
921
+ dormantWS1 := coderdtest .CreateWorkspace (t , templateAdmin , user .OrganizationID , template .ID )
922
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , dormantWS1 .LatestBuild .ID )
917
923
918
- dormantWS2 := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
919
- coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , dormantWS2 .LatestBuild .ID )
924
+ dormantWS2 := coderdtest .CreateWorkspace (t , templateAdmin , user .OrganizationID , template .ID )
925
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , dormantWS2 .LatestBuild .ID )
920
926
921
- activeWS := coderdtest .CreateWorkspace (t , client , user .OrganizationID , template .ID )
922
- coderdtest .AwaitWorkspaceBuildJobCompleted (t , client , activeWS .LatestBuild .ID )
927
+ activeWS := coderdtest .CreateWorkspace (t , templateAdmin , user .OrganizationID , template .ID )
928
+ coderdtest .AwaitWorkspaceBuildJobCompleted (t , templateAdmin , activeWS .LatestBuild .ID )
923
929
924
- err := client .UpdateWorkspaceDormancy (ctx , dormantWS1 .ID , codersdk.UpdateWorkspaceDormancy {Dormant : true })
930
+ err := templateAdmin .UpdateWorkspaceDormancy (ctx , dormantWS1 .ID , codersdk.UpdateWorkspaceDormancy {Dormant : true })
925
931
require .NoError (t , err )
926
932
927
- err = client .UpdateWorkspaceDormancy (ctx , dormantWS2 .ID , codersdk.UpdateWorkspaceDormancy {Dormant : true })
933
+ err = templateAdmin .UpdateWorkspaceDormancy (ctx , dormantWS2 .ID , codersdk.UpdateWorkspaceDormancy {Dormant : true })
928
934
require .NoError (t , err )
929
935
930
- resp , err := client .Workspaces (ctx , codersdk.WorkspaceFilter {
936
+ resp , err := templateAdmin .Workspaces (ctx , codersdk.WorkspaceFilter {
931
937
FilterQuery : "is-dormant:true" ,
932
938
})
933
939
require .NoError (t , err )
@@ -967,7 +973,7 @@ func TestWorkspacesWithoutTemplatePerms(t *testing.T) {
967
973
ctx , cancel := context .WithTimeout (context .Background (), testutil .WaitLong )
968
974
defer cancel ()
969
975
970
- // Remove everyone access
976
+ //nolint:gocritic // Remove everyone access
971
977
err := client .UpdateTemplateACL (ctx , template .ID , codersdk.UpdateTemplateACL {
972
978
GroupPerms : map [string ]codersdk.TemplateRole {
973
979
first .OrganizationID .String (): codersdk .TemplateRoleDeleted ,
0 commit comments