chore(StakeVault.test): Improve coverage

This commit is contained in:
Ricardo Guilherme Schmidt
2025-07-28 11:30:01 -03:00
committed by r4bbit
parent 7d2e4a810d
commit f14312e842
3 changed files with 200 additions and 62 deletions

View File

@@ -10,7 +10,7 @@
|-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------|
| fallback | 5145 | 65050 | 33119 | 193478 | 3522 |
| fallback | 5145 | 65039 | 33119 | 193478 | 3522 |
╰-------------------------------------------------------------------------------------------+-----------------+-------+--------+--------+---------╯
╭-----------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -66,7 +66,7 @@
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|-------------------------------------------------------------------+-----------------+---------+---------+---------+---------|
| run | 7425695 | 7425695 | 7425695 | 7425695 | 95 |
| run | 7425695 | 7425695 | 7425695 | 7425695 | 109 |
╰-------------------------------------------------------------------+-----------------+---------+---------+---------+---------╯
╭---------------------------------------------------------+-----------------+------+--------+------+---------╮
@@ -80,7 +80,7 @@
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------------------+-----------------+------+--------+------+---------|
| activeNetworkConfig | 455 | 2048 | 455 | 4455 | 492 |
| activeNetworkConfig | 455 | 2070 | 455 | 4455 | 520 |
╰---------------------------------------------------------+-----------------+------+--------+------+---------╯
╭---------------------------------------------------------------------+-----------------+---------+---------+---------+---------╮
@@ -124,7 +124,7 @@
|------------------------------+-----------------+--------+--------+--------+---------|
| approve | 453 | 453 | 453 | 453 | 8 |
|------------------------------+-----------------+--------+--------+--------+---------|
| balanceOf | 17795 | 28157 | 28160 | 28233 | 287 |
| balanceOf | 17795 | 28159 | 28160 | 28233 | 287 |
|------------------------------+-----------------+--------+--------+--------+---------|
| calculateSlashAmount | 2763 | 2801 | 2804 | 2804 | 774 |
|------------------------------+-----------------+--------+--------+--------+---------|
@@ -144,7 +144,7 @@
|------------------------------+-----------------+--------+--------+--------+---------|
| setReward | 4845 | 144102 | 166754 | 166754 | 319 |
|------------------------------+-----------------+--------+--------+--------+---------|
| slash | 4803 | 103656 | 85757 | 123125 | 520 |
| slash | 4803 | 103578 | 85757 | 123125 | 520 |
|------------------------------+-----------------+--------+--------+--------+---------|
| slashedAmountOf | 17682 | 28099 | 28120 | 28120 | 516 |
|------------------------------+-----------------+--------+--------+--------+---------|
@@ -232,15 +232,15 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| getAccountVaults | 5230 | 5230 | 5230 | 5230 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| getVault | 13653 | 13653 | 13653 | 13653 | 4181 |
| getVault | 13653 | 13653 | 13653 | 13653 | 4180 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 92752 | 92752 | 92752 | 92752 | 95 |
| initialize | 92752 | 92752 | 92752 | 92752 | 109 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| lastRewardTime | 2407 | 2407 | 2407 | 2407 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 66348 | 66348 | 66348 | 66348 | 2 |
| leave | 66348 | 66348 | 66348 | 66348 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 7040 | 43229 | 46713 | 87673 | 1034 |
| lock | 7040 | 43325 | 46713 | 87673 | 1035 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 9294 | 53513 | 17021 | 170715 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -252,13 +252,13 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| proxiableUUID | 342 | 342 | 342 | 342 | 4 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| registerVault | 2583 | 74547 | 75107 | 75107 | 374 |
| registerVault | 2583 | 74567 | 75107 | 75107 | 388 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardEndTime | 2429 | 2429 | 2429 | 2429 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardStartTime | 2364 | 2364 | 2364 | 2364 | 2 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardsBalanceOf | 20295 | 24430 | 25908 | 26129 | 268 |
| rewardsBalanceOf | 20295 | 24409 | 25908 | 26129 | 268 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| rewardsBalanceOfAccount | 62220 | 62220 | 62220 | 62220 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -266,35 +266,35 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| setRewardsSupplier | 26875 | 26875 | 26875 | 26875 | 90 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 95 |
| setTrustedCodehash | 24238 | 24238 | 24238 | 24238 | 109 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 2639 | 129983 | 60725 | 228623 | 2670 |
| stake | 2639 | 132445 | 60725 | 228623 | 2676 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 1 |
| stakedBalanceOf | 2622 | 2622 | 2622 | 2622 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMP | 6805 | 8257 | 8257 | 9710 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPAccrued | 2385 | 2385 | 2385 | 2385 | 4161 |
| totalMPAccrued | 2385 | 2385 | 2385 | 2385 | 4160 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMPStaked | 2429 | 2429 | 2429 | 2429 | 4164 |
| totalMPStaked | 2429 | 2429 | 2429 | 2429 | 4163 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalMaxMP | 2407 | 2407 | 2407 | 2407 | 4161 |
| totalMaxMP | 2407 | 2407 | 2407 | 2407 | 4160 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsAccrued | 2407 | 2407 | 2407 | 2407 | 3 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalRewardsSupply | 6737 | 11068 | 11792 | 11903 | 290 |
| totalRewardsSupply | 6737 | 11058 | 11792 | 11903 | 290 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalShares | 4597 | 4597 | 4597 | 4597 | 6 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| totalStaked | 2408 | 2408 | 2408 | 2408 | 4168 |
| totalStaked | 2408 | 2408 | 2408 | 2408 | 4167 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 9886 | 41581 | 39781 | 79550 | 271 |
| unstake | 9886 | 41287 | 39781 | 79550 | 272 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateAccount | 347677 | 347677 | 347677 | 347677 | 1 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateGlobalState | 15820 | 25876 | 29230 | 29230 | 8 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| updateVault | 31948 | 34013 | 31948 | 110579 | 1023 |
| updateVault | 31948 | 34490 | 31948 | 110579 | 1022 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| upgradeTo | 10279 | 10772 | 10279 | 12745 | 5 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
@@ -318,31 +318,35 @@
|----------------------------------------+-----------------+--------+--------+--------+---------|
| emergencyExit | 15073 | 31537 | 31535 | 48635 | 263 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| initialize | 97688 | 97688 | 97688 | 97688 | 374 |
| initialize | 97688 | 97688 | 97688 | 97688 | 388 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| leave | 12223 | 113137 | 84120 | 356508 | 5 |
| leave | 12223 | 99375 | 84120 | 356508 | 7 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| lock | 12151 | 58722 | 62251 | 103208 | 1035 |
| lock | 12151 | 58773 | 62251 | 103208 | 1037 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| lockUntil | 2363 | 2363 | 2363 | 2363 | 7768 |
| lockUntil | 2363 | 2363 | 2363 | 2363 | 7770 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| migrateToVault | 24910 | 77530 | 32637 | 219937 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| owner | 448 | 479 | 448 | 2448 | 382 |
| owner | 448 | 483 | 448 | 2448 | 397 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| register | 12742 | 78218 | 78761 | 78761 | 374 |
| register | 12742 | 78238 | 78761 | 78761 | 388 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stake | 12131 | 163920 | 76290 | 284275 | 2671 |
| stake | 2617 | 166880 | 76290 | 284275 | 2679 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| stakeManager | 393 | 393 | 393 | 393 | 373 |
| stakeManager | 393 | 393 | 393 | 393 | 387 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| trustStakeManager | 7650 | 7650 | 7650 | 7650 | 1 |
| trustStakeManager | 7650 | 7650 | 7650 | 7650 | 4 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| unstake | 12108 | 58192 | 55296 | 110656 | 272 |
| unstake(uint256) | 12108 | 58009 | 55296 | 110656 | 273 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| updateLockUntil | 4432 | 20798 | 21532 | 21532 | 485 |
| unstake(uint256,address) | 2700 | 2700 | 2700 | 2700 | 1 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw | 20817 | 20817 | 20817 | 20817 | 1 |
| updateLockUntil | 4432 | 20782 | 21532 | 21532 | 520 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw(address,uint256) | 20817 | 25682 | 20817 | 35413 | 3 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdraw(address,uint256,address) | 2812 | 19196 | 19196 | 35580 | 2 |
|----------------------------------------+-----------------+--------+--------+--------+---------|
| withdrawFromVault | 20391 | 20391 | 20391 | 20391 | 1 |
╰----------------------------------------+-----------------+--------+--------+--------+---------╯
@@ -358,9 +362,9 @@
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| fallback | 5208 | 12817 | 7353 | 374054 | 23161 |
| fallback | 5208 | 12836 | 7353 | 374054 | 23157 |
|----------------------------------------------------+-----------------+-------+--------+--------+---------|
| implementation | 346 | 2145 | 2346 | 2346 | 4847 |
| implementation | 346 | 2134 | 2346 | 2346 | 4908 |
╰----------------------------------------------------+-----------------+-------+--------+--------+---------╯
╭--------------------------------------------+-----------------+--------+--------+--------+---------╮
@@ -374,7 +378,7 @@
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| createVault | 231113 | 247846 | 248213 | 248213 | 373 |
| createVault | 231113 | 247859 | 248213 | 248213 | 387 |
|--------------------------------------------+-----------------+--------+--------+--------+---------|
| vaultImplementation | 2345 | 2345 | 2345 | 2345 | 1 |
╰--------------------------------------------+-----------------+--------+--------+--------+---------╯
@@ -384,7 +388,7 @@
+===============================================================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| 1204853 | 6015 | | | | |
| 1204853 | 6207 | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|------------------------------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
@@ -466,7 +470,7 @@
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setTotalKarmaShares | 43589 | 43589 | 43589 | 43589 | 48 |
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| setUserKarmaShare | 24210 | 44107 | 44134 | 44266 | 531 |
| setUserKarmaShare | 24210 | 44032 | 44134 | 44266 | 531 |
|-------------------------------------------------------------------+-----------------+-------+--------+-------+---------|
| totalRewardsSupply | 2324 | 2324 | 2324 | 2324 | 48 |
╰-------------------------------------------------------------------+-----------------+-------+--------+-------+---------╯
@@ -490,17 +494,17 @@
+==================================================================================================+
| Deployment Cost | Deployment Size | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| 770741 | 3987 | | | | |
| 770717 | 3987 | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| | | | | | |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| Function Name | Min | Avg | Median | Max | # Calls |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| approve | 29075 | 31545 | 29183 | 46259 | 2676 |
| approve | 29075 | 31623 | 29183 | 46259 | 2690 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| balanceOf | 2561 | 2561 | 2561 | 2561 | 4959 |
| balanceOf | 2561 | 2561 | 2561 | 2561 | 4966 |
|---------------------------------------------+-----------------+-------+--------+-------+---------|
| mint | 33964 | 37190 | 34072 | 68248 | 2685 |
| mint | 33964 | 37387 | 34072 | 68248 | 2702 |
╰---------------------------------------------+-----------------+-------+--------+-------+---------╯
╭-----------------------------------------------------------------------------+-----------------+--------+--------+--------+---------╮

