@@ -300,6 +300,32 @@ contract DelegationMetaSwapAdapterMockTest is DelegationMetaSwapAdapterBaseTest
300300 super .setUp ();
301301 }
302302
303+ /**
304+ * @notice Verifies that the contract reverts when the zero address is used as an input.
305+ */
306+ function test_revert_invalidZeroAddressInConstructor () public {
307+ address owner_ = address (1 );
308+ address swapApiSigner_ = address (1 );
309+ IDelegationManager delegationManager_ = IDelegationManager (address (1 ));
310+ IMetaSwap metaSwap_ = IMetaSwap (address (1 ));
311+ address argsEqualityCheckEnforcer_ = address (1 );
312+
313+ vm.expectRevert (abi.encodeWithSelector (Ownable.OwnableInvalidOwner.selector , address (0 )));
314+ new DelegationMetaSwapAdapter (address (0 ), swapApiSigner_, delegationManager_, metaSwap_, argsEqualityCheckEnforcer_);
315+
316+ vm.expectRevert (DelegationMetaSwapAdapter.InvalidZeroAddress.selector );
317+ new DelegationMetaSwapAdapter (owner_, address (0 ), delegationManager_, metaSwap_, argsEqualityCheckEnforcer_);
318+
319+ vm.expectRevert (DelegationMetaSwapAdapter.InvalidZeroAddress.selector );
320+ new DelegationMetaSwapAdapter (owner_, swapApiSigner_, IDelegationManager (address (0 )), metaSwap_, argsEqualityCheckEnforcer_);
321+
322+ vm.expectRevert (DelegationMetaSwapAdapter.InvalidZeroAddress.selector );
323+ new DelegationMetaSwapAdapter (owner_, swapApiSigner_, delegationManager_, IMetaSwap (address (0 )), argsEqualityCheckEnforcer_);
324+
325+ vm.expectRevert (DelegationMetaSwapAdapter.InvalidZeroAddress.selector );
326+ new DelegationMetaSwapAdapter (owner_, swapApiSigner_, delegationManager_, metaSwap_, address (0 ));
327+ }
328+
303329 /**
304330 * @notice Verifies that tokens can be swapped by delegations in a purely local environment (using a MetaSwapMock).
305331 */
@@ -1161,6 +1187,29 @@ contract DelegationMetaSwapAdapterMockTest is DelegationMetaSwapAdapterBaseTest
11611187 delegationMetaSwapAdapter.swapByDelegation (sigData_, delegations_, true );
11621188 }
11631189
1190+ /// @notice Tests that swapByDelegation reverts with SignatureExpired when the signature expiration is equal to current
1191+ /// timestamp.
1192+ function test_revert_swapByDelegation_signatureExpired_equal () public {
1193+ _setUpMockContracts ();
1194+ bytes memory swapData_ = _encodeSwapData (IERC20 (tokenA), IERC20 (tokenB), amountFrom, amountTo, hex "" , 0 , address (0 ), true );
1195+ bytes memory apiData_ = _encodeApiData (aggregatorId, IERC20 (tokenA), amountFrom, swapData_);
1196+ // Set expiration in the current time.
1197+ uint256 expiredTime = block .timestamp ;
1198+ bytes memory signature = _getValidSignature (apiData_, expiredTime);
1199+ DelegationMetaSwapAdapter.SignatureData memory sigData_ =
1200+ DelegationMetaSwapAdapter.SignatureData ({ apiData: apiData_, expiration: expiredTime, signature: signature });
1201+
1202+ Delegation[] memory delegations_ = new Delegation [](2 );
1203+ Delegation memory vaultDelegation_ = _getVaultDelegation ();
1204+ Delegation memory subVaultDelegation_ = _getSubVaultDelegation (EncoderLib._getDelegationHash (vaultDelegation_));
1205+ delegations_[1 ] = vaultDelegation_;
1206+ delegations_[0 ] = subVaultDelegation_;
1207+
1208+ vm.prank (address (subVault.deleGator));
1209+ vm.expectRevert (DelegationMetaSwapAdapter.SignatureExpired.selector );
1210+ delegationMetaSwapAdapter.swapByDelegation (sigData_, delegations_, true );
1211+ }
1212+
11641213 /// @notice Tests that swapByDelegation reverts with InvalidApiSignature when the signature is invalid.
11651214 function test_revert_swapByDelegation_invalidApiSignature () public {
11661215 _setUpMockContracts ();
0 commit comments