Skip to content

Commit 47a0311

Browse files
committed
test: add flash actions testing
1 parent 1e9dcf5 commit 47a0311

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

test/forge/Blue.t.sol

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,23 @@ contract BlueTest is
771771
blue.liquidate(market, address(this), toSeize, abi.encode(this.testLiquidateCallback.selector, hex""));
772772
}
773773

774+
function testFlashActions(uint256 amount) public {
775+
amount = bound(amount, 10, 2 ** 64);
776+
borrowableOracle.setPrice(1e18);
777+
uint256 toBorrow = amount.mulWadDown(LLTV);
778+
779+
borrowableAsset.setBalance(address(this), 2 * toBorrow);
780+
blue.supply(market, toBorrow, address(this), hex"");
781+
782+
blue.supplyCollateral(
783+
market, amount, address(this), abi.encode(this.testFlashActions.selector, abi.encode(toBorrow))
784+
);
785+
assertGt(blue.borrowShare(market.id(), address(this)), 0, "no borrow");
786+
787+
blue.repay(market, toBorrow, address(this), abi.encode(this.testFlashActions.selector, abi.encode(amount)));
788+
assertEq(blue.collateral(market.id(), address(this)), 0, "no withdraw collateral");
789+
}
790+
774791
function onBlueSupply(uint256 amount, bytes calldata data) external {
775792
require(msg.sender == address(blue));
776793
(bytes4 selector, bytes memory data) = abi.decode(data, (bytes4, bytes));
@@ -784,6 +801,11 @@ contract BlueTest is
784801
(bytes4 selector, bytes memory data) = abi.decode(data, (bytes4, bytes));
785802
if (selector == this.testSupplyCollateralCallback.selector) {
786803
collateralAsset.approve(address(blue), amount);
804+
} else if (selector == this.testFlashActions.selector) {
805+
uint256 toBorrow = abi.decode(data, (uint256));
806+
collateralAsset.setBalance(address(this), amount);
807+
borrowableAsset.setBalance(address(this), toBorrow);
808+
blue.borrow(market, toBorrow, address(this));
787809
}
788810
}
789811

@@ -792,6 +814,9 @@ contract BlueTest is
792814
(bytes4 selector, bytes memory data) = abi.decode(data, (bytes4, bytes));
793815
if (selector == this.testRepayCallback.selector) {
794816
borrowableAsset.approve(address(blue), amount);
817+
} else if (selector == this.testFlashActions.selector) {
818+
uint256 toWithdraw = abi.decode(data, (uint256));
819+
blue.withdrawCollateral(market, toWithdraw, address(this));
795820
}
796821
}
797822

0 commit comments

Comments
 (0)