2 lines
1.4 KiB
JavaScript
2 lines
1.4 KiB
JavaScript
import test from 'node:test';import assert from 'node:assert/strict';import fs from 'node:fs';import os from 'node:os';import path from 'node:path';import crypto from 'node:crypto';import {LivingLamp} from './living-lamp.mjs';
|
|
test('machine cannot light lamp without paired living echo; lit current routes answer and dark routes refuse',()=>{const root=fs.mkdtempSync(path.join(os.tmpdir(),'living-lamp-'));try{const key=crypto.generateKeyPairSync('ed25519').privateKey,nav=path.join(root,'nav.json');fs.writeFileSync(nav,JSON.stringify({sha256:'map',routes:[{id:'ICE-P-ZY001',name:'铸渊',kind:'persona',state:'CURRENT',route:'glw://persona/ICE-P-ZY001',lamp:'LIT_ELIGIBLE'}]}));const lamp=new LivingLamp({root,key,navigationPath:nav,scope:'FIFTH_DOMAIN'});assert.throws(()=>lamp.ignite({schema:'guanghu.linguistic-echo/v1',session_id:'s',scope:'FIFTH_DOMAIN'}),/human_language/);const now=Date.now(),signed=lamp.ignite({schema:'guanghu.linguistic-echo/v1',session_id:'s',scope:'FIFTH_DOMAIN',human_language:{event_id:'h',human_id:'ICE-GL∞',sha256:'a'.repeat(64),occurred_at:now-2},persona_echo:{event_id:'p',persona_id:'ICE-P-ZY001',sha256:'b'.repeat(64),occurred_at:now-1}}),id=JSON.parse(signed.payload).lamp_id;assert.equal(lamp.ask({lamp_id:id,query:'ICE-P-ZY001'}).routes[0].route,'glw://persona/ICE-P-ZY001');assert.equal(lamp.ask({lamp_id:id,query:'OLD-PATH'}).state,'DARK_OR_UNKNOWN_DO_NOT_WALK');}finally{fs.rmSync(root,{recursive:true,force:true});}});
|