fix: isolate in-memory client persistence

This commit is contained in:
2026-07-22 18:50:46 +08:00
parent 3200089fa4
commit 8523b01231
5 changed files with 64 additions and 12 deletions
+19 -7
View File
@@ -10,7 +10,6 @@ import (
"path/filepath"
"reflect"
"strings"
"sync"
"testing"
)
@@ -136,18 +135,31 @@ func TestMemoryRefreshCallbackCanReadCurrentAuth(t *testing.T) {
}
}
func TestMemoryRefreshCallbackCanAcquireApplicationLock(t *testing.T) {
var persistenceMu sync.Mutex
client, _, server := newMemoryRefreshClient(t, func(AuthData) error {
persistenceMu.Lock()
defer persistenceMu.Unlock()
return nil
func TestMemoryRefreshCallbackCanPersistIndependently(t *testing.T) {
persistencePath := filepath.Join(t.TempDir(), "persisted-auth.json")
client, _, server := newMemoryRefreshClient(t, func(authData AuthData) error {
payload, err := authData.MarshalJSON()
if err != nil {
return err
}
return os.WriteFile(persistencePath, payload, 0o600)
})
defer server.Close()
if err := client.refreshToken(context.Background()); err != nil {
t.Fatal(err)
}
payload, err := os.ReadFile(persistencePath)
if err != nil {
t.Fatal(err)
}
var persisted AuthData
if err := persisted.UnmarshalJSON(payload); err != nil {
t.Fatal(err)
}
if persisted.ServiceToken != "new-token" || persisted.CUserID != "new-c-user" {
t.Fatalf("persisted auth = %#v", persisted)
}
}
func TestMemoryRefreshPersistsGeneratedIdentity(t *testing.T) {