UNPKG

lightning

Version:
75 lines (62 loc) 2.03 kB
const EventEmitter = require('node:events'); const {strictEqual} = require('node:assert').strict; const test = require('node:test'); const {throws} = require('node:assert').strict; const {Transaction} = require('bitcoinjs-lib'); const {subscribeToChainSpend} = require('./../../../lnd_methods'); const tests = [ { args: { min_height: 100, output_script: 'a914898ffd60ad6091221250047a9f2bd6456190263487', transaction_id: Buffer.alloc(32).toString('hex'), transaction_vout: 0, }, description: 'Confirmation emitted for chain spend', expected: { height: 200, transaction: (new Transaction()).toHex(), vin: 0, }, }, { args: {}, description: 'An lnd is required', error: 'ExpectedLndGrpcApiToSubscribeToSpendConfirmations', }, { args: {lnd: {chain: {registerSpendNtfn: () => {}}}}, description: 'Min height is required', error: 'ExpectedMinHeightToSubscribeToChainSpend', }, { args: {lnd: {chain: {registerSpendNtfn: () => {}}}, min_height: 1}, description: 'An address or output script is required', error: 'ExpectedRecognizedAddressFormatToWatchForSpend', }, ]; tests.forEach(({args, description, error, expected}) => { return test(description, (t, end) => { if (!!error) { throws(() => subscribeToChainSpend(args), new Error(error), 'Got error'); return end(); } const emitter = new EventEmitter(); args.lnd = {chain: {registerSpendNtfn: ({}) => emitter}}; const sub = subscribeToChainSpend(args); sub.on('confirmation', ({height, transaction, vin}) => { strictEqual(height, expected.height, 'Got height'); strictEqual(transaction, expected.transaction, 'Got transaction'); strictEqual(vin, expected.vin, 'Got vin'); return end(); }); emitter.emit('data', { spend: { raw_spending_tx: (new Transaction()).toBuffer(), spending_height: 200, spending_input_index: 0, }, }); return; }); });