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

Commit212d763

Browse files
committed
chore: add tests forsharing remove command
1 parent4c7aa41 commit212d763

File tree

2 files changed

+266
-1
lines changed

2 files changed

+266
-1
lines changed

‎cli/sharing_test.go‎

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,3 +217,117 @@ func TestSharingStatus(t *testing.T) {
217217
assert.True(t,found,"expected to find username %s with role %s in the output: %s",toShareWithUser.Username,codersdk.WorkspaceRoleUse,out.String())
218218
})
219219
}
220+
221+
funcTestSharingRemove(t*testing.T) {
222+
t.Parallel()
223+
224+
dv:=coderdtest.DeploymentValues(t)
225+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
226+
227+
t.Run("RemoveSharedUser_Simple",func(t*testing.T) {
228+
t.Parallel()
229+
230+
var (
231+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
232+
DeploymentValues:dv,
233+
})
234+
orgOwner=coderdtest.CreateFirstUser(t,client)
235+
workspaceOwnerClient,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
236+
workspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
237+
OwnerID:workspaceOwner.ID,
238+
OrganizationID:orgOwner.OrganizationID,
239+
}).Do().Workspace
240+
_,toRemoveUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
241+
_,toShareWithUser=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
242+
)
243+
244+
ctx:=testutil.Context(t,testutil.WaitMedium)
245+
246+
// Share the workspace with a user to later remove
247+
err:=client.UpdateWorkspaceACL(ctx,workspace.ID, codersdk.UpdateWorkspaceACL{
248+
UserRoles:map[string]codersdk.WorkspaceRole{
249+
toShareWithUser.ID.String():codersdk.WorkspaceRoleUse,
250+
toRemoveUser.ID.String():codersdk.WorkspaceRoleUse,
251+
},
252+
})
253+
require.NoError(t,err)
254+
255+
inv,root:=clitest.New(t,
256+
"sharing",
257+
"remove",
258+
workspace.Name,
259+
"--org",orgOwner.OrganizationID.String(),
260+
"--user",toRemoveUser.Username,
261+
)
262+
clitest.SetupConfig(t,workspaceOwnerClient,root)
263+
264+
out:=bytes.NewBuffer(nil)
265+
inv.Stdout=out
266+
err=inv.WithContext(ctx).Run()
267+
require.NoError(t,err)
268+
269+
acl,err:=workspaceOwnerClient.WorkspaceACL(inv.Context(),workspace.ID)
270+
require.NoError(t,err)
271+
272+
removedCorrectUser:=true
273+
keptOtherUser:=false
274+
for_,user:=rangeacl.Users {
275+
ifuser.ID==toRemoveUser.ID {
276+
removedCorrectUser=false
277+
}
278+
279+
ifuser.ID==toShareWithUser.ID {
280+
keptOtherUser=true
281+
}
282+
}
283+
assert.True(t,removedCorrectUser)
284+
assert.True(t,keptOtherUser)
285+
})
286+
287+
t.Run("RemoveSharedUser_Multiple",func(t*testing.T) {
288+
t.Parallel()
289+
290+
var (
291+
client,db=coderdtest.NewWithDatabase(t,&coderdtest.Options{
292+
DeploymentValues:dv,
293+
})
294+
orgOwner=coderdtest.CreateFirstUser(t,client)
295+
workspaceOwnerClient,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
296+
workspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
297+
OwnerID:workspaceOwner.ID,
298+
OrganizationID:orgOwner.OrganizationID,
299+
}).Do().Workspace
300+
_,toRemoveUser1=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
301+
_,toRemoveUser2=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
302+
)
303+
304+
ctx:=testutil.Context(t,testutil.WaitMedium)
305+
306+
// Share the workspace with a user to later remove
307+
err:=client.UpdateWorkspaceACL(ctx,workspace.ID, codersdk.UpdateWorkspaceACL{
308+
UserRoles:map[string]codersdk.WorkspaceRole{
309+
toRemoveUser2.ID.String():codersdk.WorkspaceRoleUse,
310+
toRemoveUser1.ID.String():codersdk.WorkspaceRoleUse,
311+
},
312+
})
313+
require.NoError(t,err)
314+
315+
inv,root:=clitest.New(t,
316+
"sharing",
317+
"remove",
318+
workspace.Name,
319+
"--org",orgOwner.OrganizationID.String(),
320+
fmt.Sprintf("--user=%s,%s",toRemoveUser1.Username,toRemoveUser2.Username),
321+
)
322+
clitest.SetupConfig(t,workspaceOwnerClient,root)
323+
324+
out:=bytes.NewBuffer(nil)
325+
inv.Stdout=out
326+
err=inv.WithContext(ctx).Run()
327+
require.NoError(t,err)
328+
329+
acl,err:=workspaceOwnerClient.WorkspaceACL(inv.Context(),workspace.ID)
330+
require.NoError(t,err)
331+
assert.Empty(t,acl.Users)
332+
})
333+
}

