(t *testing.T)
| 3375 | } |
| 3376 | |
| 3377 | func TestEditMessageRejectsNonUserMessage(t *testing.T) { |
| 3378 | t.Parallel() |
| 3379 | |
| 3380 | db, ps := dbtestutil.NewDB(t) |
| 3381 | replica := newTestServer(t, db, ps, uuid.New()) |
| 3382 | |
| 3383 | ctx := testutil.Context(t, testutil.WaitLong) |
| 3384 | user, org, model := seedChatDependencies(t, db) |
| 3385 | |
| 3386 | chat, err := replica.CreateChat(ctx, chatd.CreateOptions{ |
| 3387 | OrganizationID: org.ID, |
| 3388 | OwnerID: user.ID, |
| 3389 | Title: "non-user-edited-message", |
| 3390 | ModelConfigID: model.ID, |
| 3391 | InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")}, |
| 3392 | }) |
| 3393 | require.NoError(t, err) |
| 3394 | |
| 3395 | assistantContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{ |
| 3396 | codersdk.ChatMessageText("assistant"), |
| 3397 | }) |
| 3398 | require.NoError(t, err) |
| 3399 | |
| 3400 | assistantMessage := dbgen.ChatMessage(t, db, database.ChatMessage{ |
| 3401 | ChatID: chat.ID, |
| 3402 | ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true}, |
| 3403 | Role: database.ChatMessageRoleAssistant, |
| 3404 | ContentVersion: chatprompt.CurrentContentVersion, |
| 3405 | Content: assistantContent, |
| 3406 | }) |
| 3407 | |
| 3408 | _, err = replica.EditMessage(ctx, chatd.EditMessageOptions{ |
| 3409 | ChatID: chat.ID, |
| 3410 | EditedMessageID: assistantMessage.ID, |
| 3411 | Content: []codersdk.ChatMessagePart{codersdk.ChatMessageText("edited")}, |
| 3412 | }) |
| 3413 | require.Error(t, err) |
| 3414 | require.True(t, errors.Is(err, chatd.ErrEditedMessageNotUser)) |
| 3415 | } |
| 3416 | |
| 3417 | // TestEditMessageDebugCleanupDeletesPreEditRuns verifies that |
| 3418 | // EditMessage schedules the chat debug cleanup goroutine when debug |
nothing calls this directly
no test coverage detected