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:
parent
6c065d2852
commit
3552a88fbd
2 changed files with 27 additions and 18 deletions
|
|
@ -86,14 +86,16 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
|
||||||
sel.providerType = providerTypeClaudeAuth
|
sel.providerType = providerTypeClaudeAuth
|
||||||
return sel, nil
|
return sel, nil
|
||||||
}
|
}
|
||||||
sel.apiKey = cfg.Providers.Anthropic.APIKey
|
if cfg.Providers.Anthropic.APIKey != "" {
|
||||||
sel.apiBase = cfg.Providers.Anthropic.APIBase
|
sel.apiKey = cfg.Providers.Anthropic.APIKey
|
||||||
sel.proxy = cfg.Providers.Anthropic.Proxy
|
sel.apiBase = cfg.Providers.Anthropic.APIBase
|
||||||
if sel.apiBase == "" {
|
sel.proxy = cfg.Providers.Anthropic.Proxy
|
||||||
sel.apiBase = defaultAnthropicAPIBase
|
if sel.apiBase == "" {
|
||||||
|
sel.apiBase = defaultAnthropicAPIBase
|
||||||
|
}
|
||||||
|
sel.providerType = providerTypeClaudeAPIKey
|
||||||
|
return sel, nil
|
||||||
}
|
}
|
||||||
sel.providerType = providerTypeClaudeAPIKey
|
|
||||||
return sel, nil
|
|
||||||
}
|
}
|
||||||
case "openrouter":
|
case "openrouter":
|
||||||
if cfg.Providers.OpenRouter.APIKey != "" {
|
if cfg.Providers.OpenRouter.APIKey != "" {
|
||||||
|
|
@ -238,14 +240,16 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) {
|
||||||
sel.providerType = providerTypeClaudeAuth
|
sel.providerType = providerTypeClaudeAuth
|
||||||
return sel, nil
|
return sel, nil
|
||||||
}
|
}
|
||||||
sel.apiKey = cfg.Providers.Anthropic.APIKey
|
if cfg.Providers.Anthropic.APIKey != "" {
|
||||||
sel.apiBase = cfg.Providers.Anthropic.APIBase
|
sel.apiKey = cfg.Providers.Anthropic.APIKey
|
||||||
sel.proxy = cfg.Providers.Anthropic.Proxy
|
sel.apiBase = cfg.Providers.Anthropic.APIBase
|
||||||
if sel.apiBase == "" {
|
sel.proxy = cfg.Providers.Anthropic.Proxy
|
||||||
sel.apiBase = defaultAnthropicAPIBase
|
if sel.apiBase == "" {
|
||||||
|
sel.apiBase = defaultAnthropicAPIBase
|
||||||
|
}
|
||||||
|
sel.providerType = providerTypeClaudeAPIKey
|
||||||
|
return sel, nil
|
||||||
}
|
}
|
||||||
sel.providerType = providerTypeClaudeAPIKey
|
|
||||||
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
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue