108 lines
3.1 KiB
Go
108 lines
3.1 KiB
Go
package cliproxy
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/router-for-me/CLIProxyAPI/v7/internal/config"
|
|
"github.com/router-for-me/CLIProxyAPI/v7/internal/registry"
|
|
)
|
|
|
|
func TestBuildConfigModelsDisplayName(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
want string
|
|
got func() *ModelInfo
|
|
}{
|
|
{
|
|
name: "claude",
|
|
want: "Claude Catalog Name",
|
|
got: func() *ModelInfo {
|
|
return buildClaudeConfigModels(&config.ClaudeKey{Models: []config.ClaudeModel{{
|
|
Name: "claude-upstream", Alias: "claude-catalog", DisplayName: "Claude Catalog Name",
|
|
}}})[0]
|
|
},
|
|
},
|
|
{
|
|
name: "gemini",
|
|
want: "Gemini Catalog Name",
|
|
got: func() *ModelInfo {
|
|
return buildGeminiConfigModels(&config.GeminiKey{Models: []config.GeminiModel{{
|
|
Name: "gemini-upstream", Alias: "gemini-catalog", DisplayName: "Gemini Catalog Name",
|
|
}}})[0]
|
|
},
|
|
},
|
|
{
|
|
name: "vertex",
|
|
want: "Vertex Catalog Name",
|
|
got: func() *ModelInfo {
|
|
return buildVertexCompatConfigModels(&config.VertexCompatKey{Models: []config.VertexCompatModel{{
|
|
Name: "vertex-upstream", Alias: "vertex-catalog", DisplayName: "Vertex Catalog Name",
|
|
}}})[0]
|
|
},
|
|
},
|
|
{
|
|
name: "codex",
|
|
want: "Codex Catalog Name",
|
|
got: func() *ModelInfo {
|
|
return buildCodexConfigModels(&config.CodexKey{Models: []config.CodexModel{{
|
|
Name: "gpt-5.5", Alias: "gpt-5.5", DisplayName: "Codex Catalog Name",
|
|
}}})[0]
|
|
},
|
|
},
|
|
{
|
|
name: "xai",
|
|
want: "xAI Catalog Name",
|
|
got: func() *ModelInfo {
|
|
return buildXAIConfigModels(&config.XAIKey{Models: []config.XAIModel{{
|
|
Name: "grok-4.5", Alias: "grok-latest", DisplayName: "xAI Catalog Name",
|
|
}}})[0]
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
if got := tt.got().DisplayName; got != tt.want {
|
|
t.Fatalf("DisplayName = %q, want %q", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBuildCodexConfigModelsSelectsDefaultsOrConfiguredModels(t *testing.T) {
|
|
configured := buildCodexConfigModels(&config.CodexKey{Models: []config.CodexModel{{
|
|
Name: "upstream-codex", Alias: "configured-codex",
|
|
}}})
|
|
if len(configured) != 1 {
|
|
t.Fatalf("configured model count = %d, want 1", len(configured))
|
|
}
|
|
if configured[0].ID != "configured-codex" {
|
|
t.Fatalf("configured model ID = %q, want configured-codex", configured[0].ID)
|
|
}
|
|
|
|
defaults := buildCodexConfigModels(&config.CodexKey{})
|
|
wantDefaults := registry.GetCodexProModels()
|
|
if len(defaults) != len(wantDefaults) {
|
|
t.Fatalf("default model count = %d, want %d", len(defaults), len(wantDefaults))
|
|
}
|
|
defaultIDs := make(map[string]struct{}, len(defaults))
|
|
for _, model := range defaults {
|
|
if model != nil {
|
|
defaultIDs[model.ID] = struct{}{}
|
|
}
|
|
}
|
|
for _, modelID := range []string{"gpt-image-1.5", "gpt-image-2"} {
|
|
if _, ok := defaultIDs[modelID]; !ok {
|
|
t.Errorf("missing default model %q", modelID)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestBuildConfigModelsDisplayNameFallback(t *testing.T) {
|
|
model := buildClaudeConfigModels(&config.ClaudeKey{Models: []config.ClaudeModel{{
|
|
Name: "claude-upstream", Alias: "claude-catalog",
|
|
}}})[0]
|
|
if model.DisplayName != "claude-upstream" {
|
|
t.Fatalf("DisplayName = %q, want upstream model name", model.DisplayName)
|
|
}
|
|
}
|