refactor(StakeVault): replace StakeManager with MockStakeManager and update tests

This commit is contained in:
Ricardo Guilherme Schmidt
2025-07-30 02:44:34 -03:00
parent bba710b792
commit d57b07cdc4
4 changed files with 148 additions and 96 deletions

View File

@@ -66,7 +66,7 @@
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------| |-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 7425695 | 7425695 | 7425695 | 7425695 | 109 | | run | 7425695 | 7425695 | 7425695 | 7425695 | 90 |
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯ ╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭---------------------------------------------------------+-----------------+------+--------+------+---------╮ ╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
@@ -80,7 +80,7 @@
|---------------------------------------------------------+-----------------+------+--------+------+---------| |---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------| |---------------------------------------------------------+-----------------+------+--------+------+---------|
| activeNetworkConfig | 455 | 2070 | 455 | 4455 | 520 | | activeNetworkConfig | 455 | 2040 | 455 | 4455 | 482 |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯ ╰---------------------------------------------------------+-----------------+------+--------+------+---------╯
╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮ ╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -234,13 +234,13 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| getVault | 13653 | 13653 | 13653 | 13653 | 4180 | | getVault | 13653 | 13653 | 13653 | 13653 | 4180 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 92752 | 92752 | 92752 | 92752 | 109 | | initialize | 92752 | 92752 | 92752 | 92752 | 90 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| lastRewardTime | 2407 | 2407 | 2407 | 2407 | 2 | | lastRewardTime | 2407 | 2407 | 2407 | 2407 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 66348 | 66348 | 66348 | 66348 | 3 | | leave | 66348 | 66348 | 66348 | 66348 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 7040 | 43325 | 46713 | 87673 | 1035 | | lock | 7040 | 43282 | 46713 | 87673 | 1034 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 9294 | 53513 | 17021 | 170715 | 4 | | migrateToVault | 9294 | 53513 | 17021 | 170715 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -252,7 +252,7 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 342 | 342 | 342 | 342 | 4 | | proxiableUUID | 342 | 342 | 342 | 342 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| registerVault | 2583 | 74567 | 75107 | 75107 | 388 | | registerVault | 2583 | 74539 | 75107 | 75107 | 369 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardEndTime | 2429 | 2429 | 2429 | 2429 | 2 | | rewardEndTime | 2429 | 2429 | 2429 | 2429 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -266,11 +266,9 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 90 | | setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 90 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 109 | | setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 90 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 2639 | 132445 | 60725 | 228623 | 2676 | | stake | 2639 | 132245 | 60725 | 228623 | 2669 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMP | 6805 | 8257 | 8257 | 9710 | 6 | | totalMP | 6805 | 8257 | 8257 | 9710 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -286,9 +284,9 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalShares | 4597 | 4597 | 4597 | 4597 | 6 | | totalShares | 4597 | 4597 | 4597 | 4597 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalStaked | 2408 | 2408 | 2408 | 2408 | 4167 | | totalStaked | 2408 | 2408 | 2408 | 2408 | 4166 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 9886 | 41287 | 39781 | 79550 | 272 | | unstake | 9886 | 41179 | 39781 | 79550 | 271 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateAccount | 347677 | 347677 | 347677 | 347677 | 1 | | updateAccount | 347677 | 347677 | 347677 | 347677 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -318,33 +316,33 @@
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyExit | 15073 | 31537 | 31535 | 48635 | 263 | | emergencyExit | 15073 | 31537 | 31535 | 48635 | 263 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 97688 | 97688 | 97688 | 97688 | 388 | | initialize | 95576 | 97600 | 97688 | 97688 | 385 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 12223 | 99375 | 84120 | 356508 | 7 | | leave | 10111 | 88896 | 46478 | 356508 | 7 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 12151 | 58773 | 62251 | 103208 | 1037 | | lock | 10039 | 58728 | 62251 | 103208 | 1036 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| lockUntil | 2363 | 2363 | 2363 | 2363 | 7770 | | lockUntil | 2363 | 2363 | 2363 | 2363 | 7760 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 24910 | 77530 | 32637 | 219937 | 4 | | migrateToVault | 24910 | 77530 | 32637 | 219937 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| owner | 448 | 483 | 448 | 2448 | 397 | | owner | 448 | 479 | 448 | 2448 | 377 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| register | 12742 | 78238 | 78761 | 78761 | 388 | | register | 922 | 74999 | 78761 | 78761 | 385 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 2617 | 166880 | 76290 | 284275 | 2679 | | stake | 2617 | 166407 | 76290 | 284275 | 2677 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| stakeManager | 393 | 393 | 393 | 393 | 387 | | stakeManager | 393 | 393 | 393 | 393 | 368 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| trustStakeManager | 7650 | 7650 | 7650 | 7650 | 4 | | trustStakeManager | 7650 | 7650 | 7650 | 7650 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake(uint256) | 12108 | 58009 | 55296 | 110656 | 273 | | unstake(uint256) | 12108 | 57732 | 55296 | 110656 | 273 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake(uint256,address) | 2700 | 2700 | 2700 | 2700 | 1 | | unstake(uint256,address) | 2700 | 2700 | 2700 | 2700 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| updateLockUntil | 4432 | 20782 | 21532 | 21532 | 520 | | updateLockUntil | 4432 | 20779 | 21532 | 21532 | 518 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw(address,uint256) | 20817 | 25682 | 20817 | 35413 | 3 | | withdraw(address,uint256) | 13623 | 24518 | 24518 | 35413 | 2 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw(address,uint256,address) | 2812 | 19196 | 19196 | 35580 | 2 | | withdraw(address,uint256,address) | 2812 | 19196 | 19196 | 35580 | 2 |
|----------------------------------------+-----------------+--------+--------+--------+---------| |----------------------------------------+-----------------+--------+--------+--------+---------|
@@ -362,9 +360,9 @@
|----------------------------------------------------+-----------------+-------+--------+--------+---------| |----------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+-------+--------+--------+---------| |----------------------------------------------------+-----------------+-------+--------+--------+---------|
| fallback | 5208 | 12836 | 7353 | 374054 | 23157 | | fallback | 5208 | 12837 | 7353 | 374054 | 23153 |
|----------------------------------------------------+-----------------+-------+--------+--------+---------| |----------------------------------------------------+-----------------+-------+--------+--------+---------|
| implementation | 346 | 2134 | 2346 | 2346 | 4908 | | implementation | 346 | 2133 | 2346 | 2346 | 4874 |
╰----------------------------------------------------+-----------------+-------+--------+--------+---------╯ ╰----------------------------------------------------+-----------------+-------+--------+--------+---------╯
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮ ╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
@@ -372,13 +370,13 @@
+===================================================================================================+ +===================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| 0 | 2094 | | | | | | 483043 | 2094 | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| | | | | | | | | | | | | |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| createVault | 231113 | 247859 | 248213 | 248213 | 387 | | createVault | 168262 | 244525 | 248213 | 248213 | 384 |
|--------------------------------------------+-----------------+--------+--------+--------+---------| |--------------------------------------------+-----------------+--------+--------+--------+---------|
| vaultImplementation | 2345 | 2345 | 2345 | 2345 | 1 | | vaultImplementation | 2345 | 2345 | 2345 | 2345 | 1 |
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯ ╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
@@ -489,22 +487,38 @@
| generate | 60554 | 60554 | 60554 | 60554 | 1 | | generate | 60554 | 60554 | 60554 | 60554 | 1 |
╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯ ╰---------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------+-----------------+-----+--------+-----+---------╮
| test/mocks/MockStakeManager.sol:MockStakeManager Contract | | | | | |
+============================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|-----------------------------------------------------------+-----------------+-----+--------+-----+---------|
| 212692 | 769 | | | | |
|-----------------------------------------------------------+-----------------+-----+--------+-----+---------|
| | | | | | |
|-----------------------------------------------------------+-----------------+-----+--------+-----+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-----------------------------------------------------------+-----------------+-----+--------+-----+---------|
| implementation | 234 | 234 | 234 | 234 | 26 |
|-----------------------------------------------------------+-----------------+-----+--------+-----+---------|
| stakedBalanceOf | 376 | 376 | 376 | 376 | 1 |
╰-----------------------------------------------------------+-----------------+-----+--------+-----+---------╯
╭---------------------------------------------+-----------------+-------+--------+-------+---------╮ ╭---------------------------------------------+-----------------+-------+--------+-------+---------╮
| test/mocks/MockToken.sol:MockToken Contract | | | | | | | test/mocks/MockToken.sol:MockToken Contract | | | | | |
+==================================================================================================+ +==================================================================================================+
| Deployment Cost | Deployment Size | | | | | | Deployment Cost | Deployment Size | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| 770717 | 3987 | | | | | | 770657 | 3987 | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | | | | | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls | | Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 29075 | 31623 | 29183 | 46259 | 2690 | | approve | 29075 | 31607 | 29183 | 46259 | 2687 |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 2561 | 2561 | 2561 | 2561 | 4966 | | balanceOf | 2561 | 2561 | 2561 | 2561 | 4964 |
|---------------------------------------------+-----------------+-------+--------+-------+---------| |---------------------------------------------+-----------------+-------+--------+-------+---------|
| mint | 33964 | 37387 | 34072 | 68248 | 2702 | | mint | 33964 | 37353 | 34072 | 68248 | 2699 |
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯ ╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮ ╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮

