t
This commit is contained in:
parent
4c4e767ec6
commit
9d70afb4cc
42 changed files with 1266 additions and 630 deletions
26
test/server-backup-test.js
Normal file
26
test/server-backup-test.js
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
'use strict';
|
||||
const assert=require('assert/strict');
|
||||
const fs=require('fs');
|
||||
const fsp=fs.promises;
|
||||
const os=require('os');
|
||||
const path=require('path');
|
||||
const {createWorldBackup,verifyWorldBackup,restoreWorldBackup}=require('../server/world-backup');
|
||||
|
||||
(async()=>{
|
||||
const root=await fsp.mkdtemp(path.join(os.tmpdir(),'linkfield-backup-')),world=path.join(root,'world'),backups=path.join(root,'backups');
|
||||
try{
|
||||
await fsp.mkdir(path.join(world,'shared-world.boards'),{recursive:true});
|
||||
const board={meta:{id:'B0'},state:{solved:false}},record={revision:3,global:{worldGeneration:'test'},boardVersions:{B0:3}};
|
||||
await fsp.writeFile(path.join(world,'shared-world.json'),JSON.stringify(record));
|
||||
await fsp.writeFile(path.join(world,'shared-world.boards','B0.3.json'),JSON.stringify(board));
|
||||
await fsp.writeFile(path.join(world,`${'a'.repeat(24)}.json`),JSON.stringify({playerId:'a'.repeat(24)}));
|
||||
const created=await createWorldBackup(world,backups,{retain:2,appVersion:'test'});assert.equal(created.manifest.worldRevision,3);assert.equal(created.manifest.fileCount,3);
|
||||
const verified=await verifyWorldBackup(backups,created.name);assert.equal(verified.manifest.app,'LinkField');
|
||||
await fsp.writeFile(path.join(world,'shared-world.json'),JSON.stringify({...record,revision:4}));
|
||||
const restored=await restoreWorldBackup(world,backups,created.name);assert(fs.existsSync(restored.previous));
|
||||
assert.equal(JSON.parse(await fsp.readFile(path.join(world,'shared-world.json'),'utf8')).revision,3);
|
||||
assert.deepEqual(JSON.parse(await fsp.readFile(path.join(world,'shared-world.boards','B0.3.json'),'utf8')),board);
|
||||
console.log('Server backup checksum and recoverable restore test passed');
|
||||
}finally{await fsp.rm(root,{recursive:true,force:true})}
|
||||
})().catch(error=>{console.error(error);process.exitCode=1});
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue