119 lines
3.4 KiB
Go
119 lines
3.4 KiB
Go
package provider
|
|
|
|
import "testing"
|
|
|
|
// TestPresetProvidersIncludeNewProviders verifies the curated preset provider
|
|
// list gained the expanded set of gateways, each paired with the correct API-key
|
|
// environment variable (referenced by name only).
|
|
func TestPresetProvidersIncludeNewProviders(t *testing.T) {
|
|
byName := make(map[string]string, len(PresetProviders))
|
|
for _, p := range PresetProviders {
|
|
byName[p.Name] = p.EnvVar
|
|
}
|
|
|
|
want := map[string]string{
|
|
"deepseek": "DEEPSEEK_API_KEY",
|
|
"groq": "GROQ_API_KEY",
|
|
"xai": "XAI_API_KEY",
|
|
"cerebras": "CEREBRAS_API_KEY",
|
|
"mistral": "MISTRAL_API_KEY",
|
|
"moonshotai": "MOONSHOT_API_KEY",
|
|
"zai": "ZAI_API_KEY",
|
|
"fireworks": "FIREWORKS_API_KEY",
|
|
"together": "TOGETHER_API_KEY",
|
|
"minimax": "MINIMAX_API_KEY",
|
|
"xiaomi": "XIAOMI_API_KEY",
|
|
}
|
|
for name, env := range want {
|
|
got, ok := byName[name]
|
|
if !ok {
|
|
t.Errorf("PresetProviders missing provider %q", name)
|
|
continue
|
|
}
|
|
if got != env {
|
|
t.Errorf("provider %q env var = %q, want %q", name, got, env)
|
|
}
|
|
}
|
|
|
|
// Every preset provider must be a known provider in the central registry, so
|
|
// selecting a preset can always be resolved to a working Provider.
|
|
for _, p := range PresetProviders {
|
|
if p.Name == "ollama" {
|
|
continue // local pseudo-provider, not in the registry
|
|
}
|
|
if _, ok := LookupProviderSpec(p.Name); !ok {
|
|
t.Errorf("preset provider %q has no ProviderSpec in the registry", p.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestPresetCatalogCountsPerProvider asserts each expanded provider contributes
|
|
// the expected number of curated entries.
|
|
func TestPresetCatalogCountsPerProvider(t *testing.T) {
|
|
wantAtLeast := map[string]int{
|
|
"deepseek": 2,
|
|
"groq": 3,
|
|
"xai": 2,
|
|
"cerebras": 3,
|
|
"mistral": 4,
|
|
"moonshotai": 3,
|
|
"zai": 3,
|
|
"fireworks": 3,
|
|
"together": 3,
|
|
"minimax": 2,
|
|
"xiaomi": 3,
|
|
}
|
|
for provider, min := range wantAtLeast {
|
|
got := PresetsByProvider(provider)
|
|
if len(got) < min {
|
|
t.Errorf("PresetsByProvider(%q) returned %d entries, want >= %d", provider, len(got), min)
|
|
}
|
|
for _, p := range got {
|
|
if p.Provider != provider {
|
|
t.Errorf("PresetsByProvider(%q) returned entry for %q", provider, p.Provider)
|
|
}
|
|
if p.ID == "" {
|
|
t.Errorf("PresetsByProvider(%q) returned entry with empty ID", provider)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestLookupPresetNewEntries verifies representative new model ids resolve to the
|
|
// correct owning provider and carry a non-empty label.
|
|
func TestLookupPresetNewEntries(t *testing.T) {
|
|
cases := []struct {
|
|
id string
|
|
provider string
|
|
}{
|
|
{"deepseek-v4-pro", "deepseek"},
|
|
{"llama-3.3-70b-versatile", "groq"},
|
|
{"grok-4.5", "xai"},
|
|
{"zai-glm-4.7", "cerebras"},
|
|
{"mistral-large-latest", "mistral"},
|
|
{"kimi-k2-thinking", "moonshotai"},
|
|
{"glm-5.1", "zai"},
|
|
{"accounts/fireworks/models/gpt-oss-120b", "fireworks"},
|
|
{"deepseek-ai/DeepSeek-V4-Pro", "together"},
|
|
{"MiniMax-M3", "minimax"},
|
|
{"mimo-v2.5-pro", "xiaomi"},
|
|
}
|
|
for _, tc := range cases {
|
|
p, ok := LookupPreset(tc.id)
|
|
if !ok {
|
|
t.Errorf("LookupPreset(%q) not found", tc.id)
|
|
continue
|
|
}
|
|
if p.Provider != tc.provider {
|
|
t.Errorf("LookupPreset(%q).Provider = %q, want %q", tc.id, p.Provider, tc.provider)
|
|
}
|
|
if p.Label() == "" {
|
|
t.Errorf("LookupPreset(%q).Label() is empty", tc.id)
|
|
}
|
|
}
|
|
|
|
if _, ok := LookupPreset("this-model-does-not-exist"); ok {
|
|
t.Error("LookupPreset returned ok for an unknown id")
|
|
}
|
|
}
|