Merge pull request #124 from CJackHwang/codex/fix-codex-review-issues-in-pr-#123

Preserve file-backed account tokens on startup and add regression test
This commit is contained in:
CJACK.
2026-03-21 15:34:01 +08:00
committed by GitHub
2 changed files with 28 additions and 1 deletions

View File

@@ -2,6 +2,7 @@ package config
import (
"encoding/base64"
"os"
"testing"
)
@@ -50,6 +51,33 @@ func TestLoadStoreDropsLegacyTokenOnlyAccounts(t *testing.T) {
}
}
func TestLoadStorePreservesFileBackedTokensForRuntime(t *testing.T) {
tmp, err := os.CreateTemp(t.TempDir(), "config-*.json")
if err != nil {
t.Fatalf("create temp config: %v", err)
}
defer tmp.Close()
if _, err := tmp.WriteString(`{
"accounts":[{"email":"u@example.com","password":"p","token":"persisted-token"}]
}`); err != nil {
t.Fatalf("write temp config: %v", err)
}
t.Setenv("DS2API_CONFIG_JSON", "")
t.Setenv("CONFIG_JSON", "")
t.Setenv("DS2API_CONFIG_PATH", tmp.Name())
store := LoadStore()
accounts := store.Accounts()
if len(accounts) != 1 {
t.Fatalf("expected 1 account, got %d", len(accounts))
}
if accounts[0].Token != "persisted-token" {
t.Fatalf("expected file-backed token preserved for runtime use, got %q", accounts[0].Token)
}
}
func TestStoreUpdateAccountTokenKeepsIdentifierResolvable(t *testing.T) {
t.Setenv("DS2API_CONFIG_JSON", `{
"accounts":[{"email":"user@example.com","password":"p"}]

View File

@@ -57,7 +57,6 @@ func loadConfig() (Config, bool, error) {
if err := json.Unmarshal(content, &cfg); err != nil {
return Config{}, false, err
}
cfg.ClearAccountTokens()
cfg.DropInvalidAccounts()
if IsVercel() {
// Vercel filesystem is ephemeral/read-only for runtime writes; avoid save errors.