UNPKG

lightning

Version:
102 lines (93 loc) 2.83 kB
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(); }); });