@@ -771,6 +771,23 @@ contract BlueTest is
771
771
blue.liquidate (market, address (this ), toSeize, abi.encode (this .testLiquidateCallback.selector , hex "" ));
772
772
}
773
773
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
+
774
791
function onBlueSupply (uint256 amount , bytes calldata data ) external {
775
792
require (msg .sender == address (blue));
776
793
(bytes4 selector , bytes memory data ) = abi.decode (data, (bytes4 , bytes ));
@@ -784,6 +801,11 @@ contract BlueTest is
784
801
(bytes4 selector , bytes memory data ) = abi.decode (data, (bytes4 , bytes ));
785
802
if (selector == this .testSupplyCollateralCallback.selector ) {
786
803
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 ));
787
809
}
788
810
}
789
811
@@ -792,6 +814,9 @@ contract BlueTest is
792
814
(bytes4 selector , bytes memory data ) = abi.decode (data, (bytes4 , bytes ));
793
815
if (selector == this .testRepayCallback.selector ) {
794
816
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 ));
795
820
}
796
821
}
797
822
0 commit comments