ln-service
Version:
Interaction helper for your Lightning Network daemon
83 lines (59 loc) • 2.19 kB
JavaScript
const {deepEqual} = require('node:assert').strict;
const {equal} = require('node:assert').strict;
const test = require('node:test');
const asyncRetry = require('async/retry');
const {spawnLightningCluster} = require('ln-docker-daemons');
const {broadcastChainTransaction} = require('./../../');
const {createChainAddress} = require('./../../');
const {deleteChainTransaction} = require('./../../');
const {fundPsbt} = require('./../../');
const {getChainTransactions} = require('./../../');
const {getWalletInfo} = require('./../../');
const {signPsbt} = require('./../../');
const count = 100;
const defaultFee = 1e3;
const format = 'np2wpkh';
const interval = 100;
const times = 300;
const tokens = 1e6;
// Deleting a chain transaction should delete the chain transactions
test(`Delete chain transaction`, async () => {
const {kill, nodes} = await spawnLightningCluster({});
const [{generate, lnd}] = nodes;
// Generate some funds for LND
await generate({count});
await asyncRetry({interval: 10, times: 6000}, async () => {
const wallet = await getWalletInfo({lnd});
if (!wallet.is_synced_to_chain) {
throw new Error('ExpectedWalletSyncedToChain');
}
await generate({});
if (wallet.current_block_height < count + 1) {
throw new Error('ExpectedFullySyncedToChain');
}
});
// Wait for generation to be over
const tx = await asyncRetry({times}, async () => {
const {transactions} = await getChainTransactions({lnd});
const [tx] = transactions;
if (!tx.is_confirmed) {
throw new Error('ExpectedTransactionConfirmed');
}
return tx;
});
const {address} = await createChainAddress({lnd});
const funded = await asyncRetry({interval, times}, async () => {
await generate({});
return await fundPsbt({lnd, outputs: [{address, tokens}]});
});
const {transaction} = await signPsbt({lnd, psbt: funded.psbt});
const {id} = await broadcastChainTransaction({lnd, transaction});
try {
await deleteChainTransaction({id, lnd});
await kill({});
} catch (err) {
await kill({});
deepEqual(err, [501, 'RemoveChainTransactionMethodNotSupported'], 'None');
}
return;
});