MCPcopy Index your code
hub / github.com/coder/coder / TestChatACLSharingLifecycle

Function TestChatACLSharingLifecycle

coderd/exp_chats_acl_test.go:26–179  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24)
25
26func TestChatACLSharingLifecycle(t *testing.T) {
27 t.Parallel()
28
29 ctx := testutil.Context(t, testutil.WaitLong)
30 mAudit := audit.NewMock()
31 client, db := newChatClientWithDatabase(t, func(opts *coderdtest.Options) {
32 opts.Auditor = mAudit
33 })
34 firstUser := coderdtest.CreateFirstUser(t, client.Client)
35 _ = createChatModelConfig(t, client)
36
37 sharedClient, sharedUser := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID)
38 sharedClientExp := codersdk.NewExperimentalClient(sharedClient)
39 nonSharedClient, _ := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID)
40 nonSharedClientExp := codersdk.NewExperimentalClient(nonSharedClient)
41 groupMemberClient, groupMember := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID)
42 groupMemberClientExp := codersdk.NewExperimentalClient(groupMemberClient)
43 sharedGroup := dbgen.Group(t, db, database.Group{OrganizationID: firstUser.OrganizationID})
44 dbgen.GroupMember(t, db, database.GroupMemberTable{GroupID: sharedGroup.ID, UserID: groupMember.ID})
45
46 data := []byte("chat sharing file")
47 uploaded, err := client.UploadChatFile(ctx, firstUser.OrganizationID, "text/plain", "shared.txt", bytes.NewReader(data))
48 require.NoError(t, err)
49 chat := createChatForSharing(ctx, t, client, firstUser.OrganizationID, "shared chat", uploaded.ID)
50
51 _, err = sharedClientExp.GetChat(ctx, chat.ID)
52 requireSDKError(t, err, http.StatusNotFound)
53 _, _, err = nonSharedClientExp.GetChatFile(ctx, uploaded.ID)
54 requireSDKError(t, err, http.StatusNotFound)
55
56 err = client.UpdateChatACL(ctx, chat.ID, codersdk.UpdateChatACL{
57 UserRoles: map[string]codersdk.ChatRole{
58 sharedUser.ID.String(): codersdk.ChatRoleRead,
59 },
60 GroupRoles: map[string]codersdk.ChatRole{
61 sharedGroup.ID.String(): codersdk.ChatRoleRead,
62 },
63 })
64 require.NoError(t, err)
65 require.True(t, mAudit.Contains(t, database.AuditLog{
66 Action: database.AuditActionWrite,
67 ResourceType: database.ResourceTypeChat,
68 ResourceID: chat.ID,
69 UserID: firstUser.UserID,
70 }))
71
72 acl, err := client.GetChatACL(ctx, chat.ID)
73 require.NoError(t, err)
74 require.Len(t, acl.Users, 1)
75 require.Equal(t, sharedUser.ID.String(), acl.Users[0].ID.String())
76 require.Equal(t, map[uuid.UUID]codersdk.ChatRole{
77 sharedUser.ID: codersdk.ChatRoleRead,
78 }, chatUserRoles(acl.Users))
79 require.Equal(t, map[uuid.UUID]codersdk.ChatRole{
80 sharedGroup.ID: codersdk.ChatRoleRead,
81 }, chatGroupRoles(acl.Groups))
82 require.Len(t, acl.Groups, 1)
83 require.Equal(t, sharedGroup.ID.String(), acl.Groups[0].ID.String())

Callers

nothing calls this directly

Calls 15

GetChatMethod · 0.95
GetChatFileMethod · 0.95
UpdateChatACLMethod · 0.95
GetChatACLMethod · 0.95
GetChatMessagesMethod · 0.95
CreateChatMessageMethod · 0.95
UpdateChatMethod · 0.95
ContextFunction · 0.92
NewMockFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewExperimentalClientFunction · 0.92

Tested by

no test coverage detected