mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-06-20 20:06:05 +08:00
- Implemented helper methods `IsConfigAPIKeyAuth` and `toggleConfigAPIKeyExcludedAll` for managing config API key exclusions. - Updated API request handling to support enabling/disabling config API key exclusion patterns. - Added test coverage to validate exclusion toggling logic and persistence behavior. - Refactored duplicate code for identifying config API key auth entries into reusable utilities.
94 lines
2.7 KiB
Go
94 lines
2.7 KiB
Go
package auth
|
|
|
|
import (
|
|
"context"
|
|
"sync/atomic"
|
|
"testing"
|
|
)
|
|
|
|
type countingStore struct {
|
|
saveCount atomic.Int32
|
|
}
|
|
|
|
func (s *countingStore) List(context.Context) ([]*Auth, error) { return nil, nil }
|
|
|
|
func (s *countingStore) Save(context.Context, *Auth) (string, error) {
|
|
s.saveCount.Add(1)
|
|
return "", nil
|
|
}
|
|
|
|
func (s *countingStore) Delete(context.Context, string) error { return nil }
|
|
|
|
func TestWithSkipPersist_DisablesUpdatePersistence(t *testing.T) {
|
|
store := &countingStore{}
|
|
mgr := NewManager(store, nil, nil)
|
|
auth := &Auth{
|
|
ID: "auth-1",
|
|
Provider: "antigravity",
|
|
Metadata: map[string]any{"type": "antigravity"},
|
|
}
|
|
|
|
if _, err := mgr.Register(WithSkipPersist(context.Background()), auth); err != nil {
|
|
t.Fatalf("Register(skipPersist) returned error: %v", err)
|
|
}
|
|
if got := store.saveCount.Load(); got != 0 {
|
|
t.Fatalf("expected 0 Save calls, got %d", got)
|
|
}
|
|
|
|
if _, err := mgr.Update(context.Background(), auth); err != nil {
|
|
t.Fatalf("Update returned error: %v", err)
|
|
}
|
|
if got := store.saveCount.Load(); got != 1 {
|
|
t.Fatalf("expected 1 Save call, got %d", got)
|
|
}
|
|
|
|
ctxSkip := WithSkipPersist(context.Background())
|
|
if _, err := mgr.Update(ctxSkip, auth); err != nil {
|
|
t.Fatalf("Update(skipPersist) returned error: %v", err)
|
|
}
|
|
if got := store.saveCount.Load(); got != 1 {
|
|
t.Fatalf("expected Save call count to remain 1, got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestWithSkipPersist_DisablesRegisterPersistence(t *testing.T) {
|
|
store := &countingStore{}
|
|
mgr := NewManager(store, nil, nil)
|
|
auth := &Auth{
|
|
ID: "auth-1",
|
|
Provider: "antigravity",
|
|
Metadata: map[string]any{"type": "antigravity"},
|
|
}
|
|
|
|
if _, err := mgr.Register(WithSkipPersist(context.Background()), auth); err != nil {
|
|
t.Fatalf("Register(skipPersist) returned error: %v", err)
|
|
}
|
|
if got := store.saveCount.Load(); got != 0 {
|
|
t.Fatalf("expected 0 Save calls, got %d", got)
|
|
}
|
|
}
|
|
|
|
func TestPersist_SkipsConfigAPIKeyAuth(t *testing.T) {
|
|
store := &countingStore{}
|
|
mgr := NewManager(store, nil, nil)
|
|
auth := &Auth{
|
|
ID: "codex:apikey:abc",
|
|
Provider: "codex",
|
|
Attributes: map[string]string{
|
|
"api_key": "secret",
|
|
"source": "config:codex[abc]",
|
|
},
|
|
Metadata: map[string]any{"disable_cooling": true},
|
|
}
|
|
if _, err := mgr.Register(context.Background(), auth); err != nil {
|
|
t.Fatalf("Register returned error: %v", err)
|
|
}
|
|
if got := store.saveCount.Load(); got != 0 {
|
|
t.Fatalf("expected 0 Save calls for config api key, got %d", got)
|
|
}
|
|
mgr.MarkResult(context.Background(), Result{AuthID: auth.ID, Provider: "codex", Model: "gpt-5", Success: true})
|
|
if got := store.saveCount.Load(); got != 0 {
|
|
t.Fatalf("expected MarkResult to skip persist for config api key, got %d Save calls", got)
|
|
}
|
|
}
|