import {test} from "node:test" import assert from "node:assert/strict" import {createStorageQueue,parseSession} from "../src/lib/session-data.ts" const valid={access_token:"a".repeat(43),expires_at:"2026-12-01T10:00:00Z",user:{id:"7f8fd1ca-30e8-4dfb-82a9-8655fbd354ac",display_name:"测试用户",status:"ACTIVE"}} test("session restoration requires a valid app credential and active identity",()=>{ assert.deepEqual(parseSession(valid),valid) for(const value of [null,{}, {...valid,access_token:"admin cookie"},{...valid,expires_at:"invalid"},{...valid,user:{...valid.user,status:"DISABLED"}},{...valid,user:{...valid.user,id:"other"}}])assert.equal(parseSession(value),null) }) test("ordered secret storage prevents expiration cleanup from erasing a newer login",async()=>{ const persist=createStorageQueue();let stored="old-session";const operations:string[]=[] let release:()=>void=()=>{} const barrier=new Promise(resolve=>{release=resolve}) const clear=persist(async()=>{await barrier;stored="";operations.push("clear")}) const login=persist(async()=>{stored="new-session";operations.push("save")}) release();await Promise.all([clear,login]);assert.deepEqual(operations,["clear","save"]);assert.equal(stored,"new-session") }) test("a failed storage operation does not prevent later recovery",async()=>{ const persist=createStorageQueue();await assert.rejects(persist(async()=>{throw new Error("storage failure")})) let recovered=false;await persist(async()=>{recovered=true});assert.equal(recovered,true) })