UNPKG

ln-sync

Version:
97 lines (87 loc) 4.32 kB
const {deepEqual} = require('node:assert').strict; const {makeLnd} = require('mock-lnd'); const {rejects} = require('node:assert').strict; const test = require('node:test'); const {Transaction} = require('bitcoinjs-lib'); const {getFundedTransaction} = require('./../../'); const method = getFundedTransaction; const makeArgs = overrides => { const args = { ask: ({}, cbk) => cbk({ rate: 1, fund: new Transaction().toHex(), }), lnd: makeLnd({}), logger: {info: () => {}}, outputs: [{ address: 'tb1qzmswhxxwxvhat6ke3wu27gqqxn4qxqn6qwarwkz6lmky3l3jqjfqy5wl9x', tokens: 1, }], }; Object.keys(overrides).forEach(k => args[k] = overrides[k]); return args; }; const tests = [ { args: makeArgs({ask: undefined}), description: 'An ask function is required.', error: [400, 'ExpectedAskFunctionToGetFundedTransaction'], }, { args: makeArgs({lnd: undefined}), description: 'An LND connection is required.', error: [400, 'ExpectedAuthenticatedLndApiToGetFundedTx'], }, { args: makeArgs({logger: undefined}), description: 'A logger object is required.', error: [400, 'ExpectedWinstonLoggerToGetFundedTransaction'], }, { args: makeArgs({outputs: undefined}), description: 'Funding outputs are required.', error: [400, 'ExpectedArrayOfOutputsToGetFundedTransaction'], }, { args: makeArgs({}), description: 'Got funded transaction', expected: { id: 'd21633ba23f70118185227be58a63527675641ad37967e2aa461559f577aec43', transaction: '01000000000000000000', }, }, { args: makeArgs({is_external: false}), description: 'Got internally funded transaction', expected: { id: '1dea7cd05979072a3578cab271c02244ea8a090bbb46aa680a65ecd027048d83', inputs: [ { lock_expires_at: '1970-01-01T00:00:01.000Z', lock_id: '0000000000000000000000000000000000000000000000000000000000000000', transaction_id: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858', transaction_vout: 0, }, { lock_expires_at: undefined, lock_id: undefined, transaction_id: '1dea7cd05979072a3578cab271c02244ea8a090bbb46aa680a65ecd027048d83', transaction_vout: 1, } ], psbt: '70736274ff0100a00200000002ab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40000000000feffffffab0949a08c5af7c49b8212f417e2f15ab3f5c33dcf153821a8139f877a5b7be40100000000feffffff02603bea0b000000001976a914768a40bbd740cbe81d988e71de2a4d5c71396b1d88ac8e240000000000001976a9146f4620b553fa095e721b9ee0efe9fa039cca459788ac00000000000100df0200000001268171371edff285e937adeea4b37b78000c0566cbb3ad64641713ca42171bf6000000006a473044022070b2245123e6bf474d60c5b50c043d4c691a5d2435f09a34a7662a9dc251790a022001329ca9dacf280bdf30740ec0390422422c81cb45839457aeb76fc12edd95b3012102657d118d3357b8e0f4c2cd46db7b39f6d9c38d9a70abcb9b2de5dc8dbfe4ce31feffffff02d3dff505000000001976a914d0c59903c5bac2868760e90fd521a4665aa7652088ac00e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787b32e13000001012000e1f5050000000017a9143545e6e33b832c47050f24d3eeb93c9c03948bc787010416001485d13537f2e265405a34dbafa9e3dda01fb8230800220202ead596687ca806043edc3de116cdf29d5e9257c196cd055cf698c8d02bf24e9910b4a6ba670000008000000080020000800022020394f62be9df19952c5587768aeb7698061ad2c4a25c894f47d8c162b4d7213d0510b4a6ba6700000080010000800200008000', transaction: '0200000000010158e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd7501000000171600145f275f436b09a8cc9a2eb2a2f528485c68a56323feffffff02d8231f1b0100000017a914aed962d6654f9a2b36608eb9d64d2b260db4f1118700c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88702483045022100a22edcc6e5bc511af4cc4ae0de0fcd75c7e04d8c1c3a8aa9d820ed4b967384ec02200642963597b9b1bc22c75e9f3e117284a962188bf5e8a74c895089046a20ad770121035509a48eb623e10aace8bfd0212fdb8a8e5af3c94b0b133b95e114cab89e4f7965000000', }, }, ]; tests.forEach(({args, description, error, expected}) => { return test(description, async () => { if (!!error) { await rejects(method(args), error, 'Got expected error'); } else { const got = await method(args); deepEqual(got, expected, 'Got expected result'); } return; }); });