ln-sync
Version:
LN metadata persistence methods
97 lines (87 loc) • 4.32 kB
JavaScript
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;
});
});