lightning
Version:
Lightning Network client library
102 lines (93 loc) • 2.83 kB
JavaScript
const {strictEqual} = require('node:assert').strict;
const test = require('node:test');
const {throws} = require('node:assert').strict;
const {rpcRouteAsRoute} = require('./../../lnd_responses');
const makeRoute = override => {
const route = {
hops: [{
amt_to_forward_msat: '1000',
chan_id: '1',
chan_capacity: 1,
expiry: 1,
fee_msat: '1000',
mpp_record: {payment_addr: Buffer.alloc(1), total_amt_msat: '1'},
pub_key: 'a',
tlv_payload: true,
}],
total_amt_msat: '1000',
total_fees_msat: '1000',
total_time_lock: 1,
};
Object.keys(override).forEach(key => route[key] = override[key]);
return route;
};
const tests = [
{
args: null,
description: 'A rpc hop is required to map to a hop',
error: 'ExpectedRpcRouteToDeriveRouteDetailsFor',
},
{
args: makeRoute({hops: null}),
description: 'A hops array is expected',
error: 'ExpectedRouteHopsArrayInRpcRouteDetails',
},
{
args: makeRoute({total_amt_msat: undefined}),
description: 'Forward amount msat is expected',
error: 'ExpectedTotalForwardAmountMillitokensValueForRoute',
},
{
args: makeRoute({total_fees_msat: undefined}),
description: 'Routing fees millitokens is expected',
error: 'ExpectedTotalRoutingFeesInRpcRouteDetails',
},
{
args: makeRoute({}),
description: 'Route is returned',
expected: {
fee: 1,
fee_mtokens: '1000',
mtokens: '1000',
payment: '00',
timeout: 1,
total_mtokens: '1',
},
},
{
args: makeRoute({hops: [], total_time_lock: undefined}),
description: 'Route without anything',
expected: {fee: 1, fee_mtokens: '1000', mtokens: '1000'},
},
{
args: makeRoute({
hops: [{
amt_to_forward_msat: '1000',
chan_id: '1',
chan_capacity: 1,
expiry: 1,
fee_msat: '1000',
pub_key: 'a',
tlv_payload: false,
}],
}),
description: 'Route without MPP is returned',
expected: {fee: 1, fee_mtokens: '1000', mtokens: '1000', timeout: 1},
},
];
tests.forEach(({args, description, error, expected}) => {
return test(description, (t, end) => {
if (!!error) {
throws(() => rpcRouteAsRoute(args), new Error(error), 'Got error');
} else {
const route = rpcRouteAsRoute(args);
strictEqual(route.fee, expected.fee, 'Got expected fee');
strictEqual(route.fee_mtokens, expected.fee_mtokens, 'Got fee mtok');
strictEqual(route.mtokens, expected.mtokens, 'Got expected millitokens');
strictEqual(route.payment, expected.payment, 'Got expected payment');
strictEqual(route.timeout, expected.timeout, 'Got expected timeout');
strictEqual(route.total_mtokens, expected.total_mtokens, 'Got total');
}
return end();
});
});