mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
112 lines
3.0 KiB
Go
112 lines
3.0 KiB
Go
package providers
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/sipeed/picoclaw/pkg/auth"
|
|
"github.com/sipeed/picoclaw/pkg/config"
|
|
)
|
|
|
|
func TestCreateProviderReturnsHTTPProviderForOpenRouter(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.Agents.Defaults.ModelName = "test-openrouter"
|
|
modelCfg := &config.ModelConfig{
|
|
ModelName: "test-openrouter",
|
|
Model: "openrouter/auto",
|
|
APIBase: "https://openrouter.ai/api/v1",
|
|
}
|
|
modelCfg.SetAPIKey("sk-or-test")
|
|
cfg.ModelList = []*config.ModelConfig{modelCfg}
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider() error = %v", err)
|
|
}
|
|
|
|
if _, ok := provider.(*HTTPProvider); !ok {
|
|
t.Fatalf("provider type = %T, want *HTTPProvider", provider)
|
|
}
|
|
}
|
|
|
|
func TestCreateProviderReturnsCodexCliProviderForCodexCode(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.Agents.Defaults.ModelName = "test-codex"
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{
|
|
ModelName: "test-codex",
|
|
Model: "codex-cli/codex-model",
|
|
Workspace: "/tmp/workspace",
|
|
},
|
|
}
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider() error = %v", err)
|
|
}
|
|
|
|
if _, ok := provider.(*CodexCliProvider); !ok {
|
|
t.Fatalf("provider type = %T, want *CodexCliProvider", provider)
|
|
}
|
|
}
|
|
|
|
func TestCreateProviderReturnsClaudeCliProviderForClaudeCli(t *testing.T) {
|
|
cfg := config.DefaultConfig()
|
|
cfg.Agents.Defaults.ModelName = "test-claude-cli"
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{
|
|
ModelName: "test-claude-cli",
|
|
Model: "claude-cli/claude-sonnet",
|
|
Workspace: "/tmp/workspace",
|
|
},
|
|
}
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider() error = %v", err)
|
|
}
|
|
|
|
if _, ok := provider.(*ClaudeCliProvider); !ok {
|
|
t.Fatalf("provider type = %T, want *ClaudeCliProvider", provider)
|
|
}
|
|
}
|
|
|
|
func TestCreateProviderReturnsClaudeProviderForAnthropicOAuth(t *testing.T) {
|
|
originalGetCredential := getCredential
|
|
t.Cleanup(func() { getCredential = originalGetCredential })
|
|
|
|
getCredential = func(provider string) (*auth.AuthCredential, error) {
|
|
if provider != "anthropic" {
|
|
t.Fatalf("provider = %q, want anthropic", provider)
|
|
}
|
|
return &auth.AuthCredential{
|
|
AccessToken: "anthropic-token",
|
|
}, nil
|
|
}
|
|
|
|
cfg := config.DefaultConfig()
|
|
cfg.Agents.Defaults.ModelName = "test-claude-oauth"
|
|
cfg.ModelList = []*config.ModelConfig{
|
|
{
|
|
ModelName: "test-claude-oauth",
|
|
Model: "anthropic/claude-sonnet-4.6",
|
|
AuthMethod: "oauth",
|
|
},
|
|
}
|
|
|
|
provider, _, err := CreateProvider(cfg)
|
|
if err != nil {
|
|
t.Fatalf("CreateProvider() error = %v", err)
|
|
}
|
|
|
|
if _, ok := provider.(*ClaudeProvider); !ok {
|
|
t.Fatalf("provider type = %T, want *ClaudeProvider", provider)
|
|
}
|
|
// TODO: Test custom APIBase when createClaudeAuthProvider supports it
|
|
}
|
|
|
|
func TestCreateProviderReturnsCodexProviderForOpenAIOAuth(t *testing.T) {
|
|
// TODO: This test requires openai protocol to support auth_method: "oauth"
|
|
// which is not yet implemented in the new factory_provider.go
|
|
t.Skip("OpenAI OAuth via model_list not yet implemented")
|
|
}
|