@@ -4914,6 +4914,79 @@ func TestUpdateWorkspaceACL(t *testing.T) {
4914
4914
})
4915
4915
}
4916
4916
4917
+ func TestDeleteWorkspaceACL (t * testing.T ) {
4918
+ t .Parallel ()
4919
+
4920
+ dv := coderdtest .DeploymentValues (t )
4921
+ dv .Experiments = []string {string (codersdk .ExperimentWorkspaceSharing )}
4922
+
4923
+ t .Run ("WorkspaceOwnerCanDelete" , func (t * testing.T ) {
4924
+ t .Parallel ()
4925
+
4926
+ var (
4927
+ client , db = coderdtest .NewWithDatabase (t , & coderdtest.Options {
4928
+ DeploymentValues : dv ,
4929
+ })
4930
+ admin = coderdtest .CreateFirstUser (t , client )
4931
+ workspaceOwnerClient , workspaceOwner = coderdtest .CreateAnotherUser (t , client , admin .OrganizationID )
4932
+ _ , toShareWithUser = coderdtest .CreateAnotherUser (t , client , admin .OrganizationID )
4933
+ workspace = dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
4934
+ OwnerID : workspaceOwner .ID ,
4935
+ OrganizationID : admin .OrganizationID ,
4936
+ }).Do ().Workspace
4937
+ )
4938
+
4939
+ ctx := testutil .Context (t , testutil .WaitMedium )
4940
+
4941
+ err := workspaceOwnerClient .UpdateWorkspaceACL (ctx , workspace .ID , codersdk.UpdateWorkspaceACL {
4942
+ UserRoles : map [string ]codersdk.WorkspaceRole {
4943
+ toShareWithUser .ID .String (): codersdk .WorkspaceRoleUse ,
4944
+ },
4945
+ })
4946
+ require .NoError (t , err )
4947
+
4948
+ err = workspaceOwnerClient .DeleteWorkspaceACL (ctx , workspace .ID )
4949
+ require .NoError (t , err )
4950
+
4951
+ acl , err := workspaceOwnerClient .WorkspaceACL (ctx , workspace .ID )
4952
+ require .NoError (t , err )
4953
+ require .Empty (t , acl .Users )
4954
+ })
4955
+
4956
+ t .Run ("SharedUsersCannot" , func (t * testing.T ) {
4957
+ t .Parallel ()
4958
+
4959
+ var (
4960
+ client , db = coderdtest .NewWithDatabase (t , & coderdtest.Options {
4961
+ DeploymentValues : dv ,
4962
+ })
4963
+ admin = coderdtest .CreateFirstUser (t , client )
4964
+ workspaceOwnerClient , workspaceOwner = coderdtest .CreateAnotherUser (t , client , admin .OrganizationID )
4965
+ sharedUseClient , toShareWithUser = coderdtest .CreateAnotherUser (t , client , admin .OrganizationID )
4966
+ workspace = dbfake .WorkspaceBuild (t , db , database.WorkspaceTable {
4967
+ OwnerID : workspaceOwner .ID ,
4968
+ OrganizationID : admin .OrganizationID ,
4969
+ }).Do ().Workspace
4970
+ )
4971
+
4972
+ ctx := testutil .Context (t , testutil .WaitMedium )
4973
+
4974
+ err := workspaceOwnerClient .UpdateWorkspaceACL (ctx , workspace .ID , codersdk.UpdateWorkspaceACL {
4975
+ UserRoles : map [string ]codersdk.WorkspaceRole {
4976
+ toShareWithUser .ID .String (): codersdk .WorkspaceRoleUse ,
4977
+ },
4978
+ })
4979
+ require .NoError (t , err )
4980
+
4981
+ err = sharedUseClient .DeleteWorkspaceACL (ctx , workspace .ID )
4982
+ assert .Error (t , err )
4983
+
4984
+ acl , err := workspaceOwnerClient .WorkspaceACL (ctx , workspace .ID )
4985
+ require .NoError (t , err )
4986
+ require .Equal (t , acl .Users [0 ].ID , toShareWithUser .ID )
4987
+ })
4988
+ }
4989
+
4917
4990
func TestWorkspaceCreateWithImplicitPreset (t * testing.T ) {
4918
4991
t .Parallel ()
4919
4992
0 commit comments