67 lines
2.2 KiB
Go
67 lines
2.2 KiB
Go
package provider
|
|
|
|
// Tests for the preset provider/model catalog (mirrors pi agent's preset picker):
|
|
// LookupPreset resolves a catalog id to its owning provider, PresetsByProvider
|
|
// groups by provider, and every preset must name a provider that has a known
|
|
// credential env var (or be the local, keyless Ollama).
|
|
|
|
import "testing"
|
|
|
|
// TestLookupPresetResolvesProvider verifies a catalog id resolves to its
|
|
// declared provider, and an unknown id does not.
|
|
func TestLookupPresetResolvesProvider(t *testing.T) {
|
|
p, ok := LookupPreset("meta/llama-3.3-70b-instruct")
|
|
if !ok {
|
|
t.Fatal("expected NVIDIA llama preset to be in the catalog")
|
|
}
|
|
if p.Provider != "nvidia" {
|
|
t.Errorf("provider = %q, want nvidia", p.Provider)
|
|
}
|
|
if _, ok := LookupPreset("definitely/not-a-preset"); ok {
|
|
t.Error("unknown id must not resolve to a preset")
|
|
}
|
|
}
|
|
|
|
// TestPresetsByProviderGroups verifies each provider surfaces at least one
|
|
// preset and that the returned entries all belong to that provider.
|
|
func TestPresetsByProviderGroups(t *testing.T) {
|
|
for _, name := range []string{"openrouter", "nvidia", "ollama"} {
|
|
got := PresetsByProvider(name)
|
|
if len(got) == 0 {
|
|
t.Errorf("provider %q has no presets", name)
|
|
}
|
|
for _, m := range got {
|
|
if m.Provider != name {
|
|
t.Errorf("PresetsByProvider(%q) returned entry for %q", name, m.Provider)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestPresetProvidersHaveCredentialMapping verifies every non-local preset
|
|
// provider has API-key env vars in the provider registry (the single source of
|
|
// truth), so a selected preset can actually resolve a credential. Ollama is
|
|
// local and keyless.
|
|
func TestPresetProvidersHaveCredentialMapping(t *testing.T) {
|
|
for _, pv := range PresetProviders {
|
|
if pv.Name == "ollama" {
|
|
continue
|
|
}
|
|
spec, ok := LookupProviderSpec(pv.Name)
|
|
if !ok || len(spec.EnvVars) == 0 {
|
|
t.Errorf("preset provider %q has no credential env var mapping", pv.Name)
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestPresetLabelFallsBackToID verifies Label uses DisplayName when set and
|
|
// falls back to the id otherwise.
|
|
func TestPresetLabelFallsBackToID(t *testing.T) {
|
|
if got := (PresetModel{ID: "x", DisplayName: "X"}).Label(); got != "X" {
|
|
t.Errorf("Label = %q, want X", got)
|
|
}
|
|
if got := (PresetModel{ID: "x"}).Label(); got != "x" {
|
|
t.Errorf("Label = %q, want x", got)
|
|
}
|
|
}
|