Files
PrismMaze/tests/auth/reset.test.cjs

14 lines
1.8 KiB
JavaScript

const fs=require('fs'),vm=require('vm'),assert=require('assert').strict;
const ts=require('C:/ProgramData/cocos/editors/Creator/3.8.7/resources/app.asar.unpacked/node_modules/typescript');
const accounts=[...Array(12)].map((_,i)=>({username:'cnrzh'+String(i+1).padStart(3,'0')}));
[1,2,4,5,7,8,3,11,6,14,9,17,12,13,15,16,18,19].forEach(i=>accounts.push({username:'wcnr'+String(i).padStart(3,'0')}));
const m=new Map();const store={get length(){return m.size},key:i=>[...m.keys()][i],getItem:k=>m.get(k)??null,setItem:(k,v)=>m.set(k,v),removeItem:k=>m.delete(k)};
for(const a of accounts)for(const k of ['prism.auth.save.'+a.username,'prism.profile.'+a.username,'prism.auth.pay.'+a.username+'.2026-10','prism.auth.usage.'+a.username+'.2026-10-23'])m.set(k,'old');
for(const k of ['prism.auth.v1','prism.auth.save.中文账号','unrelated','prism.auth.save.cnrzh001extra'])m.set(k,'keep');
const exportsObj={};vm.runInNewContext(ts.transpileModule(fs.readFileSync('assets/games/auth/scripts/AuthRuntime.ts','utf8'),{compilerOptions:{module:ts.ModuleKind.CommonJS,target:ts.ScriptTarget.ES2015}}).outputText,{exports:exportsObj,require:k=>k==='cc'?{sys:{localStorage:store}}:{TEST_ACCOUNTS:accounts,AuthService:class{}}});
exportsObj.resetFixtureSavesOnce(store);
assert.equal(Object.keys(JSON.parse(m.get('prism.fixture.reset.20261023.backup'))).length,120);
for(const k of ['prism.auth.v1','prism.auth.save.中文账号','unrelated','prism.auth.save.cnrzh001extra'])assert.equal(m.get(k),'keep');
assert.equal(m.has('prism.auth.save.cnrzh001'),false);m.set('prism.auth.save.cnrzh001','new progress');exportsObj.resetFixtureSavesOnce(store);assert.equal(m.get('prism.auth.save.cnrzh001'),'new progress');
console.log('PASS: all 30 fixture accounts reset, backup retained, custom accounts isolated, repeated startup preserves new progress');