ln-service
Version:
Interaction helper for your Lightning Network daemon
70 lines (49 loc) • 2 kB
JavaScript
const {deepStrictEqual} = require('node:assert').strict;
const {rejects} = require('node:assert').strict;
const test = require('node:test');
const {spawnLightningCluster} = require('ln-docker-daemons');
const {createChainAddress} = require('./../../');
const {grantAccess} = require('./../../');
const format = 'np2wpkh';
// Granting access should result in access granted
test(`Get access credentials`, async () => {
const [{lnd, kill, rpc}] = (await spawnLightningCluster({})).nodes;
await grantAccess({lnd, is_ok_to_create_chain_addresses: true});
const makeChainAddresses = await grantAccess({
lnd,
is_ok_to_create_chain_addresses: true,
permissions: ['address:read'],
});
const permissions = ['address:write', 'address:read'];
deepStrictEqual(makeChainAddresses.permissions, permissions, 'Permissions');
const canPay = rpc({
macaroon: (await grantAccess({lnd, is_ok_to_pay: true})).macaroon,
});
const makeAddress = rpc({macaroon: makeChainAddresses.macaroon});
await rejects(
grantAccess({lnd: makeAddress.lnd, is_ok_to_create_chain_addresses: true}),
[403, 'PermissionDeniedToBakeMacaroon'],
'Cannot grant access using a non-generate macaroon'
);
await rejects(
createChainAddress({format, lnd: canPay.lnd}),
[503, 'UnexpectedErrorCreatingAddress'],
'Cannot create a chain address using an offchain pay macaroon'
);
const {address} = await createChainAddress({format, lnd: makeAddress.lnd});
deepStrictEqual(!!address, true, 'Can make address with proper credential');
const createChainAddressCredential = await grantAccess({
lnd,
methods: ['createChainAddress'],
});
const authenticatedToCreateAddress = rpc({
macaroon: createChainAddressCredential.macaroon,
});
const created = await createChainAddress({
format,
lnd: authenticatedToCreateAddress.lnd,
});
deepStrictEqual(!!created, true, 'Can make address with URI credential');
await kill({});
return;
});