(t *testing.T)
| 285 | } |
| 286 | |
| 287 | func 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 | } |
nothing calls this directly
no test coverage detected