|
| 1 | +// SPDX-License-Identifier: MIT |
| 2 | + |
| 3 | +pragma solidity ^0.8.29; |
| 4 | + |
| 5 | +import {IEntryPoint} from "@account-abstraction-v8/interfaces/IEntryPoint.sol"; |
| 6 | +import {BasePaymasterTest as Base} from "test/foundry/paymasterV3/BasePaymasterTest.t.sol"; |
| 7 | +import {PackedUserOperation} from "@account-abstraction-v8/interfaces/PackedUserOperation.sol"; |
| 8 | +import {console2 as console} from "lib/forge-std/src/test.sol"; |
| 9 | + |
| 10 | +contract GettersTest is Base { |
| 11 | + function test_signerCount() public { |
| 12 | + uint256 sC = _signerCount(); |
| 13 | + assertEq(sC, signers.length); |
| 14 | + } |
| 15 | + |
| 16 | + function test_signerAt() public { |
| 17 | + uint256 sC = _signerCount(); |
| 18 | + |
| 19 | + for (uint256 i = 0; i < sC;) { |
| 20 | + address signer = PM.signerAt(i); |
| 21 | + assertEq(signer, signers[i]); |
| 22 | + unchecked { |
| 23 | + i++; |
| 24 | + } |
| 25 | + } |
| 26 | + } |
| 27 | + |
| 28 | + function test_getSigners() public { |
| 29 | + address[] memory getSigners = PM.getSigners(); |
| 30 | + |
| 31 | + for (uint256 i = 0; i < getSigners.length;) { |
| 32 | + assertEq(getSigners[i], signers[i]); |
| 33 | + unchecked { |
| 34 | + i++; |
| 35 | + } |
| 36 | + } |
| 37 | + } |
| 38 | + |
| 39 | + function test_OnwerAndManager() public { |
| 40 | + address getOwner = PM.OWNER(); |
| 41 | + address getManager = PM.MANAGER(); |
| 42 | + |
| 43 | + assertEq(owner, getOwner); |
| 44 | + assertEq(manager, getManager); |
| 45 | + } |
| 46 | + |
| 47 | + function test_getEP() public { |
| 48 | + IEntryPoint EP = PM.ENTRY_POINT_V8(); |
| 49 | + assertEq(address(EP), address(ENTRY_POINT_V8)); |
| 50 | + } |
| 51 | + |
| 52 | + function test_getDeposit() public { |
| 53 | + uint256 getDeposit = PM.getDeposit(); |
| 54 | + assertEq(getDeposit, 0); |
| 55 | + } |
| 56 | + |
| 57 | + function test_getCostInToken() public { |
| 58 | + uint256 _actualGasCost = 100_000; |
| 59 | + uint256 _postOpGas = 80_000; |
| 60 | + uint256 _actualUserOpFeePerGas = 200_000; |
| 61 | + uint256 _exchangeRate = 4000_000; |
| 62 | + |
| 63 | + uint256 actualRate = ((_actualGasCost + (_postOpGas * _actualUserOpFeePerGas)) * _exchangeRate) / 1e18; |
| 64 | + |
| 65 | + uint256 getcost = PM.getCostInToken(_actualGasCost, _postOpGas, _actualUserOpFeePerGas, _exchangeRate); |
| 66 | + |
| 67 | + assertEq(actualRate, getcost); |
| 68 | + } |
| 69 | + |
| 70 | + function test_getHashModeVERIFYING_MODE() public { |
| 71 | + PackedUserOperation memory userOp = _getFreshUserOp(); |
| 72 | + bytes memory paymasterAndData = |
| 73 | + new bytes(PAYMASTER_DATA_OFFSET + MODE_AND_ALLOW_ALL_BUNDLERS_LENGTH + VERIFYING_PAYMASTER_DATA_LENGTH); |
| 74 | + |
| 75 | + bytes20 paymasterAddress = bytes20(address(PM)); |
| 76 | + for (uint256 i = 0; i < 20; i++) { |
| 77 | + paymasterAndData[i] = paymasterAddress[i]; |
| 78 | + } |
| 79 | + |
| 80 | + userOp.paymasterAndData = paymasterAndData; |
| 81 | + this._testFetHashModeVERIFYING_MODE(userOp); |
| 82 | + } |
| 83 | + |
| 84 | + function _testFetHashModeVERIFYING_MODE(PackedUserOperation calldata _userOp) external { |
| 85 | + bytes32 computeHash = _getHash(_userOp, MODE_AND_ALLOW_ALL_BUNDLERS_LENGTH + VERIFYING_PAYMASTER_DATA_LENGTH); |
| 86 | + bytes32 hash = PM.getHash(uint8(0), _userOp); |
| 87 | + assertEq(computeHash, hash); |
| 88 | + } |
| 89 | + |
| 90 | + function _signerCount() internal view returns (uint256 counter) { |
| 91 | + counter = PM.signerCount(); |
| 92 | + } |
| 93 | +} |
0 commit comments