View File

@@ -173,18 +173,17 @@ StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 714792)
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 381583) StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 381583)
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 382223) StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 382223)
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 382268) StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 382268)
StakeVaultCoverageTest:testOwner() (gas: 15413) StakeVaultCoverageTest:testOwner() (gas: 15391)
StakeVaultCoverageTest:test_LeaveRevertsWhenManagerTrusted() (gas: 46970) StakeVaultCoverageTest:test_LeaveRevertsWhenManagerTrusted() (gas: 44836)
StakeVaultCoverageTest:test_LeaveTransfersAllFundsAfterUntrustingManager() (gas: 423892) StakeVaultCoverageTest:test_LeaveTransfersAllFundsAfterUntrustingManager() (gas: 189561)
StakeVaultCoverageTest:test_LockRevertsIfManagerNotTrusted() (gas: 79014) StakeVaultCoverageTest:test_LockRevertsIfManagerNotTrusted() (gas: 76902)
StakeVaultCoverageTest:test_LockSetsLockUntilTimestamp() (gas: 431382) StakeVaultCoverageTest:test_StakeRevertsIfManagerNotTrusted() (gas: 77108)
StakeVaultCoverageTest:test_StakeRevertsIfManagerNotTrusted() (gas: 79220)
StakeVaultCoverageTest:test_StakeRevertsIfNotOwner() (gas: 37239) StakeVaultCoverageTest:test_StakeRevertsIfNotOwner() (gas: 37239)
StakeVaultCoverageTest:test_StakeTransfersTokensToVault() (gas: 343535) StakeVaultCoverageTest:test_StakeTransfersTokensToVault() (gas: 93148)
StakeVaultCoverageTest:test_UnstakeRevertsWithInvalidDestination() (gas: 323361) StakeVaultCoverageTest:test_UnstakeRevertsWithInvalidDestination() (gas: 113163)
StakeVaultCoverageTest:test_UnstakeTransfersTokensBackToOwner() (gas: 389377) StakeVaultCoverageTest:test_UnstakeTransfersTokensBackToOwner() (gas: 144361)
StakeVaultCoverageTest:test_WithdrawOtherTokenTransfersToDestination() (gas: 142411) StakeVaultCoverageTest:test_WithdrawOtherTokenTransfersToDestination() (gas: 142411)
StakeVaultCoverageTest:test_WithdrawRevertsIfInsufficientAvailableBalance() (gas: 343789) StakeVaultCoverageTest:test_WithdrawRevertsIfInsufficientAvailableBalance() (gas: 126421)
StakeVaultCoverageTest:test_WithdrawRevertsIfInvalidDestination() (gas: 111219) StakeVaultCoverageTest:test_WithdrawRevertsIfInvalidDestination() (gas: 111219)
StakeVaultCoverageTest:test_WithdrawTransfersGenericTokenToOwner() (gas: 139759) StakeVaultCoverageTest:test_WithdrawTransfersGenericTokenToOwner() (gas: 139759)
StakeVaultMigrationTest:testMigrateToVault() (gas: 1157152) StakeVaultMigrationTest:testMigrateToVault() (gas: 1157152)
@@ -221,6 +220,4 @@ UnstakeTest:test_UnstakeOneAccountWithLockUpAndAccruedMP() (gas: 722241)
UpdateVaultTest:test_UpdateAccount() (gas: 2587427) UpdateVaultTest:test_UpdateAccount() (gas: 2587427)
UpgradeTest:test_RevertWhenNotOwner() (gas: 3696209) UpgradeTest:test_RevertWhenNotOwner() (gas: 3696209)
UpgradeTest:test_UpgradeStakeManager() (gas: 9855347) UpgradeTest:test_UpgradeStakeManager() (gas: 9855347)
VaultRegistrationTest:test_VaultRegistration() (gas: 90138) VaultRegistrationTest:test_VaultRegistration() (gas: 90138)
WithdrawTest:testOwner() (gas: 15365)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 373396)

