Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/hooks/stake/gearbox/ApproveAndGearboxStakeHook.sol
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,10 @@ contract ApproveAndGearboxStakeHook is BaseHook, ISuperHookContextAware {

/// @inheritdoc ISuperHookInspector
function inspect(bytes calldata data) external pure override returns (bytes memory) {
return abi.encodePacked(data.extractYieldSource());
return abi.encodePacked(
data.extractYieldSource(),
BytesLib.toAddress(data, 52) // token
);
}

/*//////////////////////////////////////////////////////////////
Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/claim/fluid/FluidClaimRewardHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { IFluidLendingStakingRewards } from "../../../../../src/vendor/fluid/IFl
import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract FluidClaimRewardHookTest is Helpers {
using BytesLib for bytes;

FluidClaimRewardHook public hook;
address public stakingRewards;
address public rewardToken;
Expand Down Expand Up @@ -86,6 +89,9 @@ contract FluidClaimRewardHookTest is Helpers {
bytes memory data = _encodeData();
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), stakingRewards);
assertEq(BytesLib.toAddress(argsEncoded, 20), rewardToken);
}

function test_CalldataDecoding() public view {
Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/claim/gearbox/GearboxClaimRewardHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { IGearboxFarmingPool } from "../../../../../src/vendor/gearbox/IGearboxFarmingPool.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract GearboxClaimRewardHookTest is Helpers {
using BytesLib for bytes;

GearboxClaimRewardHook public hook;
address public mockFarmingPool;
address public mockRewardToken;
Expand Down Expand Up @@ -86,6 +89,9 @@ contract GearboxClaimRewardHookTest is Helpers {
bytes memory data = _encodeData();
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), mockFarmingPool);
assertEq(BytesLib.toAddress(argsEncoded, 20), mockRewardToken);
}

function test_CalldataDecoding() public view {
Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/claim/yearn/YearnClaimRewardHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { IYearnStakingRewardsMulti } from "../../../../../src/vendor/yearn/IYearnStakingRewardsMulti.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract YearnClaimOneRewardHookTest is Helpers {
using BytesLib for bytes;

YearnClaimOneRewardHook public hook;
address public mockYieldSource;
address public mockRewardToken;
Expand Down Expand Up @@ -80,6 +83,9 @@ contract YearnClaimOneRewardHookTest is Helpers {
bytes memory data = _encodeData();
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), mockYieldSource);
assertEq(BytesLib.toAddress(argsEncoded, 20), mockRewardToken);
}

function test_CalldataDecoding() public view {
Expand Down
7 changes: 7 additions & 0 deletions test/unit/hooks/stake/fluid/ApproveAndFluidStakeHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract ApproveAndFluidStakeHookTest is Helpers {
using BytesLib for bytes;

ApproveAndFluidStakeHook public hook;

bytes32 yieldSourceOracleId;
Expand Down Expand Up @@ -43,7 +46,11 @@ contract ApproveAndFluidStakeHookTest is Helpers {
function test_Inspector() public view {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);

assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
assertEq(BytesLib.toAddress(argsEncoded, 20), token);
}

function test_Build() public view {
Expand Down
5 changes: 5 additions & 0 deletions test/unit/hooks/stake/fluid/FluidStakeHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract FluidStakeHookTest is Helpers {
using BytesLib for bytes;

FluidStakeHook public hook;

bytes32 yieldSourceOracleId;
Expand All @@ -36,6 +39,8 @@ contract FluidStakeHookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
}

function test_DecodeUsePrevHookAmount() public view {
Expand Down
5 changes: 5 additions & 0 deletions test/unit/hooks/stake/fluid/FluidUnstakeHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract FluidUnstakeHookTest is Helpers {
using BytesLib for bytes;

FluidUnstakeHook public hook;

bytes32 yieldSourceOracleId;
Expand All @@ -36,6 +39,8 @@ contract FluidUnstakeHookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
}

function test_DecodeUsePrevHookAmount() public view {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,16 @@ pragma solidity 0.8.30;

import { Execution } from "modulekit/accounts/erc7579/lib/ExecutionLib.sol";
import { ApproveAndGearboxStakeHook } from "../../../../../src/hooks/stake/gearbox/ApproveAndGearboxStakeHook.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";
import { ISuperHook } from "../../../../../src/interfaces/ISuperHook.sol";
import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";

contract ApproveAndGearboxStakeHookTest is Helpers {
using BytesLib for bytes;

ApproveAndGearboxStakeHook public hook;

bytes32 yieldSourceOracleId;
Expand Down Expand Up @@ -80,6 +83,10 @@ contract ApproveAndGearboxStakeHookTest is Helpers {
function test_Inspector() public view {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);

assertEq(yieldSource, BytesLib.toAddress(argsEncoded, 0));
assertEq(token, BytesLib.toAddress(argsEncoded, 20));

assertGt(argsEncoded.length, 0);
}

Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/stake/gearbox/GearboxStakeHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract GearboxStakeHookTest is Helpers {
using BytesLib for bytes;

GearboxStakeHook public hook;

bytes32 yieldSourceOracleId;
Expand All @@ -35,7 +38,10 @@ contract GearboxStakeHookTest is Helpers {
function test_Inspector() public view {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);

assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
}

function test_Build() public view {
Expand Down
5 changes: 5 additions & 0 deletions test/unit/hooks/stake/gearbox/GearboxUnstakeHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract GearboxUnstakeHookTest is Helpers {
using BytesLib for bytes;

GearboxUnstakeHook public hook;

bytes32 yieldSourceOracleId;
Expand All @@ -36,6 +39,8 @@ contract GearboxUnstakeHookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
}

function test_DecodeUsePrevHookAmount() public view {
Expand Down
3 changes: 3 additions & 0 deletions test/unit/hooks/tokens/BatchTransferHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@ import { MockERC20 } from "../../../mocks/MockERC20.sol";
import { MockHook } from "../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../utils/Helpers.sol";
import { BytesLib } from "../../../../src/vendor/BytesLib.sol";

contract BatchTransferHookTest is Helpers {
using BytesLib for bytes;

BatchTransferHook public hook;

address token1;
Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/tokens/erc20/ApproveERC20Hook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract ApproveERC20HookTest is Helpers {
using BytesLib for bytes;

ApproveERC20Hook public hook;

address token;
Expand Down Expand Up @@ -99,6 +102,9 @@ contract ApproveERC20HookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), token);
assertEq(BytesLib.toAddress(argsEncoded, 20), spender);
}

function _encodeData(bool usePrev) internal view returns (bytes memory) {
Expand Down
6 changes: 6 additions & 0 deletions test/unit/hooks/tokens/erc20/TransferERC20Hook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract TransferERC20HookTest is Helpers {
using BytesLib for bytes;

TransferERC20Hook public hook;

address token;
Expand Down Expand Up @@ -85,6 +88,9 @@ contract TransferERC20HookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), token);
assertEq(BytesLib.toAddress(argsEncoded, 20), to);
}

function _encodeData(bool usePrev) internal view returns (bytes memory) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@ import { ISuperExecutor } from "../../../../../src/interfaces/ISuperExecutor.sol
import { IStandardizedYield } from "../../../../../src/vendor/pendle/IStandardizedYield.sol";
import { MockLedger, MockLedgerConfiguration } from "../../../../mocks/MockLedger.sol";
import { RhinestoneModuleKit, AccountInstance, UserOpData, ModuleKitHelpers } from "modulekit/ModuleKit.sol";

import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";
import { MODULE_TYPE_EXECUTOR } from "modulekit/accounts/kernel/types/Constants.sol";

contract ApproveAndDeposit5115VaultHookTest is Helpers, RhinestoneModuleKit, InternalHelpers {
using BytesLib for bytes;

ApproveAndDeposit5115VaultHook public hook;

using ModuleKitHelpers for *;
Expand Down Expand Up @@ -200,11 +202,12 @@ contract ApproveAndDeposit5115VaultHookTest is Helpers, RhinestoneModuleKit, Int
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
assertEq(BytesLib.toAddress(argsEncoded, 20), token);
}

function _encodeData(bool usePrevHook) internal view returns (bytes memory) {
return abi.encodePacked(
yieldSourceOracleId, yieldSource, token, amount, amount, usePrevHook
);
return abi.encodePacked(yieldSourceOracleId, yieldSource, token, amount, amount, usePrevHook);
}
}
10 changes: 7 additions & 3 deletions test/unit/hooks/vaults/5115/Deposit5115VaultHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract Deposit5115VaultHookTest is Helpers {
using BytesLib for bytes;

Deposit5115VaultHook public hook;

bytes32 yieldSourceOracleId;
Expand Down Expand Up @@ -120,11 +123,12 @@ contract Deposit5115VaultHookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
assertEq(BytesLib.toAddress(argsEncoded, 20), token);
}

function _encodeData(bool usePrevHook) internal view returns (bytes memory) {
return abi.encodePacked(
yieldSourceOracleId, yieldSource, token, amount, amount, usePrevHook
);
return abi.encodePacked(yieldSourceOracleId, yieldSource, token, amount, amount, usePrevHook);
}
}
6 changes: 6 additions & 0 deletions test/unit/hooks/vaults/5115/Redeem5115VaultHook.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,11 @@ import { MockERC20 } from "../../../../mocks/MockERC20.sol";
import { MockHook } from "../../../../mocks/MockHook.sol";
import { BaseHook } from "../../../../../src/hooks/BaseHook.sol";
import { Helpers } from "../../../../utils/Helpers.sol";
import { BytesLib } from "../../../../../src/vendor/BytesLib.sol";

contract Redeem5115VaultHookTest is Helpers {
using BytesLib for bytes;

Redeem5115VaultHook public hook;

bytes32 yieldSourceOracleId;
Expand Down Expand Up @@ -119,6 +122,9 @@ contract Redeem5115VaultHookTest is Helpers {
bytes memory data = _encodeData(false);
bytes memory argsEncoded = hook.inspect(data);
assertGt(argsEncoded.length, 0);

assertEq(BytesLib.toAddress(argsEncoded, 0), yieldSource);
assertEq(BytesLib.toAddress(argsEncoded, 20), token);
}

function _encodeData(bool usePrevHook) internal view returns (bytes memory) {
Expand Down
Loading