@lit-protocol/e2e
Version:
Lit Protocol E2E testing package for running comprehensive integration tests
97 lines โข 5.36 kB
JavaScript
export const createPaymentManagerFlowTest = (ctx, getAuthContext) => {
return async () => {
console.log('๐ฆ Testing Payment Manager flow');
const authContext = getAuthContext();
const paymentManager = await ctx.litClient.getPaymentManager({
account: ctx.aliceViemAccount,
});
// Get the user's address from authContext (assuming it has a wallet or account)
const userAddress = authContext.wallet?.account?.address ||
authContext.account?.address ||
ctx.aliceViemAccount.address;
console.log('๐ฐ Testing deposit functionality...');
// Test deposit
const depositAmount = '0.00001'; // Very small amount for testing (account only has 0.0001 ETH)
const depositResult = await paymentManager.deposit({
amountInLitkey: depositAmount,
});
expect(depositResult.hash).toBeDefined();
expect(depositResult.receipt).toBeDefined();
console.log('โ
Deposit successful:', depositResult.hash);
console.log('๐ Testing balance checking...');
// Check balance after deposit
const balanceInfo = await paymentManager.getBalance({ userAddress });
expect(balanceInfo.totalBalance).toBeDefined();
expect(balanceInfo.availableBalance).toBeDefined();
expect(Number(balanceInfo.raw.totalBalance)).toBeGreaterThan(0);
console.log('๐ฐ Current balance:', balanceInfo.totalBalance, 'ETH');
console.log('๐ณ Available balance:', balanceInfo.availableBalance, 'ETH');
console.log('๐ Testing withdrawal request...');
// Test withdrawal request
const withdrawAmount = '0.000005'; // Half of deposited amount
const withdrawRequestResult = await paymentManager.requestWithdraw({
amountInLitkey: withdrawAmount,
});
expect(withdrawRequestResult.hash).toBeDefined();
expect(withdrawRequestResult.receipt).toBeDefined();
console.log('โ
Withdrawal request successful:', withdrawRequestResult.hash);
console.log('๐ Testing withdrawal request status...');
// Check withdrawal request status
const withdrawRequestInfo = await paymentManager.getWithdrawRequest({
userAddress,
});
expect(withdrawRequestInfo.isPending).toBe(true);
expect(withdrawRequestInfo.amount).toBe(withdrawAmount);
expect(Number(withdrawRequestInfo.timestamp)).toBeGreaterThan(0);
console.log('โฐ Withdrawal request timestamp:', withdrawRequestInfo.timestamp);
console.log('๐ธ Withdrawal request amount:', withdrawRequestInfo.amount, 'ETH');
console.log('โฑ๏ธ Testing withdrawal delay...');
// Get withdrawal delay
const delayInfo = await paymentManager.getWithdrawDelay();
expect(delayInfo.delaySeconds).toBeDefined();
expect(Number(delayInfo.raw)).toBeGreaterThan(0);
console.log('โณ Withdrawal delay:', delayInfo.delaySeconds, 'seconds');
console.log('๐ Testing withdrawal execution check...');
// Check if withdrawal can be executed
const canExecuteInfo = await paymentManager.canExecuteWithdraw({
userAddress,
});
expect(canExecuteInfo.canExecute).toBeDefined();
expect(canExecuteInfo.withdrawRequest.isPending).toBe(true);
if (canExecuteInfo.canExecute) {
console.log('โ
Withdrawal can be executed immediately');
console.log('๐ธ Testing withdrawal execution...');
// Execute withdrawal if possible
const withdrawResult = await paymentManager.withdraw({
amountInLitkey: withdrawAmount,
});
expect(withdrawResult.hash).toBeDefined();
expect(withdrawResult.receipt).toBeDefined();
console.log('โ
Withdrawal executed successfully:', withdrawResult.hash);
// Check balance after withdrawal
const finalBalanceInfo = await paymentManager.getBalance({ userAddress });
console.log('๐ Final balance:', finalBalanceInfo.totalBalance, 'ETH');
}
else {
console.log('โฑ๏ธ Withdrawal cannot be executed yet. Time remaining:', canExecuteInfo.timeRemaining, 'seconds');
}
console.log('๐งช Testing deposit for user functionality...');
// Test deposit for another user (using alice's address as target)
const targetUserAddress = ctx.aliceViemAccount.address;
const depositForUserResult = await paymentManager.depositForUser({
userAddress: targetUserAddress,
amountInLitkey: '0.00001',
});
expect(depositForUserResult.hash).toBeDefined();
expect(depositForUserResult.receipt).toBeDefined();
console.log('โ
Deposit for user successful:', depositForUserResult.hash);
// Check target user's balance
const targetUserBalance = await paymentManager.getBalance({
userAddress: targetUserAddress,
});
expect(Number(targetUserBalance.raw.totalBalance)).toBeGreaterThan(0);
console.log('๐ฐ Target user balance:', targetUserBalance.totalBalance, 'ETH');
console.log('โ
Payment Manager flow test completed successfully!');
};
};
//# sourceMappingURL=payment-manager-flow.js.map