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

Function TestSeedAIProvidersFromEnv

coderd/ai_providers_migrate_test.go:21–642  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

19)
20
21func TestSeedAIProvidersFromEnv(t *testing.T) {
22 t.Parallel()
23
24 t.Run("EmptyConfigNoOp", func(t *testing.T) {
25 t.Parallel()
26 db, _ := dbtestutil.NewDB(t)
27 ctx := testutil.Context(t, testutil.WaitShort)
28 err := coderd.SeedAIProvidersFromEnv(ctx, db, codersdk.AIBridgeConfig{}, testLogger(t))
29 require.NoError(t, err)
30 })
31
32 t.Run("LegacyOpenAI", func(t *testing.T) {
33 t.Parallel()
34 db, _ := dbtestutil.NewDB(t)
35 ctx := testutil.Context(t, testutil.WaitShort)
36
37 cfg := codersdk.AIBridgeConfig{
38 LegacyOpenAI: codersdk.AIBridgeOpenAIConfig{
39 BaseURL: serpent.String("https://api.openai.com/v1"),
40 Key: serpent.String("sk-legacy"),
41 },
42 }
43 var firstSeedLogs bytes.Buffer
44 err := coderd.SeedAIProvidersFromEnv(ctx, db, cfg, capturedLogger(&firstSeedLogs))
45 require.NoError(t, err)
46
47 // One row exists for "openai".
48 row, err := db.GetAIProviderByName(ctx, "openai")
49 require.NoError(t, err)
50 require.Equal(t, database.AiProviderTypeOpenai, row.Type)
51 require.Equal(t, "https://api.openai.com/v1", row.BaseUrl)
52 require.True(t, row.Enabled)
53
54 // One ai_provider_keys row was created with the env key.
55 keys, err := db.GetAIProviderKeysByProviderID(ctx, row.ID)
56 require.NoError(t, err)
57 require.Len(t, keys, 1)
58 require.Equal(t, "sk-legacy", keys[0].APIKey)
59
60 // The seed emits one info line per inserted provider and one per
61 // inserted key, replacing the audit entries that used to record
62 // the same events.
63 require.Contains(t, firstSeedLogs.String(), "env-seeded ai provider")
64 require.Contains(t, firstSeedLogs.String(), "env-seeded ai provider key")
65
66 // Re-running with the same config is a no-op and emits no new
67 // env-seed log lines.
68 var rerunLogs bytes.Buffer
69 err = coderd.SeedAIProvidersFromEnv(ctx, db, cfg, capturedLogger(&rerunLogs))
70 require.NoError(t, err)
71 require.NotContains(t, rerunLogs.String(), "env-seeded ai provider")
72
73 // Verify there's still only one row and one key.
74 all, err := db.GetAIProviders(ctx, database.GetAIProvidersParams{})
75 require.NoError(t, err)
76 require.Len(t, all, 1)
77 keys, err = db.GetAIProviderKeysByProviderID(ctx, row.ID)
78 require.NoError(t, err)

Callers

nothing calls this directly

Calls 15

OptionsMethod · 0.95
NewDBFunction · 0.92
ContextFunction · 0.92
SeedAIProvidersFromEnvFunction · 0.92
capturedLoggerFunction · 0.85
NotEmptyMethod · 0.80
testLoggerFunction · 0.70
RunMethod · 0.65
GetAIProviderByNameMethod · 0.65
GetAIProvidersMethod · 0.65
DeleteAIProviderByIDMethod · 0.65

Tested by

no test coverage detected