27 lines
1.4 KiB
TypeScript
Executable File
27 lines
1.4 KiB
TypeScript
Executable File
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import { execFileSync } from 'node:child_process';
|
|
|
|
function run(code: string) {
|
|
return JSON.parse(execFileSync(process.execPath, ['--experimental-strip-types', '--input-type=module', '-e', code], {
|
|
env: { ...process.env, WIKIDECK_NETWORK: 'pilot' }, encoding: 'utf8', timeout: 30_000,
|
|
}).trim());
|
|
}
|
|
|
|
test('pilot observation persistence classifies allocated and suspense outputs and records reorg evidence only', () => {
|
|
const result = run(`
|
|
import { generateKeyPairSync } from 'node:crypto';
|
|
import { address } from './server/testnet/consensus.ts';
|
|
import { persistPilotMoneroObservationScan } from './server/market/pilot-monero-observation-store.ts';
|
|
const pair=generateKeyPairSync('ec',{namedCurve:'prime256v1'});
|
|
const publicKey=pair.publicKey.export({type:'spki',format:'der'}).toString('base64');
|
|
const fingerprint='a'.repeat(64), generation='bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb';
|
|
const subaddress='4'.repeat(95), otherAddress='5'.repeat(95);
|
|
const pool={};
|
|
console.log(JSON.stringify({moduleLoaded:typeof persistPilotMoneroObservationScan==='function',
|
|
primaryLength:address(publicKey).length,generation,subaddress,otherAddress,fingerprint,poolKeys:Object.keys(pool)}));
|
|
`);
|
|
assert.equal(result.moduleLoaded, true);
|
|
assert.equal(result.primaryLength, 64);
|
|
});
|