‎enterprise/cli/sharing_test.go‎

Lines changed: 152 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/coder/coder/v2/testutil"
2424
)
2525

26-
funcTestSharingShareEnterprise(t*testing.T) {
26+
funcTestSharingShare(t*testing.T) {
2727
t.Parallel()
2828

2929
dv:=coderdtest.DeploymentValues(t)
@@ -245,6 +245,157 @@ func TestSharingStatus(t *testing.T) {
245245
})
246246
}
247247

248+
funcTestSharingRemove(t*testing.T) {
249+
t.Parallel()
250+
251+
dv:=coderdtest.DeploymentValues(t)
252+
dv.Experiments= []string{string(codersdk.ExperimentWorkspaceSharing)}
253+
254+
t.Run("RemoveSharedGroup_Single",func(t*testing.T) {
255+
t.Parallel()
256+
257+
var (
258+
client,db,orgOwner=coderdenttest.NewWithDatabase(t,&coderdenttest.Options{
259+
Options:&coderdtest.Options{
260+
DeploymentValues:dv,
261+
},
262+
LicenseOptions:&coderdenttest.LicenseOptions{
263+
Features: license.Features{
264+
codersdk.FeatureTemplateRBAC:1,
265+
},
266+
},
267+
})
268+
workspaceOwnerClient,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
269+
workspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
270+
OwnerID:workspaceOwner.ID,
271+
OrganizationID:orgOwner.OrganizationID,
272+
}).Do().Workspace
273+
_,groupUser1=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
274+
_,groupUser2=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
275+
)
276+
277+
ctx:=testutil.Context(t,testutil.WaitMedium)
278+
279+
group1,err:=createGroupWithMembers(ctx,client,orgOwner.OrganizationID,"group-1", []uuid.UUID{groupUser1.ID,groupUser2.ID})
280+
require.NoError(t,err)
281+
282+
group2,err:=createGroupWithMembers(ctx,client,orgOwner.OrganizationID,"group-2", []uuid.UUID{groupUser1.ID,groupUser2.ID})
283+
require.NoError(t,err)
284+
285+
// Share the workspace with a user to later remove
286+
err=client.UpdateWorkspaceACL(ctx,workspace.ID, codersdk.UpdateWorkspaceACL{
287+
GroupRoles:map[string]codersdk.WorkspaceRole{
288+
group1.ID.String():codersdk.WorkspaceRoleUse,
289+
group2.ID.String():codersdk.WorkspaceRoleUse,
290+
},
291+
})
292+
require.NoError(t,err)
293+
294+
inv,root:=clitest.New(t,
295+
"sharing",
296+
"remove",
297+
workspace.Name,
298+
"--org",orgOwner.OrganizationID.String(),
299+
"--group",group1.Name,
300+
)
301+
clitest.SetupConfig(t,workspaceOwnerClient,root)
302+
303+
err=inv.WithContext(ctx).Run()
304+
require.NoError(t,err)
305+
306+
acl,err:=workspaceOwnerClient.WorkspaceACL(inv.Context(),workspace.ID)
307+
require.NoError(t,err)
308+
309+
removedGroup1:=true
310+
removedGroup2:=true
311+
for_,group:=rangeacl.Groups {
312+
ifgroup.ID==group1.ID {
313+
removedGroup1=false
314+
continue
315+
}
316+
317+
ifgroup.ID==group2.ID {
318+
removedGroup2=false
319+
continue
320+
}
321+
}
322+
assert.True(t,removedGroup1)
323+
assert.False(t,removedGroup2)
324+
})
325+
326+
t.Run("RemoveSharedGroup_Multiple",func(t*testing.T) {
327+
t.Parallel()
328+
329+
var (
330+
client,db,orgOwner=coderdenttest.NewWithDatabase(t,&coderdenttest.Options{
331+
Options:&coderdtest.Options{
332+
DeploymentValues:dv,
333+
},
334+
LicenseOptions:&coderdenttest.LicenseOptions{
335+
Features: license.Features{
336+
codersdk.FeatureTemplateRBAC:1,
337+
},
338+
},
339+
})
340+
workspaceOwnerClient,workspaceOwner=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID,rbac.ScopedRoleOrgAuditor(orgOwner.OrganizationID))
341+
workspace=dbfake.WorkspaceBuild(t,db, database.WorkspaceTable{
342+
OwnerID:workspaceOwner.ID,
343+
OrganizationID:orgOwner.OrganizationID,
344+
}).Do().Workspace
345+
_,groupUser1=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
346+
_,groupUser2=coderdtest.CreateAnotherUser(t,client,orgOwner.OrganizationID)
347+
)
348+
349+
ctx:=testutil.Context(t,testutil.WaitMedium)
350+
351+
group1,err:=createGroupWithMembers(ctx,client,orgOwner.OrganizationID,"group-1", []uuid.UUID{groupUser1.ID,groupUser2.ID})
352+
require.NoError(t,err)
353+
354+
group2,err:=createGroupWithMembers(ctx,client,orgOwner.OrganizationID,"group-2", []uuid.UUID{groupUser1.ID,groupUser2.ID})
355+
require.NoError(t,err)
356+
357+
// Share the workspace with a user to later remove
358+
err=client.UpdateWorkspaceACL(ctx,workspace.ID, codersdk.UpdateWorkspaceACL{
359+
GroupRoles:map[string]codersdk.WorkspaceRole{
360+
group1.ID.String():codersdk.WorkspaceRoleUse,
361+
group2.ID.String():codersdk.WorkspaceRoleUse,
362+
},
363+
})
364+
require.NoError(t,err)
365+
366+
inv,root:=clitest.New(t,
367+
"sharing",
368+
"remove",
369+
workspace.Name,
370+
"--org",orgOwner.OrganizationID.String(),
371+
fmt.Sprintf("--group=%s,%s",group1.Name,group2.Name),
372+
)
373+
clitest.SetupConfig(t,workspaceOwnerClient,root)
374+
375+
err=inv.WithContext(ctx).Run()
376+
require.NoError(t,err)
377+
378+
acl,err:=workspaceOwnerClient.WorkspaceACL(inv.Context(),workspace.ID)
379+
require.NoError(t,err)
380+
381+
removedGroup1:=true
382+
removedGroup2:=true
383+
for_,group:=rangeacl.Groups {
384+
ifgroup.ID==group1.ID {
385+
removedGroup1=false
386+
continue
387+
}
388+
389+
ifgroup.ID==group2.ID {
390+
removedGroup2=false
391+
continue
392+
}
393+
}
394+
assert.True(t,removedGroup1)
395+
assert.True(t,removedGroup2)
396+
})
397+
}
398+
248399
funccreateGroupWithMembers(ctx context.Context,client*codersdk.Client,orgID uuid.UUID,namestring,memberIDs []uuid.UUID) (codersdk.Group,error) {
249400
group,err:=client.CreateGroup(ctx,orgID, codersdk.CreateGroupRequest{
250401
Name:name,

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp