nolint:tparallel,paralleltest // Subtests share coderdtest instances.
(t *testing.T)
| 11923 | |
| 11924 | //nolint:tparallel,paralleltest // Subtests share coderdtest instances. |
| 11925 | func TestCreateChatPersonalModelOverrideRoot(t *testing.T) { |
| 11926 | t.Parallel() |
| 11927 | |
| 11928 | ctx := testutil.Context(t, testutil.WaitLong) |
| 11929 | adminClient, db := newChatClientWithDatabase(t) |
| 11930 | firstUser := coderdtest.CreateFirstUser(t, adminClient.Client) |
| 11931 | defaultModel := createChatModelConfig(t, adminClient) |
| 11932 | _ = enableUserChatProviderKey(t, adminClient, adminClient, defaultModel.Provider) |
| 11933 | overrideProvider := createAIProviderForTest(t, adminClient, "anthropic", "") |
| 11934 | _, err := adminClient.UpsertUserAIProviderKey(ctx, "me", overrideProvider.ID, codersdk.CreateUserAIProviderKeyRequest{ |
| 11935 | APIKey: "test-user-api-key-" + uuid.NewString(), |
| 11936 | }) |
| 11937 | require.NoError(t, err) |
| 11938 | contextLimit := int64(4096) |
| 11939 | overrideModel, err := adminClient.CreateChatModelConfig(ctx, codersdk.CreateChatModelConfigRequest{ |
| 11940 | Provider: "anthropic", |
| 11941 | AIProviderID: &overrideProvider.ID, |
| 11942 | Model: "claude-root-personal-" + uuid.NewString(), |
| 11943 | ContextLimit: &contextLimit, |
| 11944 | }) |
| 11945 | require.NoError(t, err) |
| 11946 | disabledModel := createDisabledChatModelConfig( |
| 11947 | t, |
| 11948 | adminClient, |
| 11949 | defaultModel.Provider, |
| 11950 | "gpt-4o-root-personal-disabled-"+uuid.NewString(), |
| 11951 | ) |
| 11952 | memberClientRaw, member := coderdtest.CreateAnotherUser( |
| 11953 | t, |
| 11954 | adminClient.Client, |
| 11955 | firstUser.OrganizationID, |
| 11956 | rbac.ScopedRoleAgentsAccess(firstUser.OrganizationID), |
| 11957 | ) |
| 11958 | memberClient := codersdk.NewExperimentalClient(memberClientRaw) |
| 11959 | |
| 11960 | createChat := func( |
| 11961 | client *codersdk.ExperimentalClient, |
| 11962 | text string, |
| 11963 | modelConfigID *uuid.UUID, |
| 11964 | ) codersdk.Chat { |
| 11965 | t.Helper() |
| 11966 | chat, err := client.CreateChat(ctx, codersdk.CreateChatRequest{ |
| 11967 | OrganizationID: firstUser.OrganizationID, |
| 11968 | Content: []codersdk.ChatInputPart{{ |
| 11969 | Type: codersdk.ChatInputPartTypeText, |
| 11970 | Text: text, |
| 11971 | }}, |
| 11972 | ModelConfigID: modelConfigID, |
| 11973 | }) |
| 11974 | require.NoError(t, err) |
| 11975 | storedChat, err := db.GetChatByID(dbauthz.AsSystemRestricted(ctx), chat.ID) |
| 11976 | require.NoError(t, err) |
| 11977 | require.Equal(t, chat.LastModelConfigID, storedChat.LastModelConfigID) |
| 11978 | return chat |
| 11979 | } |
| 11980 | upsertRootRaw := func(userID uuid.UUID, value string) { |
| 11981 | t.Helper() |
| 11982 | err := db.UpsertUserChatPersonalModelOverride(dbauthz.AsSystemRestricted(ctx), database.UpsertUserChatPersonalModelOverrideParams{ |
nothing calls this directly
no test coverage detected