add rejecting controller tests

This commit is contained in:
Ricardo Guilherme Schmidt
2023-09-26 02:41:52 -03:00
parent 11bc73a42e
commit 22f02cb230
3 changed files with 58 additions and 9 deletions

View File

@@ -3,26 +3,26 @@
| Deployment Cost | Deployment Size | | | | |
| 1793495 | 9955 | | | | |
| Function Name | min | avg | median | max | # calls |
| allowance | 0 | 67 | 0 | 808 | 12 |
| approve | 0 | 15995 | 23208 | 31708 | 9 |
| allowance | 0 | 62 | 0 | 808 | 13 |
| approve | 0 | 15018 | 14715 | 31708 | 10 |
| approveAndCall | 0 | 31199 | 0 | 93597 | 3 |
| balanceOf | 0 | 323 | 0 | 2753 | 45 |
| balanceOf | 0 | 309 | 0 | 2753 | 47 |
| balanceOfAt | 0 | 90 | 0 | 2363 | 26 |
| changeController | 0 | 1014 | 758 | 3558 | 5 |
| changeController | 0 | 724 | 0 | 3558 | 7 |
| claimTokens | 9537 | 41277 | 57148 | 57148 | 3 |
| controller | 0 | 0 | 0 | 0 | 7 |
| createCloneToken | 0 | 919122 | 919122 | 1838245 | 2 |
| decimals | 0 | 0 | 0 | 0 | 7 |
| destroyTokens | 9001 | 9001 | 9001 | 9001 | 1 |
| enableTransfers | 0 | 0 | 0 | 0 | 3 |
| generateTokens | 0 | 8979 | 0 | 95796 | 32 |
| generateTokens | 0 | 8450 | 0 | 95796 | 34 |
| name | 0 | 0 | 0 | 0 | 7 |
| parentSnapShotBlock | 0 | 0 | 0 | 0 | 8 |
| parentToken | 0 | 0 | 0 | 0 | 8 |
| symbol | 0 | 0 | 0 | 0 | 7 |
| totalSupply | 0 | 273 | 0 | 1911 | 7 |
| totalSupplyAt | 0 | 285 | 0 | 1995 | 7 |
| transfer | 526 | 36631 | 40486 | 75187 | 16 |
| transfer | 526 | 37564 | 49389 | 75187 | 17 |
| transferFrom | 0 | 16836 | 3495 | 66590 | 7 |

View File

@@ -1,10 +1,11 @@
AllowanceTest:testAllowance() (gas: 42689)
AllowanceTest:testAllowance() (gas: 42712)
AllowanceTest:testAllowanceAlreadySet() (gas: 36809)
AllowanceTest:testAllowanceReset() (gas: 45943)
AllowanceTest:testAllowanceReset() (gas: 45925)
AllowanceTest:testApproveAndCall() (gas: 98516)
AllowanceTest:testApproveTransferDisabled() (gas: 7968)
AllowanceTest:testDeployment() (gas: 26711)
AllowanceTest:testNoAllowance() (gas: 9462)
AllowanceTest:testRejectedApproval() (gas: 13643)
ClaimTokensTest:testClaimERC20() (gas: 63734)
ClaimTokensTest:testClaimETH() (gas: 13637)
ClaimTokensTest:testClaimSelf() (gas: 61216)
@@ -22,10 +23,11 @@ ReentrancyTest:testAttack() (gas: 229376)
TransferTest:testDeployment() (gas: 26617)
TransferTest:testDoubleTransfer() (gas: 92391)
TransferTest:testDoubleTransfer2() (gas: 70610)
TransferTest:testInvalidDestinationTransfer() (gas: 6380)
TransferTest:testInvalidDestinationTransfer() (gas: 6402)
TransferTest:testInvalidDestinationTransfer2() (gas: 6399)
TransferTest:testMultipleTransferToSame() (gas: 114643)
TransferTest:testMultipleTransferToSame2() (gas: 92818)
TransferTest:testRejectedTransfer() (gas: 59915)
TransferTest:testTransfer() (gas: 81690)
TransferTest:testTransfer2() (gas: 59888)
TransferTest:testTransferDisabled() (gas: 7968)

View File

@@ -5,6 +5,7 @@ import { Test } from "forge-std/Test.sol";
import { Deploy } from "../script/Deploy.s.sol";
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
import { TokenController } from "../contracts/TokenController.sol";
import { NotAuthorized } from "../contracts/Controlled.sol";
import {
TransfersDisabled,
@@ -12,6 +13,7 @@ import {
NotEnoughBalance,
NotEnoughAllowance,
AllowanceAlreadySet,
ControllerRejected,
IERC20
} from "../contracts/MiniMeBase.sol";
import { MiniMeToken } from "../contracts/MiniMeToken.sol";
@@ -58,6 +60,20 @@ contract MiniMeTokenTest is Test {
}
}
contract RejectingController is TokenController {
function proxyPayment(address) public payable override returns (bool) {
return false;
}
function onTransfer(address, address, uint256) public pure override returns (bool) {
return false;
}
function onApprove(address, address, uint256) public pure override returns (bool) {
return false;
}
}
contract GenerateTokensTest is MiniMeTokenTest {
function setUp() public virtual override {
MiniMeTokenTest.setUp();
@@ -274,6 +290,22 @@ contract TransferTest is MiniMeTokenTest {
assertEq(minimeToken.balanceOf(accounts[1]), 0, "balance of receiver shouldn't be increased");
vm.resumeGasMetering();
}
function testRejectedTransfer() public {
vm.pauseGasMetering();
address payable rejectingController = payable(address(new RejectingController()));
_generateTokens(accounts[0], 10);
vm.prank(deployer);
minimeToken.changeController(rejectingController);
vm.prank(accounts[0]);
vm.expectRevert(ControllerRejected.selector);
vm.resumeGasMetering();
minimeToken.transfer(accounts[1], 2);
vm.pauseGasMetering();
assertEq(minimeToken.balanceOf(accounts[0]), 10, "balance of sender shouldn't be reduced");
assertEq(minimeToken.balanceOf(accounts[1]), 0, "balance of receiver shouldn't be increased");
vm.resumeGasMetering();
}
}
contract AllowanceTest is MiniMeTokenTest {
@@ -408,6 +440,21 @@ contract AllowanceTest is MiniMeTokenTest {
vm.stopPrank();
vm.resumeGasMetering();
}
function testRejectedApproval() public {
vm.pauseGasMetering();
address payable rejectingController = payable(address(new RejectingController()));
_generateTokens(accounts[0], 10);
vm.prank(deployer);
minimeToken.changeController(rejectingController);
vm.prank(accounts[0]);
vm.expectRevert(ControllerRejected.selector);
vm.resumeGasMetering();
minimeToken.approve(accounts[1], 2);
vm.pauseGasMetering();
assertEq(minimeToken.allowance(accounts[0], accounts[1]), 0, "allowance should be 0");
vm.resumeGasMetering();
}
}
contract ApproverAccount is ApproveAndCallFallBack {