Files
CLIProxyAPI/internal/misc/credentials_test.go
Luis Pater b90d8ee9eb fix(auth): preserve custom auth-file metadata during token refresh and relogin
- Added metadata merge helpers in `sdk/cliproxy/auth` to retain existing auth-file settings while excluding token lifecycle fields.
- Applied merge before saving in management handler and `sdk/auth.Manager.Login` so re-login overwrites credentials without discarding user-configured fields.
- Updated token save paths for Claude, Codex, Kimi, XAI, and Vertex to persist merged metadata payloads when writing auth files.

Closes: #4945
2026-08-15 00:07:27 +08:00

47 lines
1.2 KiB
Go

package misc
import (
"testing"
)
func TestMergeMetadata(t *testing.T) {
source := map[string]any{
"type": "codex",
"access_token": "token-123",
}
metadata := map[string]any{
"disabled": false,
"email": "test@example.com",
"prefix": "custom-prefix",
"websockets": false,
"note": "custom note",
}
result, err := MergeMetadata(source, metadata)
if err != nil {
t.Fatalf("MergeMetadata() error = %v", err)
}
if result["type"] != "codex" {
t.Errorf("type = %v, want codex", result["type"])
}
if result["access_token"] != "token-123" {
t.Errorf("access_token = %v, want token-123", result["access_token"])
}
if result["disabled"] != false {
t.Errorf("disabled = %v, want false", result["disabled"])
}
if result["email"] != "test@example.com" {
t.Errorf("email = %v, want test@example.com", result["email"])
}
if result["prefix"] != "custom-prefix" {
t.Errorf("prefix = %v, want custom-prefix", result["prefix"])
}
if result["websockets"] != false {
t.Errorf("websockets = %v, want false", result["websockets"])
}
if result["note"] != "custom note" {
t.Errorf("note = %v, want custom note", result["note"])
}
}