lightning
Version:
Lightning Network client library
67 lines (59 loc) • 1.87 kB
JavaScript
const {deepStrictEqual} = require('node:assert').strict;
const {rejects} = require('node:assert').strict;
const test = require('node:test');
const {getNetworkCentrality} = require('./../../../');
const makeLnd = ({err, res}) => {
const response = {
betweenness_centrality: {'00': {value: 0.5, normalized_value: 0.1}},
};
const r = res !== undefined ? res : response;
return {default: {getNodeMetrics: ({}, cbk) => cbk(err, r)}};
};
const tests = [
{
args: {},
description: 'LND is required to get network centrality',
error: [400, 'ExpectedAuthenticatedLndApiToGetCentrality'],
},
{
args: {lnd: makeLnd({err: {details: 'unknown service lnrpc.Lightning'}})},
description: 'Method unsupported error returns error code',
error: [501, 'ExpectedServerSupportForNodeMetricsMethod'],
},
{
args: {lnd: makeLnd({err: 'err'})},
description: 'Unexpected error returns error',
error: [503, 'UnexpectedErrorGettingCentrality', {err: 'err'}],
},
{
args: {lnd: makeLnd({res: null})},
description: 'A response is expected',
error: [503, 'ExpectedResultWhenGettingNetworkCentrality'],
},
{
args: {lnd: makeLnd({res: {}})},
description: 'A response with centrality is expected',
error: [503, 'ExpectedBetweennessCentralityInGetCentrality'],
},
{
args: {lnd: makeLnd({})},
description: 'Network centrality is returned',
expected: {
nodes: [{
betweenness: 5e5,
betweenness_normalized: 1e5,
public_key: '00',
}],
},
},
];
tests.forEach(({args, description, error, expected}) => {
return test(description, async () => {
if (!!error) {
await rejects(() => getNetworkCentrality(args), error, 'Got error');
} else {
deepStrictEqual(await getNetworkCentrality(args), expected, 'Got res');
}
return;
});
});