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

Function TestCreateChatRejectsWhenUsageLimitReached

coderd/x/chatd/chatd_test.go:2447–2517  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

2445}
2446
2447func TestCreateChatRejectsWhenUsageLimitReached(t *testing.T) {
2448 t.Parallel()
2449
2450 db, ps := dbtestutil.NewDB(t)
2451 replica := newTestServer(t, db, ps, uuid.New())
2452
2453 ctx := testutil.Context(t, testutil.WaitLong)
2454 user, org, model := seedChatDependencies(t, db)
2455
2456 _, err := db.UpsertChatUsageLimitConfig(ctx, database.UpsertChatUsageLimitConfigParams{
2457 Enabled: true,
2458 DefaultLimitMicros: 100,
2459 Period: string(codersdk.ChatUsageLimitPeriodDay),
2460 })
2461 require.NoError(t, err)
2462
2463 existingChat := dbgen.Chat(t, db, database.Chat{
2464 OrganizationID: org.ID,
2465 OwnerID: user.ID,
2466 Title: "existing-limit-chat",
2467 LastModelConfigID: model.ID,
2468 })
2469
2470 assistantContent, err := chatprompt.MarshalParts([]codersdk.ChatMessagePart{
2471 codersdk.ChatMessageText("assistant"),
2472 })
2473 require.NoError(t, err)
2474
2475 _ = dbgen.ChatMessage(t, db, database.ChatMessage{
2476 ChatID: existingChat.ID,
2477 ModelConfigID: uuid.NullUUID{UUID: model.ID, Valid: true},
2478 Role: database.ChatMessageRoleAssistant,
2479 ContentVersion: chatprompt.CurrentContentVersion,
2480 Content: assistantContent,
2481 TotalCostMicros: sql.NullInt64{Int64: 100, Valid: true},
2482 })
2483
2484 beforeChats, err := db.GetChats(ctx, database.GetChatsParams{
2485 OwnedOnly: true,
2486 ViewerID: user.ID,
2487 AfterID: uuid.Nil,
2488 OffsetOpt: 0,
2489 LimitOpt: 100,
2490 })
2491 require.NoError(t, err)
2492 require.Len(t, beforeChats, 1)
2493
2494 _, err = replica.CreateChat(ctx, chatd.CreateOptions{
2495 OrganizationID: org.ID,
2496 OwnerID: user.ID,
2497 Title: "over-limit",
2498 ModelConfigID: model.ID,
2499 InitialUserContent: []codersdk.ChatMessagePart{codersdk.ChatMessageText("hello")},
2500 })
2501 require.Error(t, err)
2502
2503 var limitErr *chatd.UsageLimitExceededError
2504 require.ErrorAs(t, err, &limitErr)

Callers

nothing calls this directly

Calls 15

NewDBFunction · 0.92
ContextFunction · 0.92
ChatFunction · 0.92
MarshalPartsFunction · 0.92
ChatMessageTextFunction · 0.92
ChatMessageFunction · 0.92
newTestServerFunction · 0.70
seedChatDependenciesFunction · 0.70
NewMethod · 0.65
GetChatsMethod · 0.65
CreateChatMethod · 0.65

Tested by

no test coverage detected