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

Function TestPostChats

coderd/exp_chats_test.go:287–823  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

285}
286
287func TestPostChats(t *testing.T) {
288 t.Parallel()
289
290 t.Run("Success", func(t *testing.T) {
291 t.Parallel()
292
293 ctx := testutil.Context(t, testutil.WaitLong)
294 mAudit := audit.NewMock()
295 client := newChatClient(t, func(opts *coderdtest.Options) {
296 opts.Auditor = mAudit
297 })
298 firstUser := coderdtest.CreateFirstUser(t, client.Client)
299 modelConfig := createChatModelConfig(t, client)
300
301 // Use a member with agents-access instead of the owner to
302 // verify least-privilege access.
303 memberClientRaw, member := coderdtest.CreateAnotherUser(t, client.Client, firstUser.OrganizationID, rbac.ScopedRoleAgentsAccess(firstUser.OrganizationID))
304 memberClient := codersdk.NewExperimentalClient(memberClientRaw)
305
306 chat, err := memberClient.CreateChat(ctx, codersdk.CreateChatRequest{
307 OrganizationID: firstUser.OrganizationID, Content: []codersdk.ChatInputPart{
308 {
309 Type: codersdk.ChatInputPartTypeText,
310 Text: "hello from chats route tests",
311 },
312 },
313 })
314 require.NoError(t, err)
315
316 require.NotEqual(t, uuid.Nil, chat.ID)
317 require.Equal(t, member.ID, chat.OwnerID)
318 require.Equal(t, modelConfig.ID, chat.LastModelConfigID)
319 require.Equal(t, "hello from chats route tests", chat.Title)
320 require.NotZero(t, chat.CreatedAt)
321 require.NotZero(t, chat.UpdatedAt)
322 require.Nil(t, chat.WorkspaceID)
323 require.NotNil(t, chat.RootChatID)
324 require.Equal(t, chat.ID, *chat.RootChatID)
325
326 chatResult, err := memberClient.GetChat(ctx, chat.ID)
327 require.NoError(t, err)
328 messagesResult, err := memberClient.GetChatMessages(ctx, chat.ID, nil)
329 require.NoError(t, err)
330 require.Equal(t, chat.ID, chatResult.ID)
331
332 foundUserMessage := false
333 for _, message := range messagesResult.Messages {
334 if message.Role != codersdk.ChatMessageRoleUser {
335 continue
336 }
337 for _, part := range message.Content {
338 if part.Type == codersdk.ChatMessagePartTypeText &&
339 part.Text == "hello from chats route tests" {
340 foundUserMessage = true
341 break
342 }
343 }
344 }

Callers

nothing calls this directly

Calls 15

CreateChatMethod · 0.95
GetChatMethod · 0.95
GetChatMessagesMethod · 0.95
ContextFunction · 0.92
NewMockFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
ScopedRoleAgentsAccessFunction · 0.92
NewExperimentalClientFunction · 0.92
AsSystemRestrictedFunction · 0.92
WorkspaceBuildFunction · 0.92
ScopedRoleOrgAdminFunction · 0.92

Tested by

no test coverage detected