View File

@@ -6,19 +6,20 @@ import { Test } from "forge-std/Test.sol";
import { DeploymentConfig } from "../script/DeploymentConfig.s.sol"; import { DeploymentConfig } from "../script/DeploymentConfig.s.sol";
import { DeployStakeManagerScript } from "../script/DeployStakeManager.s.sol"; import { DeployStakeManagerScript } from "../script/DeployStakeManager.s.sol";
import { VaultFactory } from "../src/VaultFactory.sol"; import { VaultFactory } from "../src/VaultFactory.sol";
import { StakeManager } from "../src/StakeManager.sol"; import { MockStakeManager } from "./mocks/MockStakeManager.sol";
import { StakeVault } from "../src/StakeVault.sol"; import { StakeVault } from "../src/StakeVault.sol";
import { MockToken } from "./mocks/MockToken.sol"; import { MockToken } from "./mocks/MockToken.sol";
contract StakeVaultTest is Test { contract StakeVaultTest is Test {
VaultFactory internal vaultFactory; VaultFactory internal vaultFactory;
StakeManager internal streamer; MockStakeManager internal streamer;
StakeVault internal stakeVault; StakeVault internal stakeVault;
MockToken internal rewardToken; MockToken internal rewardToken;
MockToken internal stakingToken; MockToken internal stakingToken;
MockToken internal otherToken; MockToken internal otherToken;
address internal alice = makeAddr("alice"); address internal alice = makeAddr("alice");
address internal bob = makeAddr("bob"); address internal bob = makeAddr("bob");
address internal deployer = makeAddr("deployer");
function _createTestVault(address owner) internal returns (StakeVault stakeVault) { function _createTestVault(address owner) internal returns (StakeVault stakeVault) {
vm.prank(owner); vm.prank(owner);
@@ -29,14 +30,9 @@ contract StakeVaultTest is Test {
rewardToken = new MockToken("Reward Token", "RT"); rewardToken = new MockToken("Reward Token", "RT");
stakingToken = new MockToken("Staking Token", "ST"); stakingToken = new MockToken("Staking Token", "ST");
otherToken = new MockToken("Other Token", "OT"); otherToken = new MockToken("Other Token", "OT");
streamer = new MockStakeManager();
DeployStakeManagerScript deployment = new DeployStakeManagerScript(); vaultFactory = new VaultFactory(deployer, address(streamer), address(new StakeVault(stakingToken)));
(StakeManager stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) = deployment.run();
(, address _stakingToken) = deploymentConfig.activeNetworkConfig();
streamer = stakeManager;
stakingToken = MockToken(_stakingToken);
vaultFactory = _vaultFactory;
stakingToken.mint(alice, 10_000e18); stakingToken.mint(alice, 10_000e18);
@@ -61,36 +57,11 @@ contract StakingTokenTest is StakeVaultTest {
} }
} }
contract WithdrawTest is StakeVaultTest {
function setUp() public override {
super.setUp();
}
function test_CannotWithdrawStakedFunds() public {
// first, stake some funds
vm.prank(alice);
stakeVault.stake(10e18, 0);
assertEq(stakingToken.balanceOf(address(stakeVault)), 10e18);
assertEq(streamer.totalStaked(), 10e18);
// try withdrawing funds without unstaking
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__NotEnoughAvailableBalance.selector);
stakeVault.withdraw(stakingToken, 10e18);
}
}
contract StakeVaultCoverageTest is StakeVaultTest { contract StakeVaultCoverageTest is StakeVaultTest {
/*////////////////////////////////////////////////////////////
TESTES PARA stake()
////////////////////////////////////////////////////////////*/
function test_StakeTransfersTokensToVault() public { function test_StakeTransfersTokensToVault() public {
vm.prank(alice); vm.prank(alice);
stakeVault.stake(1e18, 90 days); stakeVault.stake(1e18, 90 days);
assertEq(stakingToken.balanceOf(address(stakeVault)), 1e18); assertEq(stakingToken.balanceOf(address(stakeVault)), 1e18);
assertEq(streamer.stakedBalanceOf(address(stakeVault)), 1e18);
} }
function test_StakeRevertsIfNotOwner() public { function test_StakeRevertsIfNotOwner() public {
@@ -107,19 +78,6 @@ contract StakeVaultCoverageTest is StakeVaultTest {
stakeVault.stake(1e18, 3600); stakeVault.stake(1e18, 3600);
} }
/*////////////////////////////////////////////////////////////
TESTES PARA lock()
////////////////////////////////////////////////////////////*/
function test_LockSetsLockUntilTimestamp() public {
uint256 delta = 90 days;
vm.startPrank(alice);
stakeVault.stake(1e18, 0); // Stake some tokens firstq
stakeVault.lock(delta);
uint256 expected = block.timestamp + delta;
assertEq(stakeVault.lockUntil(), expected);
}
function test_LockRevertsIfManagerNotTrusted() public { function test_LockRevertsIfManagerNotTrusted() public {
vm.prank(alice); vm.prank(alice);
stakeVault.trustStakeManager(address(0xBEEF)); stakeVault.trustStakeManager(address(0xBEEF));
@@ -128,10 +86,6 @@ contract StakeVaultCoverageTest is StakeVaultTest {
stakeVault.lock(3600); stakeVault.lock(3600);
} }
/*////////////////////////////////////////////////////////////
TESTES PARA unstake()
////////////////////////////////////////////////////////////*/
function test_UnstakeTransfersTokensBackToOwner() public { function test_UnstakeTransfersTokensBackToOwner() public {
uint256 startBalance = stakingToken.balanceOf(alice); uint256 startBalance = stakingToken.balanceOf(alice);
vm.prank(alice); vm.prank(alice);
@@ -185,7 +139,7 @@ contract StakeVaultCoverageTest is StakeVaultTest {
stakeVault.stake(3e18, 0); stakeVault.stake(3e18, 0);
vm.prank(alice); vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__NotEnoughAvailableBalance.selector); vm.expectRevert(StakeVault.StakeVault__NotEnoughAvailableBalance.selector);
stakeVault.withdraw(stakingToken, 3e18); stakeVault.withdraw(stakingToken, 3e19);
} }
function test_WithdrawTransfersGenericTokenToOwner() public { function test_WithdrawTransfersGenericTokenToOwner() public {

View File

@@ -0,0 +1,87 @@
pragma solidity 0.8.26;
import { IStakeManager } from "../../src/interfaces/IStakeManager.sol";
import { ITrustedCodehashAccess } from "../../src/interfaces/ITrustedCodehashAccess.sol";
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
contract MockStakeManager is ITrustedCodehashAccess, IStakeManager {
function implementation() external view returns (address) {
return address(this);
}
function setTrustedCodehash(bytes32, bool) external {
return;
}
function isTrustedCodehash(bytes32) external view returns (bool) {
return true;
}
function registerVault() external {
return;
}
function stake(uint256, uint256) external {
return;
}
function lock(uint256) external {
return;
}
function unstake(uint256) external {
return;
}
function leave() external {
return;
}
function migrateToVault(address) external {
return;
}
function updateVault(address) external {
return;
}
function emergencyModeEnabled() external view returns (bool) {
return false;
}
function totalStaked() external view returns (uint256) {
return 0;
}
function totalMPAccrued() external view returns (uint256) {
return 0;
}
function totalMaxMP() external view returns (uint256) {
return 0;
}
function stakedBalanceOf(address) external view returns (uint256) {
return 0;
}
function STAKING_TOKEN() external view returns (IERC20) {
return IERC20(address(0));
}
function MIN_LOCKUP_PERIOD() external view returns (uint256) {
return 0;
}
function MAX_LOCKUP_PERIOD() external view returns (uint256) {
return 0;
}
function MP_APY() external view returns (uint256) {
return 0;
}
function MAX_MULTIPLIER() external view returns (uint256) {
return 0;
}
}