From 62fbb87f628885cb7485c609287c2071d98be51e Mon Sep 17 00:00:00 2001 From: Atharva Date: Sat, 19 Jul 2025 12:52:10 +0530 Subject: [PATCH] #1022: feat: integrate deploySwapManager script in tests (9dd5b09) --- script/v2/usd/DeploySwapManager.s.sol | 31 ++++++++++-- test/v2/integration/RewardsManager.t.sol | 64 +++--------------------- test/v2/integration/VaultManager.t.sol | 11 ++-- 3 files changed, 42 insertions(+), 64 deletions(-) diff --git a/script/v2/usd/DeploySwapManager.s.sol b/script/v2/usd/DeploySwapManager.s.sol index c2b900a..b7d6334 100644 --- a/script/v2/usd/DeploySwapManager.s.sol +++ b/script/v2/usd/DeploySwapManager.s.sol @@ -51,13 +51,36 @@ contract DeploySwapManager is Configurable, DeploymentUtils, Script { vm.label(msg.sender, "Deployer EOA"); } + function setUp_(BaseConfig.Config memory _config, uint256 _privateKey) public { + config = _config; + + if (msg.sender != vm.addr(_privateKey)) { + revert("Private key does not match sender"); + } + + deployerWallet.privateKey = _privateKey; + deployerWallet.addr = vm.addr(_privateKey); + + vm.label(msg.sender, "Deployer EOA"); + } + + modifier asDeployer() { + if (deployerWallet.privateKey != 0) { + vm.startBroadcast(deployerWallet.privateKey); + } else { + vm.startBroadcast(); + } + + _; + + vm.stopBroadcast(); + } + function run() external returns (BaseConfig.Config memory) { return deploy(); } - function deploy() public returns (BaseConfig.Config memory) { - vm.startBroadcast(deployerWallet.privateKey); - + function deploy() public asDeployer returns (BaseConfig.Config memory) { console2.log("Deploying SwapManager from address %s", deployerWallet.addr); if (address(config.levelContracts.pauserGuard) == address(0)) { @@ -133,8 +156,6 @@ contract DeploySwapManager is Configurable, DeploymentUtils, Script { // Transfer ownership to admin timelock config.levelContracts.swapManager.transferOwnership(address(config.levelContracts.adminTimelock)); - vm.stopBroadcast(); - return config; } diff --git a/test/v2/integration/RewardsManager.t.sol b/test/v2/integration/RewardsManager.t.sol index 9fcef74..1d4937a 100644 --- a/test/v2/integration/RewardsManager.t.sol +++ b/test/v2/integration/RewardsManager.t.sol @@ -34,6 +34,7 @@ import {Upgradev2_1} from "@level/script/v2/Upgradev2_1.s.sol"; import {SwapManager} from "@level/src/v2/usd/SwapManager.sol"; import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; import {SwapConfig} from "@level/src/v2/usd/SwapManager.sol"; +import {DeploySwapManager} from "@level/script/v2/usd/DeploySwapManager.s.sol"; contract RewardsManagerMainnetTests is Utils, Configurable { using SafeTransferLib for ERC20; @@ -63,9 +64,12 @@ contract RewardsManagerMainnetTests is Utils, Configurable { initConfig(1); _deployNewOracles(); - vm.startPrank(deployer.addr); - _deploySwapManager(); - vm.stopPrank(); + DeploySwapManager deploySwapManager = new DeploySwapManager(); + + vm.prank(deployer.addr); + deploySwapManager.setUp_(config, deployer.privateKey); + + config = deploySwapManager.run(); Upgradev2_1 upgrade = new Upgradev2_1(); upgrade.setUp_(config); @@ -800,6 +804,7 @@ contract RewardsManagerMainnetTests is Utils, Configurable { function _deployNewOracles() internal { // Deploy CappedMNavOracle CappedOneDollarOracle mNavOracle = new CappedOneDollarOracle(address(config.oracles.mNav)); + config.oracles.cappedMNav = AggregatorV3Interface(address(mNavOracle)); // Deploy sUsdcOracle config.sparkVaults.sUsdc.oracle = deployERC4626Oracle(config.sparkVaults.sUsdc.vault); @@ -813,59 +818,6 @@ contract RewardsManagerMainnetTests is Utils, Configurable { config.umbrellaVaults.waUsdtStakeToken.oracle = IERC4626Oracle(address(oracleUsdt)); } - function _deploySwapManager() internal { - // Replicate SwapManager deploy script - CappedOneDollarOracle mNavOracle = new CappedOneDollarOracle(address(config.oracles.mNav)); - config.oracles.cappedMNav = AggregatorV3Interface(address(mNavOracle)); - - bytes memory constructorArgs = abi.encodeWithSignature( - "initialize(address,address,address)", - deployer.addr, - address(config.periphery.uniswapV3Router), - address(config.levelContracts.pauserGuard) - ); - - SwapManager _swapManager = new SwapManager(); - ERC1967Proxy _swapManagerProxy = new ERC1967Proxy(address(_swapManager), constructorArgs); - - config.levelContracts.swapManager = SwapManager(address(_swapManagerProxy)); - config.levelContracts.swapManager.setAuthority(config.levelContracts.rolesAuthority); - - config.levelContracts.swapManager.setSwapConfig( - address(config.tokens.usdc), - address(config.tokens.wrappedM), - SwapConfig({ - pool: 0x970A7749EcAA4394C8B2Bf5F2471F41FD6b79288, // wM/USDC pool - fee: 100, //0.01% - tickLower: -10, - tickUpper: 10, - slippageBps: 5, //0.05% - active: true - }) - ); - - config.levelContracts.swapManager.setSwapConfig( - address(config.tokens.wrappedM), - address(config.tokens.usdc), - SwapConfig({ - pool: 0x970A7749EcAA4394C8B2Bf5F2471F41FD6b79288, // wM/USDC pool - fee: 100, //0.01% - tickLower: -10, - tickUpper: 10, - slippageBps: 5, //0.05% - active: true - }) - ); - - config.levelContracts.swapManager.addOracle(address(config.tokens.usdc), address(config.oracles.usdc)); - config.levelContracts.swapManager.addOracle(address(config.tokens.wrappedM), address(config.oracles.cappedMNav)); - config.levelContracts.swapManager.setHeartBeat(address(config.tokens.usdc), 1 days); - config.levelContracts.swapManager.setHeartBeat(address(config.tokens.wrappedM), 26 hours); - - // Transfer ownership to admin timelock - config.levelContracts.swapManager.transferOwnership(address(config.levelContracts.adminTimelock)); - } - function _upgradeRewardsManager() internal { RewardsManager impl = new RewardsManager(); vm.prank(address(config.levelContracts.adminTimelock)); diff --git a/test/v2/integration/VaultManager.t.sol b/test/v2/integration/VaultManager.t.sol index 79b7a86..d9dd816 100644 --- a/test/v2/integration/VaultManager.t.sol +++ b/test/v2/integration/VaultManager.t.sol @@ -30,6 +30,7 @@ import {SwapConfig} from "@level/src/v2/usd/SwapManager.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {Upgradev2_1} from "@level/script/v2/Upgradev2_1.s.sol"; import {RewardsManager} from "@level/src/v2/usd/RewardsManager.sol"; +import {DeploySwapManager} from "@level/script/v2/usd/DeploySwapManager.s.sol"; contract VaultManagerMainnetTests is Utils, Configurable { using SafeTransferLib for ERC20; @@ -66,9 +67,12 @@ contract VaultManagerMainnetTests is Utils, Configurable { initConfig(1); _deployNewOracles(); - vm.startPrank(deployer.addr); - _deploySwapManager(); - vm.stopPrank(); + DeploySwapManager deploySwapManager = new DeploySwapManager(); + + vm.prank(deployer.addr); + deploySwapManager.setUp_(config, deployer.privateKey); + + config = deploySwapManager.run(); Upgradev2_1 upgrade = new Upgradev2_1(); upgrade.setUp_(config); @@ -166,6 +170,7 @@ contract VaultManagerMainnetTests is Utils, Configurable { function _deployNewOracles() internal { // Deploy CappedMNavOracle CappedOneDollarOracle mNavOracle = new CappedOneDollarOracle(address(config.oracles.mNav)); + config.oracles.cappedMNav = AggregatorV3Interface(address(mNavOracle)); // Deploy sUsdcOracle config.sparkVaults.sUsdc.oracle = deployERC4626Oracle(config.sparkVaults.sUsdc.vault);