From 40e5c7043026fe5bf90bdc6476a6d4cd35ac8ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Claudio=20Nale?= Date: Fri, 17 Feb 2023 18:59:23 -0300 Subject: [PATCH] Further adjustments to `vm.deal` in forge tests. --- ethereum/forge-test/CoreRelayer.t.sol | 38 +++++++++++++-------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/ethereum/forge-test/CoreRelayer.t.sol b/ethereum/forge-test/CoreRelayer.t.sol index 65b1b5f..f982e8b 100644 --- a/ethereum/forge-test/CoreRelayer.t.sol +++ b/ethereum/forge-test/CoreRelayer.t.sol @@ -567,6 +567,7 @@ contract TestCoreRelayer is Test { uint256 oldBalance = address(setup.target.integration).balance; + vm.deal(address(this), paymentNotEnough); setup.source.integration.sendMessageWithRefundAddress{value: paymentNotEnough}( message, setup.targetChainId, address(setup.target.integration), address(setup.target.refundAddress) ); @@ -596,7 +597,7 @@ contract TestCoreRelayer is Test { newRelayParameters: setup.source.coreRelayer.getDefaultRelayParams() }); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), payment + newMaxTransactionFeeFee); setup.source.coreRelayer.resend{value: payment + newMaxTransactionFeeFee}( redeliveryRequest, 1, address(setup.source.relayProvider) @@ -655,7 +656,7 @@ contract TestCoreRelayer is Test { newRelayParameters: setup.source.coreRelayer.getDefaultRelayParams() }); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), payment + newMaxTransactionFeeFee); setup.source.coreRelayer.resend{value: payment + newMaxTransactionFeeFee}( redeliveryRequest, 1, address(setup.source.relayProvider) @@ -707,6 +708,9 @@ contract TestCoreRelayer is Test { setup.targetChainId, gasParams.targetGasLimit, address(setup.source.relayProvider) ) + uint256(3) * setup.source.wormhole.messageFee(); + // This avoids payment overflow in the target. + vm.assume(payment <= type(uint256).max >> 1); + // start listening to events vm.recordLogs(); @@ -720,7 +724,7 @@ contract TestCoreRelayer is Test { vm.getRecordedLogs(); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), payment); setup.source.integration.sendMessageWithRefundAddress{value: payment}( secondMessage, setup.targetChainId, address(setup.target.integration), address(setup.target.refundAddress) @@ -844,7 +848,7 @@ contract TestCoreRelayer is Test { newReceiverValue: 0, newRelayParameters: setup.source.coreRelayer.getDefaultRelayParams() }); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), stack.payment); vm.expectRevert(abi.encodeWithSignature("MsgValueTooLow()")); setup.source.coreRelayer.resend{value: stack.payment - 1}( stack.redeliveryRequest, 1, address(setup.source.relayProvider) @@ -877,7 +881,7 @@ contract TestCoreRelayer is Test { stack.budget = stack.instruction.newMaximumRefundTarget + stack.instruction.newReceiverValueTarget + setup.target.wormhole.messageFee(); - vm.deal(setup.target.relayer, type(uint256).max >> 2); + vm.deal(setup.target.relayer, stack.budget); vm.prank(setup.target.relayer); vm.expectRevert(abi.encodeWithSignature("InvalidVaa(uint8)", 2)); @@ -923,7 +927,7 @@ contract TestCoreRelayer is Test { setup.target.coreRelayerFull.redeliverSingle{value: stack.budget}(stack.package); setup.source.relayProvider.updateDeliveryAddress(setup.targetChainId, bytes32(uint256(uint160(address(this))))); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), stack.payment); vm.getRecordedLogs(); setup.source.coreRelayer.resend{value: stack.payment}( stack.redeliveryRequest, 1, address(setup.source.relayProvider) @@ -948,6 +952,7 @@ contract TestCoreRelayer is Test { stack.redeliveryVM, stack.originalDelivery.encodedVMs, payable(msg.sender) ); + vm.deal(address(this), stack.budget); bytes32 redeliveryVmHash = relayerWormhole.parseVM(stack.redeliveryVM).hash; vm.expectEmit(true, true, true, true, address(setup.target.coreRelayer)); emit Delivery({ @@ -963,7 +968,7 @@ contract TestCoreRelayer is Test { if (setup.targetChainId == 2) { differentChainId = 3; } - vm.deal(setup.target.relayer, type(uint256).max >> 2); + vm.deal(setup.target.relayer, stack.budget); vm.expectEmit(true, true, true, true, address(map[differentChainId].coreRelayer)); emit Delivery({ recipientContract: address(setup.target.integration), @@ -975,8 +980,6 @@ contract TestCoreRelayer is Test { vm.prank(setup.target.relayer); map[differentChainId].coreRelayerFull.redeliverSingle{value: stack.budget}(stack.package); - vm.deal(setup.target.relayer, type(uint256).max >> 2); - stack.redeliveryRequest = IWormholeRelayer.ResendByTx({ sourceChain: setup.sourceChainId, sourceTxHash: stack.deliveryVaaHash, @@ -993,7 +996,7 @@ contract TestCoreRelayer is Test { setup.source.relayProvider.updateDeliveryAddress( differentChainId, bytes32(uint256(uint160(address(setup.target.relayer)))) ); - vm.deal(address(this), type(uint256).max >> 2); + vm.deal(address(this), stack.payment); vm.getRecordedLogs(); setup.source.coreRelayer.resend{value: stack.payment}( stack.redeliveryRequest, 1, address(setup.source.relayProvider) @@ -1011,7 +1014,8 @@ contract TestCoreRelayer is Test { ); redeliveryVmHash = relayerWormhole.parseVM(fakeVM).hash; - vm.deal(setup.target.relayer, type(uint256).max >> 2); + uint256 txValue = stack.payment + map[differentChainId].wormhole.messageFee(); + vm.deal(setup.target.relayer, txValue); vm.expectEmit(true, true, true, true, address(map[differentChainId].coreRelayer)); emit Delivery({ @@ -1022,23 +1026,19 @@ contract TestCoreRelayer is Test { status: DeliveryStatus.INVALID_REDELIVERY }); vm.prank(setup.target.relayer); - map[differentChainId].coreRelayerFull.redeliverSingle{ - value: stack.payment + map[differentChainId].wormhole.messageFee() - }(stack.package); - - vm.deal(setup.target.relayer, type(uint256).max >> 2); + map[differentChainId].coreRelayerFull.redeliverSingle{value: txValue}(stack.package); stack.package = CoreRelayerStructs.TargetRedeliveryByTxHashParamsSingle({ redeliveryVM: correctVM, sourceEncodedVMs: stack.originalDelivery.encodedVMs, relayerRefundAddress: payable(setup.target.relayer) }); - vm.deal(setup.target.relayer, type(uint256).max >> 2); + vm.deal(setup.target.relayer, stack.budget - 1); vm.expectRevert(abi.encodeWithSignature("InsufficientRelayerFunds()")); vm.prank(setup.target.relayer); setup.target.coreRelayerFull.redeliverSingle{value: stack.budget - 1}(stack.package); - vm.deal(setup.target.relayer, type(uint256).max >> 2); + vm.deal(setup.target.relayer, stack.budget); assertTrue( (keccak256(setup.target.integration.getMessage()) != keccak256(message)) @@ -1124,7 +1124,7 @@ contract TestCoreRelayer is Test { stack.budget = stack.instruction.maximumRefundTarget + stack.instruction.receiverValueTarget + setup.source.wormhole.messageFee(); - vm.deal(setup.source.relayer, type(uint256).max >> 2); + vm.deal(setup.source.relayer, stack.budget); vm.prank(setup.source.relayer); vm.expectRevert(abi.encodeWithSignature("SendNotSufficientlyFunded()")); setup.source.coreRelayerFull.deliverSingle{value: stack.budget}(stack.package);