Files
AtreidesAssetsFree/tests/price/wallet-scanner.test.mjs
T

44 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

2026-10-29 11:57:29 +01:00
// Generated, do not edit. sha256:5b9dd8675758ba64b85bca5e16a855027af470810bba49c97e909a501ef3fbbd
import { describe, it, mock } from 'node:test';
import assert from 'node:assert/strict';
import { createDbHarness } from '../helpers/db-node.mjs';
const harness = createDbHarness();
mock.module('../../server/db.js', { namedExports: harness.exports });
const { firstReceiveAddress } = await import('../../client/price/wallet-scanner.js');
const VECTOREN = [
['p2pkh',
'xpub6BosfCnifzxcFwrSzQiqu2DBVTshkCXacvNsWGYJVVhhawA7d4R5WSWGFNbi8Aw6ZRc1brxMyWMzG3DSSSSoekkudhUd9yLb6qx39T9nMdj',
'1LqBGSKuX5yYUonjxT5qGfpUsXKYYWeabA'],
['p2sh-p2wpkh',
'ypub6Ww3ibxVfGzLrAH1PNcjyAWenMTbbAosGNB6VvmSEgytSER9azLDWCxoJwW7Ke7icmizBMXrzBx9979FfaHxHcrArf3zbeJJJUZPf663zsP',
'37VucYSaXLCAsxYyAPfbSi9eh4iEcbShgf'],
['p2wpkh',
'zpub6rFR7y4Q2AijBEqTUquhVz398htDFrtymD9xYYfG1m4wAcvPhXNfE3EfH1r1ADqtfSdVCToUG868RvUUkgDKf31mGDtKsAYz2oz2AGutZYs',
'bc1qcr8te4kr609gcawutmrza0j4xv80jy8z306fyu'],
['p2tr',
'xpub6BgBgsespWvERF3LHQu6CnqdvfEvtMcQjYrcRzx53QJjSxarj2afYWcLteoGVky7D3UKDP9QyrLprQ3VCECoY49yfdDEHGCtMMj92pReUsQ',
'bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr'],
];
describe('firstReceiveAddress: BIP-testvectoren via de gevendorde noble/scure-bundel', () => {
for (const [scriptType, extKey, verwacht] of VECTOREN) {
it(`leidt het eerste ontvangstadres af voor ${scriptType}`, () => {
assert.equal(firstReceiveAddress(extKey, scriptType), verwacht);
});
}
it('gooit bij een sleutel met een kapotte checksum (geen stil verkeerd adres)', () => {
const [, zpub] = VECTOREN[2];
const kapot = zpub.slice(0, -1) + (zpub.endsWith('s') ? 't' : 's');
assert.throws(() => firstReceiveAddress(kapot, 'p2wpkh'));
});
it('valt bij een onbekend scripttype terug op p2pkh in plaats van te gooien', () => {
const [, xpub, p2pkhAdres] = VECTOREN[0];
assert.equal(firstReceiveAddress(xpub, 'p2wsh-bestaat-niet'), p2pkhAdres);
});
});