fix(providers): address review feedback - APIKey guard, test fix

- Add explicit APIKey \!= '' guard in both provider-selection branches to
  prevent routing with empty credentials when only AuthMethod is set
- Fix test to use ModelList (CreateProvider now requires model_list entry)
- Fix test for 3-value return from CreateProvider after upstream changes
This commit is contained in:
Nikolas de Hor 2026-03-03 01:20:16 -03:00
parent 6c065d2852
commit 3552a88fbd
2 changed files with 27 additions and 18 deletions

View file

@ -86,6 +86,7 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
sel.providerType = providerTypeClaudeAuth sel.providerType = providerTypeClaudeAuth
return sel, nil return sel, nil
} }
if cfg.Providers.Anthropic.APIKey != "" {
sel.apiKey = cfg.Providers.Anthropic.APIKey sel.apiKey = cfg.Providers.Anthropic.APIKey
sel.apiBase = cfg.Providers.Anthropic.APIBase sel.apiBase = cfg.Providers.Anthropic.APIBase
sel.proxy = cfg.Providers.Anthropic.Proxy sel.proxy = cfg.Providers.Anthropic.Proxy
@ -95,6 +96,7 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
sel.providerType = providerTypeClaudeAPIKey sel.providerType = providerTypeClaudeAPIKey
return sel, nil return sel, nil
} }
}
case "openrouter": case "openrouter":
if cfg.Providers.OpenRouter.APIKey != "" { if cfg.Providers.OpenRouter.APIKey != "" {
sel.apiKey = cfg.Providers.OpenRouter.APIKey sel.apiKey = cfg.Providers.OpenRouter.APIKey
@ -238,6 +240,7 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
sel.providerType = providerTypeClaudeAuth sel.providerType = providerTypeClaudeAuth
return sel, nil return sel, nil
} }
if cfg.Providers.Anthropic.APIKey != "" {
sel.apiKey = cfg.Providers.Anthropic.APIKey sel.apiKey = cfg.Providers.Anthropic.APIKey
sel.apiBase = cfg.Providers.Anthropic.APIBase sel.apiBase = cfg.Providers.Anthropic.APIBase
sel.proxy = cfg.Providers.Anthropic.Proxy sel.proxy = cfg.Providers.Anthropic.Proxy
@ -246,6 +249,7 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
} }
sel.providerType = providerTypeClaudeAPIKey sel.providerType = providerTypeClaudeAPIKey
return sel, nil return sel, nil
}
case (strings.Contains(lowerModel, "gpt") || strings.HasPrefix(model, "openai/")) && case (strings.Contains(lowerModel, "gpt") || strings.HasPrefix(model, "openai/")) &&
(cfg.Providers.OpenAI.APIKey != "" || cfg.Providers.OpenAI.AuthMethod != ""): (cfg.Providers.OpenAI.APIKey != "" || cfg.Providers.OpenAI.AuthMethod != ""):
sel.enableWebSearch = cfg.Providers.OpenAI.WebSearch sel.enableWebSearch = cfg.Providers.OpenAI.WebSearch

View file

@ -345,11 +345,16 @@ func TestCreateProviderReturnsClaudeProviderForAnthropicOAuth(t *testing.T) {
func TestCreateProviderReturnsClaudeProviderForAnthropicAPIKey(t *testing.T) { func TestCreateProviderReturnsClaudeProviderForAnthropicAPIKey(t *testing.T) {
cfg := config.DefaultConfig() cfg := config.DefaultConfig()
cfg.Agents.Defaults.Provider = "anthropic" cfg.Agents.Defaults.Model = "test-claude-apikey"
cfg.Agents.Defaults.Model = "claude-opus-4-6" cfg.ModelList = []config.ModelConfig{
cfg.Providers.Anthropic.APIKey = "sk-ant-api03-test" {
ModelName: "test-claude-apikey",
Model: "anthropic/claude-opus-4-6",
APIKey: "sk-ant-api03-test",
},
}
provider, err := CreateProvider(cfg) provider, _, err := CreateProvider(cfg)
if err != nil { if err != nil {
t.Fatalf("CreateProvider() error = %v", err) t.Fatalf("CreateProvider() error = %v", err)
} }