mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-18 04:10:51 +08:00
- Added unit tests for combining OAuth excluded models across global and attribute-specific scopes. - Implemented priority attribute parsing with support for different formats and trimming.
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package cliproxy
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
coreauth "github.com/router-for-me/CLIProxyAPI/v6/sdk/cliproxy/auth"
|
|
"github.com/router-for-me/CLIProxyAPI/v6/sdk/config"
|
|
)
|
|
|
|
func TestRegisterModelsForAuth_UsesPreMergedExcludedModelsAttribute(t *testing.T) {
|
|
service := &Service{
|
|
cfg: &config.Config{
|
|
OAuthExcludedModels: map[string][]string{
|
|
"gemini-cli": {"gemini-2.5-pro"},
|
|
},
|
|
},
|
|
}
|
|
auth := &coreauth.Auth{
|
|
ID: "auth-gemini-cli",
|
|
Provider: "gemini-cli",
|
|
Status: coreauth.StatusActive,
|
|
Attributes: map[string]string{
|
|
"auth_kind": "oauth",
|
|
"excluded_models": "gemini-2.5-flash",
|
|
},
|
|
}
|
|
|
|
registry := GlobalModelRegistry()
|
|
registry.UnregisterClient(auth.ID)
|
|
t.Cleanup(func() {
|
|
registry.UnregisterClient(auth.ID)
|
|
})
|
|
|
|
service.registerModelsForAuth(auth)
|
|
|
|
models := registry.GetAvailableModelsByProvider("gemini-cli")
|
|
if len(models) == 0 {
|
|
t.Fatal("expected gemini-cli models to be registered")
|
|
}
|
|
|
|
for _, model := range models {
|
|
if model == nil {
|
|
continue
|
|
}
|
|
modelID := strings.TrimSpace(model.ID)
|
|
if strings.EqualFold(modelID, "gemini-2.5-flash") {
|
|
t.Fatalf("expected model %q to be excluded by auth attribute", modelID)
|
|
}
|
|
}
|
|
|
|
seenGlobalExcluded := false
|
|
for _, model := range models {
|
|
if model == nil {
|
|
continue
|
|
}
|
|
if strings.EqualFold(strings.TrimSpace(model.ID), "gemini-2.5-pro") {
|
|
seenGlobalExcluded = true
|
|
break
|
|
}
|
|
}
|
|
if !seenGlobalExcluded {
|
|
t.Fatal("expected global excluded model to be present when attribute override is set")
|
|
}
|
|
}
|