lightning
Version:
Lightning Network client library
99 lines (88 loc) • 2.94 kB
JavaScript
const {deepStrictEqual} = require('node:assert').strict;
const {rejects} = require('node:assert').strict;
const test = require('node:test');
const {getPathfindingSettings} = require('./../../../lnd_methods');
const makeLnd = ({config, empty, err, overrides}) => {
if (!!empty) {
return {router: {getMissionControlConfig: ({}, cbk) => cbk()}};
}
const res = {
config: {
half_life_seconds: 1,
hop_probability: 0.6,
maximum_payment_results: 10,
weight: 0.5,
},
};
Object.keys(overrides || {}).forEach(key => res[key] = overrides[key]);
Object.keys(config || {}).forEach(key => res.config[key] = config[key]);
return {router: {getMissionControlConfig: ({}, cbk) => cbk(err, res)}};
};
const tests = [
{
args: {},
description: 'LND is expected to get pathfinding settings',
error: [400, 'ExpectedLndToGetPathfindingSettings'],
},
{
args: {lnd: makeLnd({err: {details: 'unknown method'}})},
description: 'An unsupported error is returned',
error: [501, 'GetMissionControlConfigMethodNotSupported'],
},
{
args: {lnd: makeLnd({err: 'err'})},
description: 'An error is returned',
error: [503, 'UnexpectedErrorGettingPathSettings', {err: 'err'}],
},
{
args: {lnd: makeLnd({empty: true})},
description: 'A response is expected',
error: [503, 'ExpectedPathfindingSettingsResponse'],
},
{
args: {lnd: makeLnd({overrides: {config: undefined}})},
description: 'A config is expected',
error: [503, 'ExpectedPathfindingSettingsConfigInResponse'],
},
{
args: {lnd: makeLnd({config: {half_life_seconds: undefined}})},
description: 'Half life seconds are expected',
error: [503, 'ExpectedHalfLifeSecondsInSettingsResponse'],
},
{
args: {lnd: makeLnd({config: {hop_probability: undefined}})},
description: 'Hop probability is expected',
error: [503, 'ExpectedAssumedHopPriorityInSettingsResponse'],
},
{
args: {lnd: makeLnd({config: {maximum_payment_results: undefined}})},
description: 'Max payments are expected',
error: [503, 'ExpectedMaximumPaymentResultsInConfigResponse'],
},
{
args: {lnd: makeLnd({config: {weight: undefined}})},
description: 'Node reputation weight is expected',
error: [503, 'ExpectedWeightInSettingsConfigResponse'],
},
{
args: {lnd: makeLnd({})},
description: 'Pathfinding configuration is returned',
expected: {
baseline_success_rate: 600000,
max_payment_records: 10,
node_ignore_rate: 500000,
penalty_half_life_ms: 1000,
},
},
];
tests.forEach(({args, description, error, expected}) => {
return test(description, async () => {
if (!!error) {
await rejects(() => getPathfindingSettings(args), error, 'Got error');
} else {
const res = await getPathfindingSettings(args);
deepStrictEqual(res, expected, 'Got expected result');
}
return;
});
});