Skip to content

Commit 778f1f4

Browse files
committed
remove mutation base
1 parent 08c5321 commit 778f1f4

13 files changed

+53
-94
lines changed

test-foundry/libraries/vault/MasterVaultCore.t.sol

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ contract MasterVaultCoreTest is Test {
4242
string public symbol = "mTST";
4343
uint256 public constant DEAD_SHARES = 10 ** 6;
4444

45+
address public keeper = address(0xBBBB);
46+
address public beneficiaryAddr = address(0x9999);
47+
address public generalManager = address(0xAAAA);
48+
address public pauser = address(0xCCCC);
49+
4550
struct State {
4651
uint256 userShares;
4752
uint256 masterVaultTotalAssets;
@@ -70,6 +75,14 @@ contract MasterVaultCoreTest is Test {
7075
);
7176
token = new TestERC20();
7277
vault = MasterVault(factory.deployVault(address(token)));
78+
79+
vault.rolesRegistry().grantRole(vault.GENERAL_MANAGER_ROLE(), address(this));
80+
vault.rolesRegistry().grantRole(vault.GENERAL_MANAGER_ROLE(), generalManager);
81+
vault.rolesRegistry().grantRole(vault.KEEPER_ROLE(), keeper);
82+
vault.rolesRegistry().grantRole(vault.FEE_MANAGER_ROLE(), address(this));
83+
vault.rolesRegistry().grantRole(vault.PAUSER_ROLE(), pauser);
84+
vault.setBeneficiary(beneficiaryAddr);
85+
vault.setMinimumRebalanceAmount(1);
7386
}
7487

7588
function _checkState(State memory expectedState) internal {
@@ -135,4 +148,22 @@ contract MasterVaultCoreTest is Test {
135148
console2.log(" subVaultTotalSupply:", state.subVaultTotalSupply);
136149
console2.log(" subVaultTokenBalance:", state.subVaultTokenBalance);
137150
}
151+
152+
function _depositAs(uint256 amount) internal returns (uint256) {
153+
vm.prank(user);
154+
token.mintAmount(amount);
155+
vm.startPrank(user);
156+
token.approve(address(vault), amount);
157+
uint256 shares = vault.deposit(amount);
158+
vm.stopPrank();
159+
return shares;
160+
}
161+
162+
function _setupWithAllocation(uint256 depositAmount, uint64 allocationWad) internal {
163+
_depositAs(depositAmount);
164+
vault.setTargetAllocationWad(allocationWad);
165+
vm.warp(block.timestamp + 2);
166+
vm.prank(keeper);
167+
vault.rebalance(-1e18);
168+
}
138169
}

test-foundry/libraries/vault/mutation/MasterVaultAccessControl.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66

7-
contract MasterVaultAccessControlTest is MasterVaultMutationBase {
7+
contract MasterVaultAccessControlTest is MasterVaultCoreTest {
88
function test_onlyGateway_rejectsNonGateway() public {
99
address notGateway = address(0x1234);
1010
vm.prank(notGateway);

test-foundry/libraries/vault/mutation/MasterVaultDefaultSubVault.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {
66
DefaultSubVault
77
} from "../../../../contracts/tokenbridge/libraries/vault/MasterVaultFactory.sol";
88

9-
contract MasterVaultDefaultSubVaultTest is MasterVaultMutationBase {
9+
contract MasterVaultDefaultSubVaultTest is MasterVaultCoreTest {
1010
function test_defaultSubVault_withdraw_onlyMasterVault() public {
1111
DefaultSubVault dsv = DefaultSubVault(address(vault.subVault()));
1212
address attacker = address(0xdead);

test-foundry/libraries/vault/mutation/MasterVaultFees.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66
import {TestERC20} from "../../../../contracts/tokenbridge/test/TestERC20.sol";
77
import {IERC4626} from "@openzeppelin/contracts/interfaces/IERC4626.sol";
88
import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
99
import {Vm} from "forge-std/Test.sol";
1010

11-
contract MasterVaultFeesTest is MasterVaultMutationBase {
11+
contract MasterVaultFeesTest is MasterVaultCoreTest {
1212
function test_totalProfit_correctMath() public {
1313
// this test was AI generated to target a mutant where subtract is replaced with modulo in profit calculation
1414

test-foundry/libraries/vault/mutation/MasterVaultInit.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66
import {TestERC20} from "../../../../contracts/tokenbridge/test/TestERC20.sol";
77
import {IAccessControlUpgradeable} from "@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol";
@@ -26,7 +26,7 @@ contract OverflowDecimalsToken is BadTokenBase {
2626
function decimals() external pure returns (uint8) { return type(uint8).max - 5; }
2727
}
2828

29-
contract MasterVaultInitTest is MasterVaultMutationBase {
29+
contract MasterVaultInitTest is MasterVaultCoreTest {
3030
function test_initialize_setsERC20Name() public {
3131
string memory n = vault.name();
3232
assertTrue(bytes(n).length > 0, "name should be set");

test-foundry/libraries/vault/mutation/MasterVaultMutationBase.t.sol

Lines changed: 0 additions & 55 deletions
This file was deleted.

test-foundry/libraries/vault/mutation/MasterVaultPause.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66

7-
contract MasterVaultPauseTest is MasterVaultMutationBase {
7+
contract MasterVaultPauseTest is MasterVaultCoreTest {
88
function test_pause_works() public {
99
vm.prank(pauser);
1010
vault.pause();

test-foundry/libraries/vault/mutation/MasterVaultRebalance.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66

7-
contract MasterVaultRebalanceTest is MasterVaultMutationBase {
7+
contract MasterVaultRebalanceTest is MasterVaultCoreTest {
88
function test_rebalance_targetAllocationMet_reverts() public {
99
_setupWithAllocation(1e18, 5e17);
1010
// Rebalance again with same allocation - should be met now

test-foundry/libraries/vault/mutation/MasterVaultRebalanceCooldown.t.sol

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66

7-
contract MasterVaultRebalanceCooldownTest is MasterVaultMutationBase {
7+
contract MasterVaultRebalanceCooldownTest is MasterVaultCoreTest {
88
function test_rebalance_cooldownMath() public {
99
_depositAs(10e18);
1010
vault.setTargetAllocationWad(3e17); // 30% allocation
Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
// SPDX-License-Identifier: UNLICENSED
22
pragma solidity ^0.8.0;
33

4-
import {MasterVaultMutationBase} from "./MasterVaultMutationBase.t.sol";
4+
import {MasterVaultCoreTest} from "../MasterVaultCore.t.sol";
55
import {MasterVault} from "../../../../contracts/tokenbridge/libraries/vault/MasterVault.sol";
66

7-
contract MasterVaultRedeemTest is MasterVaultMutationBase {
7+
contract MasterVaultRedeemTest is MasterVaultCoreTest {
88
function test_redeem_minAssets_reverts() public {
99
uint256 shares = _depositAs(1e18);
1010
vm.prank(user);
@@ -13,21 +13,4 @@ contract MasterVaultRedeemTest is MasterVaultMutationBase {
1313
);
1414
vault.redeem(shares, 2e18);
1515
}
16-
17-
// /// TARGETS MUTANT #38 in MasterVault.sol
18-
// function test_redeem_minAssets_swapArgs_gt0() public {
19-
// uint256 shares = _depositAs(1e18);
20-
// vm.prank(user);
21-
// // minAssets=1 should pass since assets >= 1
22-
// vault.redeem(shares, 1);
23-
// }
24-
25-
// /// TARGETS MUTANT #39 in MasterVault.sol
26-
// function test_redeem_minAssets_swapedComparison() public {
27-
// uint256 shares = _depositAs(1e18);
28-
// // Request minAssets just above what we'd get
29-
// vm.prank(user);
30-
// vm.expectRevert();
31-
// vault.redeem(shares, 1e18 + 1);
32-
// }
3316
}

0 commit comments

Comments
 (0)