@lit-protocol/e2e
Version:
Lit Protocol E2E testing package for running comprehensive integration tests
132 lines • 5.22 kB
JavaScript
import { createAuthManager, generateSessionKeyPair, storagePlugins, } from '@lit-protocol/auth';
import { createLitClient } from '@lit-protocol/lit-client';
import { naga, nagaDev, nagaLocal, nagaProto, nagaStaging, nagaTest, } from '@lit-protocol/networks';
import { privateKeyToAccount } from 'viem/accounts';
export const CONFIG = {
LOCAL: {
nativeFundingAmount: '1',
ledgerDepositAmount: '2',
sponsorshipLimits: {
totalMaxPriceInWei: '50000000000000000',
userMaxPrice: 50000000000000000n,
},
},
LIVE: {
nativeFundingAmount: process.env['LIVE_NETWORK_FUNDING_AMOUNT'] ?? '5',
ledgerDepositAmount: process.env['LIVE_NETWORK_LEDGER_DEPOSIT_AMOUNT'] ?? '5',
sponsorshipLimits: {
totalMaxPriceInWei: process.env['LIVE_NETWORK_SPONSORSHIP_TOTAL_MAX_PRICE_IN_WEI'] ??
'5000000000000000000',
userMaxPrice: BigInt(process.env['LIVE_NETWORK_SPONSORSHIP_USER_MAX_PRICE_IN_WEI'] ??
'5000000000000000000'),
},
},
MAINNET: {
nativeFundingAmount: '0.01',
ledgerDepositAmount: '0.01',
sponsorshipLimits: {
// The mainnet payment delegation flow uses this as the per-request budget and
// must be large enough to cover the minimum estimated price for a PKP sign.
totalMaxPriceInWei: '60000000000000000000',
userMaxPrice: 60000000000000000000n,
},
},
};
const NAGA_MAINNET_NETWORK_FUNDING_AMOUNT = process.env['NAGA_MAINNET_NETWORK_FUNDING_AMOUNT'] ?? '20';
const NAGA_PROTO_NETWORK_FUNDING_AMOUNT = process.env['NAGA_PROTO_NETWORK_FUNDING_AMOUNT'] ?? '0.01';
const NAGA_MAINNET_LEDGER_DEPOSIT_AMOUNT = process.env['NAGA_MAINNET_LEDGER_DEPOSIT_AMOUNT'] ?? '60';
const NAGA_PROTO_LEDGER_DEPOSIT_AMOUNT = process.env['NAGA_PROTO_LEDGER_DEPOSIT_AMOUNT'] ?? '0.01';
export const createTestEnv = async (envVars) => {
// -- 1. Create network module
const applyRpcOverride = (networkModule) => {
if (!envVars.rpcUrl) {
return networkModule;
}
console.log(`🔧 Overriding RPC URL for ${envVars.network} to ${envVars.rpcUrl}`);
return networkModule.withOverrides({
rpcUrl: envVars.rpcUrl,
});
};
let networkModule;
let config;
switch (envVars.network) {
case 'naga-local': {
if (!envVars.localContextPath) {
throw new Error('naga-local requires a valid local context path to be configured');
}
networkModule = applyRpcOverride(nagaLocal.withLocalContext({
networkContextPath: envVars.localContextPath,
networkName: 'naga-local',
}));
config = CONFIG.LOCAL;
break;
}
case 'naga-dev':
case 'naga-test':
case 'naga-staging': {
if (envVars.network === 'naga-dev') {
networkModule = nagaDev;
}
else if (envVars.network === 'naga-test') {
networkModule = nagaTest;
}
else {
networkModule = nagaStaging;
}
networkModule = applyRpcOverride(networkModule);
config = CONFIG.LIVE;
break;
}
case 'naga-proto':
case 'naga': {
networkModule = applyRpcOverride(envVars.network === 'naga-proto' ? nagaProto : naga);
config =
envVars.network === 'naga'
? {
...CONFIG.MAINNET,
nativeFundingAmount: NAGA_MAINNET_NETWORK_FUNDING_AMOUNT,
ledgerDepositAmount: NAGA_MAINNET_LEDGER_DEPOSIT_AMOUNT,
}
: {
...CONFIG.MAINNET,
nativeFundingAmount: NAGA_PROTO_NETWORK_FUNDING_AMOUNT,
ledgerDepositAmount: NAGA_PROTO_LEDGER_DEPOSIT_AMOUNT,
};
break;
}
default: {
const exhaustiveCheck = envVars.network;
throw new Error(`Unsupported network: ${exhaustiveCheck}`);
}
}
// 2. Create Lit Client
const litClient = await createLitClient({
network: networkModule,
});
// 3. Create auth manager
const authManager = createAuthManager({
storage: storagePlugins.localStorageNode({
appName: `my-${envVars.network}-e2e-test-app`,
networkName: `${envVars.network}-e2e-tests`,
storagePath: './.e2e/e2e-tests-storage',
}),
});
// 4. Create master account
const masterAccount = privateKeyToAccount(envVars.privateKey);
// 5. Create master payer account
const masterPaymentManager = await litClient.getPaymentManager({
account: masterAccount,
});
// --- This info are used by wrapped keys tests ---
const sessionKeyPair = generateSessionKeyPair();
return {
masterAccount,
masterPaymentManager,
networkModule,
litClient,
authManager,
config,
sessionKeyPair,
};
};
//# sourceMappingURL=createTestEnv.js.map