View File

@@ -16,15 +16,15 @@ EmergencyExitTest:test_EmergencyExitToAlternateAddress() (gas: 479110)
EmergencyExitTest:test_EmergencyExitWithLock() (gas: 452444)
EmergencyExitTest:test_EmergencyExitWithRewards() (gas: 484810)
EmergencyExitTest:test_OnlyOwnerCanEnableEmergencyMode() (gas: 39176)
FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1006, μ: 581521, ~: 549037)
FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1006, μ: 806405, ~: 777234)
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1000, μ: 588178, ~: 578267)
FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1006, μ: 961274, ~: 961235)
FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1006, μ: 598321, ~: 574225)
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1000, μ: 650441, ~: 653254)
FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1006, μ: 376307, ~: 346086)
FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1006, μ: 801126, ~: 780593)
FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1006, μ: 581544, ~: 549060)
FuzzTests:testFuzz_AccrueMP(uint128,uint64,uint64) (runs: 1024, μ: 584053, ~: 549046)
FuzzTests:testFuzz_AccrueMP_Relock(uint128,uint64,uint64,uint64) (runs: 1024, μ: 809067, ~: 777235)
FuzzTests:testFuzz_EmergencyExit(uint256,uint256) (runs: 1007, μ: 588195, ~: 578267)
FuzzTests:testFuzz_Lock(uint256,uint64) (runs: 1025, μ: 961448, ~: 961235)
FuzzTests:testFuzz_Relock(uint256,uint64,uint64) (runs: 1025, μ: 601095, ~: 574234)
FuzzTests:testFuzz_Rewards(uint256,uint256,uint256,uint16,uint16) (runs: 1001, μ: 650436, ~: 653254)
FuzzTests:testFuzz_Stake(uint256,uint64) (runs: 1025, μ: 378939, ~: 346089)
FuzzTests:testFuzz_Unstake(uint128,uint64,uint16,uint128) (runs: 1024, μ: 803140, ~: 780598)
FuzzTests:testFuzz_UpdateVault(uint128,uint64,uint64) (runs: 1024, μ: 584076, ~: 549069)
IntegrationTest:testStakeFoo() (gas: 2348931)
KarmaNFTTest:testApproveNotAllowed() (gas: 10507)
KarmaNFTTest:testGetApproved() (gas: 10531)
@@ -67,7 +67,7 @@ LeaveTest:test_LeaveShouldKeepFundsLockedInStakeVault() (gas: 9938411)
LeaveTest:test_LeaveShouldProperlyUpdateAccounting() (gas: 10011059)
LeaveTest:test_RevertWhenStakeManagerIsTrusted() (gas: 333238)
LeaveTest:test_TrustNewStakeManager() (gas: 9944491)
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1006, μ: 384561, ~: 384588)
LockTest:test_LockFailsWithInvalidPeriod(uint256) (runs: 1025, μ: 384561, ~: 384588)
LockTest:test_LockFailsWithNoStake() (gas: 89700)
LockTest:test_LockFailsWithZero() (gas: 343310)
LockTest:test_LockMultipleTimesExceedMaxLock() (gas: 746921)
@@ -131,7 +131,7 @@ SetRewardTest:test_RevertWhen_SenderIsNotOperator() (gas: 61893)
SlashAmountOfTest:testAddKarmaDistributorOnlyAdmin() (gas: 438224)
SlashAmountOfTest:testBalanceOf() (gas: 456642)
SlashAmountOfTest:testBalanceOfWithNoSystemTotalKarma() (gas: 83783)
SlashAmountOfTest:testFuzz_SlashAmountOf(uint256,uint256,uint256) (runs: 1002, μ: 408298, ~: 409081)
SlashAmountOfTest:testFuzz_SlashAmountOf(uint256,uint256,uint256) (runs: 1004, μ: 408220, ~: 409081)
SlashAmountOfTest:testMintOnlyAdmin() (gas: 429075)
SlashAmountOfTest:testRemoveKarmaDistributorOnlyOwner() (gas: 163437)
SlashAmountOfTest:testRemoveUnknownKarmaDistributor() (gas: 41654)
@@ -141,7 +141,7 @@ SlashAmountOfTest:test_SlashAmountOf() (gas: 327608)
SlashTest:testAddKarmaDistributorOnlyAdmin() (gas: 438270)
SlashTest:testBalanceOf() (gas: 456648)
SlashTest:testBalanceOfWithNoSystemTotalKarma() (gas: 83827)
SlashTest:testFuzz_Slash(uint256) (runs: 1006, μ: 280204, ~: 280146)
SlashTest:testFuzz_Slash(uint256) (runs: 1025, μ: 280205, ~: 280146)
SlashTest:testMintOnlyAdmin() (gas: 429131)
SlashTest:testRemoveKarmaDistributorOnlyOwner() (gas: 163461)
SlashTest:testRemoveRewardDistributorShouldReduceSlashAmount() (gas: 610762)
@@ -173,6 +173,20 @@ StakeTest:test_StakeOneAccountReachingMPLimit() (gas: 714792)
StakeTest:test_StakeOneAccountWithMaxLockUp() (gas: 381583)
StakeTest:test_StakeOneAccountWithMinLockUp() (gas: 382223)
StakeTest:test_StakeOneAccountWithRandomLockUp() (gas: 382268)
StakeVaultCoverageTest:testOwner() (gas: 15413)
StakeVaultCoverageTest:test_LeaveRevertsWhenManagerTrusted() (gas: 46970)
StakeVaultCoverageTest:test_LeaveTransfersAllFundsAfterUntrustingManager() (gas: 423892)
StakeVaultCoverageTest:test_LockRevertsIfManagerNotTrusted() (gas: 79014)
StakeVaultCoverageTest:test_LockSetsLockUntilTimestamp() (gas: 431382)
StakeVaultCoverageTest:test_StakeRevertsIfManagerNotTrusted() (gas: 79220)
StakeVaultCoverageTest:test_StakeRevertsIfNotOwner() (gas: 37239)
StakeVaultCoverageTest:test_StakeTransfersTokensToVault() (gas: 343535)
StakeVaultCoverageTest:test_UnstakeRevertsWithInvalidDestination() (gas: 323361)
StakeVaultCoverageTest:test_UnstakeTransfersTokensBackToOwner() (gas: 389377)
StakeVaultCoverageTest:test_WithdrawOtherTokenTransfersToDestination() (gas: 142411)
StakeVaultCoverageTest:test_WithdrawRevertsIfInsufficientAvailableBalance() (gas: 343789)
StakeVaultCoverageTest:test_WithdrawRevertsIfInvalidDestination() (gas: 111219)
StakeVaultCoverageTest:test_WithdrawTransfersGenericTokenToOwner() (gas: 139759)
StakeVaultMigrationTest:testMigrateToVault() (gas: 1157152)
StakeVaultMigrationTest:test_RevertWhenDestinationVaultIsNotRegistered() (gas: 166681)
StakeVaultMigrationTest:test_RevertWhenMigrationVaultNotEmpty() (gas: 631911)
@@ -209,4 +223,4 @@ UpgradeTest:test_RevertWhenNotOwner() (gas: 3696209)
UpgradeTest:test_UpgradeStakeManager() (gas: 9855347)
VaultRegistrationTest:test_VaultRegistration() (gas: 90138)
WithdrawTest:testOwner() (gas: 15365)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 373408)
WithdrawTest:test_CannotWithdrawStakedFunds() (gas: 373396)

