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

Function TestSharedReaderStreamChat

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

Source from the content-addressed store, hash-verified

318}
319
320func TestSharedReaderStreamChat(t *testing.T) {
321 t.Parallel()
322
323 ctx := testutil.Context(t, testutil.WaitLong)
324 client, db := newChatClientWithDatabase(t)
325 firstUser := coderdtest.CreateFirstUser(t, client.Client)
326 modelConfig := createChatModelConfig(t, client)
327 sharedClient, sharedUser := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID)
328 sharedClientExp := codersdk.NewExperimentalClient(sharedClient)
329 chat := dbgen.Chat(t, db, database.Chat{
330 OrganizationID: firstUser.OrganizationID,
331 OwnerID: firstUser.UserID,
332 LastModelConfigID: modelConfig.ID,
333 Title: "shared stream chat",
334 })
335 insertAssistantCostMessage(t, db, chat.ID, modelConfig.ID, 0)
336
337 err := client.UpdateChatACL(ctx, chat.ID, codersdk.UpdateChatACL{
338 UserRoles: map[string]codersdk.ChatRole{
339 sharedUser.ID.String(): codersdk.ChatRoleRead,
340 },
341 })
342 require.NoError(t, err)
343
344 events, closer, err := sharedClientExp.StreamChat(ctx, chat.ID, nil)
345 require.NoError(t, err)
346 t.Cleanup(func() { _ = closer.Close() })
347
348 foundAssistantMessage := false
349 for !foundAssistantMessage {
350 select {
351 case <-ctx.Done():
352 require.FailNow(t, "timed out waiting for shared stream chat event")
353 case event, ok := <-events:
354 require.True(t, ok, "stream closed before expected event")
355 require.Equal(t, chat.ID, event.ChatID)
356 require.NotEqual(t, codersdk.ChatStreamEventTypeError, event.Type)
357 if event.Type == codersdk.ChatStreamEventTypeMessage &&
358 event.Message != nil &&
359 event.Message.Role == codersdk.ChatMessageRoleAssistant {
360 foundAssistantMessage = true
361 }
362 }
363 }
364 require.NoError(t, closer.Close())
365
366 persisted, err := db.GetChatByID(dbauthz.AsSystemRestricted(ctx), chat.ID)
367 require.NoError(t, err)
368 require.False(t, persisted.LastReadMessageID.Valid)
369}
370
371func TestListChatsExcludesSharedChats(t *testing.T) {
372 t.Parallel()

Callers

nothing calls this directly

Calls 15

StreamChatMethod · 0.95
ContextFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewExperimentalClientFunction · 0.92
ChatFunction · 0.92
AsSystemRestrictedFunction · 0.92
UpdateChatACLMethod · 0.80
FailNowMethod · 0.80
createChatModelConfigFunction · 0.70

Tested by

no test coverage detected