lightning
Version:
Lightning Network client library
86 lines (80 loc) • 2.69 kB
JavaScript
const {equal} = require('node:assert').strict;
const test = require('node:test');
const {throws} = require('node:assert').strict;
const {paymentAmounts} = require('./../../bolt00');
const tests = [
{
args: {},
description: 'An amount to send is required',
error: 'ExpectedAmountFromRequestOrMillitokensOrTokens',
},
{
args: {max_fee_mtokens: 0},
description: 'Max fee mtokens must be specified as a string',
error: 'ExpectedMaxFeeMtokensValueAsString',
},
{
args: {max_fee: 1, max_fee_mtokens: '2', tokens: 1},
description: 'Max fee mtokens cannot contradict max fee',
error: 'UnexpectedDifferingMaxFeeAndMaxFeeMtokens',
},
{
args: {mtokens: '2', tokens: 1},
description: 'Mtokens cannot contradict tokens',
error: 'UnexpectedDifferingMtokensAndTokens',
},
{
args: {max_fee: 1, max_fee_mtokens: '1000', tokens: 1},
description: 'Max fee mtokens can be the same as max fee',
expected: {max_fee: 1, tokens: 1},
},
{
args: {max_fee: 1, tokens: 1},
description: 'Can just set max fee by itself',
expected: {max_fee: 1, tokens: 1},
},
{
args: {max_fee_mtokens: '2', tokens: 1},
description: 'Can just set max fee mtokens by itself',
expected: {max_fee_mtokens: '2', tokens: 1},
},
{
args: {tokens: 1},
description: 'Not specifying a max fee results in unlimited fee',
expected: {max_fee: Number.MAX_SAFE_INTEGER, tokens: 1},
},
{
args: {mtokens: '1000', tokens: 1},
description: 'Setting mtokens and tokens results in set tokens',
expected: {max_fee: Number.MAX_SAFE_INTEGER, tokens: 1},
},
{
args: {mtokens: '1000'},
description: 'Mtokens can be set by itself',
expected: {max_fee: Number.MAX_SAFE_INTEGER, mtokens: '1000'},
},
{
args: {request: 'request'},
description: 'A request can be set instead of tokens',
expected: {max_fee: Number.MAX_SAFE_INTEGER},
},
{
args: {mtokens: '1', request: 'request'},
description: 'Request mtokens can be overridden',
expected: {max_fee: Number.MAX_SAFE_INTEGER, mtokens: '1'},
},
];
tests.forEach(({args, description, error, expected}) => {
return test(description, (t, end) => {
if (!!error) {
throws(() => paymentAmounts(args), new Error(error), 'Got expected err');
} else {
const amounts = paymentAmounts(args);
equal(amounts.max_fee, expected.max_fee, 'Got correct max fee');
equal(amounts.max_fee_mtokens, expected.max_fee_mtokens, 'Got fee mtok');
equal(amounts.mtokens, expected.mtokens, 'Got correct mtokens');
equal(amounts.tokens, expected.tokens, 'Got correct tokens');
}
return end();
});
});