View File

@@ -12,25 +12,23 @@ import { MockToken } from "./mocks/MockToken.sol";
contract StakeVaultTest is Test {
VaultFactory internal vaultFactory;
StakeManager internal streamer;
StakeVault internal stakeVault;
MockToken internal rewardToken;
MockToken internal stakingToken;
MockToken internal otherToken;
address internal alice = makeAddr("alice");
address internal bob = makeAddr("bob");
function _createTestVault(address owner) internal returns (StakeVault vault) {
function _createTestVault(address owner) internal returns (StakeVault stakeVault) {
vm.prank(owner);
vault = vaultFactory.createVault();
stakeVault = vaultFactory.createVault();
}
function setUp() public virtual {
rewardToken = new MockToken("Reward Token", "RT");
stakingToken = new MockToken("Staking Token", "ST");
otherToken = new MockToken("Other Token", "OT");
DeployStakeManagerScript deployment = new DeployStakeManagerScript();
(StakeManager stakeManager, VaultFactory _vaultFactory, DeploymentConfig deploymentConfig) = deployment.run();
@@ -82,3 +80,125 @@ contract WithdrawTest is StakeVaultTest {
stakeVault.withdraw(stakingToken, 10e18);
}
}
contract StakeVaultCoverageTest is StakeVaultTest {
/*////////////////////////////////////////////////////////////
TESTES PARA stake()
////////////////////////////////////////////////////////////*/
function test_StakeTransfersTokensToVault() public {
vm.prank(alice);
stakeVault.stake(1e18, 90 days);
assertEq(stakingToken.balanceOf(address(stakeVault)), 1e18);
assertEq(streamer.stakedBalanceOf(address(stakeVault)), 1e18);
}
function test_StakeRevertsIfNotOwner() public {
vm.prank(bob);
vm.expectRevert("Ownable: caller is not the owner");
stakeVault.stake(1e18, 90 days);
}
function test_StakeRevertsIfManagerNotTrusted() public {
vm.prank(alice);
stakeVault.trustStakeManager(address(0xDEAD));
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__StakeManagerImplementationNotTrusted.selector);
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 {
vm.prank(alice);
stakeVault.trustStakeManager(address(0xBEEF));
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__StakeManagerImplementationNotTrusted.selector);
stakeVault.lock(3600);
}
/*////////////////////////////////////////////////////////////
TESTES PARA unstake()
////////////////////////////////////////////////////////////*/
function test_UnstakeTransfersTokensBackToOwner() public {
uint256 startBalance = stakingToken.balanceOf(alice);
vm.prank(alice);
stakeVault.stake(5e18, 0);
vm.prank(alice);
stakeVault.unstake(5e18);
assertEq(stakingToken.balanceOf(alice), startBalance);
}
function test_UnstakeRevertsWithInvalidDestination() public {
vm.prank(alice);
stakeVault.stake(1e18, 0);
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__InvalidDestinationAddress.selector);
stakeVault.unstake(1e18, address(0));
}
/*////////////////////////////////////////////////////////////
TESTES PARA leave()
////////////////////////////////////////////////////////////*/
function test_LeaveRevertsWhenManagerTrusted() public {
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__NotAllowedToLeave.selector);
stakeVault.leave(alice);
}
function test_LeaveTransfersAllFundsAfterUntrustingManager() public {
vm.prank(alice);
stakeVault.stake(2e18, 0);
vm.prank(alice);
stakeVault.trustStakeManager(address(1));
vm.prank(alice);
stakeVault.leave(bob);
assertEq(stakingToken.balanceOf(bob), 2e18);
}
/*////////////////////////////////////////////////////////////
TESTES PARA withdraw()
////////////////////////////////////////////////////////////*/
function test_WithdrawOtherTokenTransfersToDestination() public {
otherToken.mint(address(stakeVault), 1e18);
vm.prank(alice);
stakeVault.withdraw(otherToken, 1e18, bob);
assertEq(otherToken.balanceOf(bob), 1e18);
}
function test_WithdrawRevertsIfInsufficientAvailableBalance() public {
vm.prank(alice);
stakeVault.stake(3e18, 0);
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__NotEnoughAvailableBalance.selector);
stakeVault.withdraw(stakingToken, 3e18);
}
function test_WithdrawTransfersGenericTokenToOwner() public {
otherToken.mint(address(stakeVault), 5e17);
vm.prank(alice);
stakeVault.withdraw(otherToken, 5e17);
assertEq(otherToken.balanceOf(alice), 5e17);
}
function test_WithdrawRevertsIfInvalidDestination() public {
otherToken.mint(address(stakeVault), 1e18);
vm.prank(alice);
vm.expectRevert(StakeVault.StakeVault__InvalidDestinationAddress.selector);
stakeVault.withdraw(otherToken, 1e18, address(0));
}
}