mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: preserve AI provider preset types (#25925)
> Mux created this PR on behalf of Mike. AI provider creation previously collapsed OpenAI-compatible presets like Google and generic OpenAI-compatible providers to `openai`, which lost the backend provider discriminator. Preserve selected provider types in the create payload, keep explicit stored types authoritative when reconstructing edit form values, and add frontend plus backend regressions for the supported preset types.
This commit is contained in:
@@ -44,6 +44,41 @@ func TestAIProvidersCRUD(t *testing.T) {
|
||||
require.Empty(t, got)
|
||||
})
|
||||
|
||||
t.Run("CreatePreservesPresetProviderTypes", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, nil)
|
||||
_ = coderdtest.CreateFirstUser(t, client)
|
||||
ctx := testutil.Context(t, testutil.WaitLong)
|
||||
|
||||
tests := []struct {
|
||||
providerType codersdk.AIProviderType
|
||||
baseURL string
|
||||
}{
|
||||
{providerType: codersdk.AIProviderTypeAzure, baseURL: "https://example.openai.azure.com/openai/v1"},
|
||||
{providerType: codersdk.AIProviderTypeGoogle, baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/"},
|
||||
{providerType: codersdk.AIProviderTypeOpenAICompat, baseURL: "https://compat.example.com/v1"},
|
||||
{providerType: codersdk.AIProviderTypeOpenrouter, baseURL: "https://openrouter.ai/api/v1"},
|
||||
{providerType: codersdk.AIProviderTypeVercel, baseURL: "https://ai-gateway.vercel.sh/v1"},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(string(tt.providerType), func(t *testing.T) {
|
||||
created, err := client.CreateAIProvider(ctx, codersdk.CreateAIProviderRequest{
|
||||
Type: tt.providerType,
|
||||
Name: "type-preserve-" + string(tt.providerType),
|
||||
Enabled: true,
|
||||
BaseURL: tt.baseURL,
|
||||
APIKeys: []string{"sk-test"},
|
||||
})
|
||||
require.NoError(t, err, tt.providerType)
|
||||
require.Equal(t, tt.providerType, created.Type)
|
||||
|
||||
got, err := client.AIProvider(ctx, created.ID.String())
|
||||
require.NoError(t, err, tt.providerType)
|
||||
require.Equal(t, tt.providerType, got.Type)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("CreateGetUpdateDelete", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
client := coderdtest.New(t, nil)
|
||||
|
||||
Reference in New Issue
Block a user