package backend import ( "testing" ) func TestNewWithName_NoBackendErrors(t *testing.T) { _, err := newBackendFromConfig("", configFile{Backends: map[string]BackendConfig{}}) if err == nil { t.Fatal("expected error when backend is unset") } } func TestNewBackendFromConfig_Ollama(t *testing.T) { b, err := newBackendFromConfig("ollama", configFile{Backends: map[string]BackendConfig{ "ollama": {Host: "http://localhost:11434"}, }}) if err != nil { t.Fatal(err) } if b.Name() != "ollama" { t.Errorf("name = %q", b.Name()) } } func TestNewBackendFromConfig_OpenAI(t *testing.T) { b, err := newBackendFromConfig("openai", configFile{Backends: map[string]BackendConfig{ "openai": {URL: "https://api.openai.com", Key: "sk-test"}, }}) if err != nil { t.Fatal(err) } if b.Name() != "openai" { t.Errorf("name = %q", b.Name()) } } func TestNewBackendFromConfig_AnthropicMissingKey(t *testing.T) { _, err := newBackendFromConfig("anthropic", configFile{Backends: map[string]BackendConfig{ "anthropic": {}, }}) if err == nil { t.Fatal("expected error for missing key") } } func TestNewBackendFromConfig_Unknown(t *testing.T) { _, err := newBackendFromConfig("bogus", configFile{Backends: map[string]BackendConfig{}}) if err == nil { t.Fatal("expected error for unknown backend") } } func TestNewOllama_InvalidURL(t *testing.T) { _, err := NewOllama("://bad") if err == nil { t.Fatal("expected error for invalid URL") } } func TestNewOpenAI_InvalidURL(t *testing.T) { _, err := NewOpenAI("openai", "://bad", "k") if err == nil { t.Fatal("expected error for invalid URL") } } func TestBackends(t *testing.T) { bs := Backends() if len(bs) != 7 { t.Fatalf("len = %d; want 7", len(bs)) } want := map[string]bool{"ollama": true, "openai": true, "openrouter": true, "anthropic": true, "copilot": true, "kiro": true, "gemini": true} for _, b := range bs { if !want[b] { t.Errorf("unexpected backend %q", b) } } }