diff --git a/test/InterchainTokenService.js b/test/InterchainTokenService.js index d99cbddd..1c477082 100644 --- a/test/InterchainTokenService.js +++ b/test/InterchainTokenService.js @@ -1258,6 +1258,18 @@ describe('Interchain Token Service', () => { ); }); + it(`Should revert on initiate interchain token transfer with zero amount`, async () => { + await expectRevert( + (gasOptions) => + service.interchainTransfer(tokenId, destinationChain, destAddress, 0, '0x', gasValue, { + ...gasOptions, + value: gasValue, + }), + service, + 'ZeroAmount', + ); + }); + it(`Should revert on initiate interchain token transfer when service is paused`, async () => { await service.setPauseStatus(true).then((tx) => tx.wait); @@ -1638,6 +1650,16 @@ describe('Interchain Token Service', () => { .withArgs(tokenId, sourceAddress, destinationChain, destAddress, sendAmount, HashZero); }); + it(`Should revert on callContractWithInterchainToken function on the service if amount is 0`, async () => { + const [, , tokenId] = await deployFunctions.lockUnlock(`Test Token`, 'TT', 12, amount); + + await expectRevert( + (gasOptions) => service.callContractWithInterchainToken(tokenId, destinationChain, destAddress, 0, data, 0, gasOptions), + service, + 'ZeroAmount', + ); + }); + for (const type of ['lockUnlock', 'lockUnlockFee']) { it(`Should be able to initiate an interchain token transfer via the interchainTransfer function on the service when the service is approved as well [${type}]`, async () => { const [token, tokenManager, tokenId] = await deployFunctions[type](`Test Token ${type}`, 'TT', 12, amount); @@ -2030,6 +2052,24 @@ describe('Interchain Token Service', () => { .withArgs(tokenId, sender.address, destinationChain, destAddress, sendAmount, HashZero); }); + it(`Should revert using interchainTransferFrom with zero amount`, async () => { + const sender = wallet; + const spender = otherWallet; + await token.approve(spender.address, MaxUint256).then((tx) => tx.wait); + + await expectRevert( + (gasOptions) => + token + .connect(spender) + .interchainTransferFrom(sender.address, destinationChain, destAddress, 0, metadata, { + value: gasValue, + ...gasOptions, + }), + service, + 'ZeroAmount', + ); + }); + it(`Should be able to initiate an interchain token transfer via interchainTransfer & interchainTransferFrom [gateway]`, async () => { const symbol = 'TT2'; [token, tokenManager, tokenId] = await deployFunctions.gateway(`Test Token gateway`, symbol, 12, amount * 3, true);