nolint:tparallel,paralleltest // Subtests share coderdtest instances.
(t *testing.T)
| 11549 | |
| 11550 | //nolint:tparallel,paralleltest // Subtests share coderdtest instances. |
| 11551 | func TestUserChatPersonalModelOverrides(t *testing.T) { |
| 11552 | t.Parallel() |
| 11553 | |
| 11554 | ctx := testutil.Context(t, testutil.WaitLong) |
| 11555 | adminClient, db := newChatClientWithDatabase(t) |
| 11556 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 11557 | memberClientRaw, member := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 11558 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 11559 | noKeyClientRaw, noKeyUser := coderdtest.CreateAnotherUser(t, adminClient.Client, firstUser.OrganizationID) |
| 11560 | noKeyClient := codersdk.NewExperimentalClient(noKeyClientRaw) |
| 11561 | |
| 11562 | defaultModelConfig := createChatModelConfig(t, adminClient) |
| 11563 | provider := enableUserChatProviderKey(t, adminClient, memberClient, defaultModelConfig.Provider) |
| 11564 | modelProvider := createAIProviderForTest(t, adminClient, "anthropic", "") |
| 11565 | _, err := memberClient.UpsertUserAIProviderKey(ctx, "me", modelProvider.ID, codersdk.CreateUserAIProviderKeyRequest{ |
| 11566 | APIKey: "test-user-api-key-" + uuid.NewString(), |
| 11567 | }) |
| 11568 | require.NoError(t, err) |
| 11569 | contextLimit := int64(4096) |
| 11570 | modelConfig, err := adminClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{ |
| 11571 | Provider: "anthropic", |
| 11572 | AIProviderID: &modelProvider.ID, |
| 11573 | Model: "claude-personal-" + uuid.NewString(), |
| 11574 | ContextLimit: &contextLimit, |
| 11575 | }) |
| 11576 | require.NoError(t, err) |
| 11577 | err = adminClient.UpdateChatModelOverride(ctx, codersdk.ChatModelOverrideContextGeneral, codersdk.UpdateChatModelOverrideRequest{ |
| 11578 | ModelConfigID: modelConfig.ID.String(), |
| 11579 | }) |
| 11580 | require.NoError(t, err) |
| 11581 | err = adminClient.UpdateChatModelOverride(ctx, codersdk.ChatModelOverrideContextExplore, codersdk.UpdateChatModelOverrideRequest{ |
| 11582 | ModelConfigID: defaultModelConfig.ID.String(), |
| 11583 | }) |
| 11584 | require.NoError(t, err) |
| 11585 | |
| 11586 | disabledModelConfig := createDisabledChatModelConfig( |
| 11587 | t, |
| 11588 | adminClient, |
| 11589 | defaultModelConfig.Provider, |
| 11590 | "gpt-4o-personal-disabled-"+uuid.NewString(), |
| 11591 | ) |
| 11592 | disabledProvider := createAIProviderForTest(t, adminClient, "google", "test-api-key") |
| 11593 | contextLimit = int64(4096) |
| 11594 | disabledProviderModelConfig, err := adminClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{ |
| 11595 | Provider: "google", |
| 11596 | AIProviderID: &disabledProvider.ID, |
| 11597 | Model: "gemini-personal-disabled-provider-" + uuid.NewString(), |
| 11598 | ContextLimit: &contextLimit, |
| 11599 | }) |
| 11600 | require.NoError(t, err) |
| 11601 | enabled := false |
| 11602 | disabledProvider, err = adminClient.UpdateAIProvider(ctx, disabledProvider.ID.String(), codersdk.UpdateAIProviderRequest{ |
| 11603 | Enabled: &enabled, |
| 11604 | }) |
| 11605 | require.NoError(t, err) |
| 11606 | require.NotEqual(t, uuid.Nil, provider.ID) |
| 11607 | require.NotEqual(t, uuid.Nil, disabledProvider.ID) |
| 11608 |
nothing calls this directly
no test coverage detected