Skip to content

Commit 98da128

Browse files
committed
WIP
1 parent c6bace8 commit 98da128

2 files changed

Lines changed: 110 additions & 7 deletions

File tree

solidity/src/FlowYieldVaultsRequests.sol

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -513,13 +513,6 @@ contract FlowYieldVaultsRequests is ReentrancyGuard, Ownable2Step {
513513
}
514514
}
515515

516-
// ============================================
517-
// Receive Function
518-
// ============================================
519-
520-
/// @notice Allows contract to receive native $FLOW
521-
receive() external payable {}
522-
523516
// ============================================
524517
// External Functions - Admin
525518
// ============================================

solidity/test/FlowYieldVaultsRequests.t.sol

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,17 @@
22
pragma solidity 0.8.20;
33

44
import "forge-std/Test.sol";
5+
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
56
import "../src/FlowYieldVaultsRequests.sol";
67

8+
contract MockDAI is ERC20 {
9+
constructor() ERC20("Mock DAI", "DAI") {}
10+
11+
function mint(address to, uint256 amount) external {
12+
_mint(to, amount);
13+
}
14+
}
15+
716
contract FlowYieldVaultsRequestsTestHelper is FlowYieldVaultsRequests {
817
constructor(address coaAddress, address wflowAddress) FlowYieldVaultsRequests(coaAddress, wflowAddress) {}
918

@@ -41,11 +50,16 @@ contract FlowYieldVaultsRequestsTest is Test {
4150
string constant VAULT_ID = "A.0ae53cb6e3f42a79.FlowToken.Vault";
4251
string constant STRATEGY_ID = "A.045a1763c93006ca.MockStrategies.TracerStrategy";
4352

53+
MockDAI dai;
54+
4455
function setUp() public {
4556
vm.deal(user, 100 ether);
4657
vm.deal(user2, 100 ether);
4758
c = new FlowYieldVaultsRequestsTestHelper(coa, WFLOW);
4859
c.testRegisterYieldVaultId(42, user, NATIVE_FLOW);
60+
61+
dai = new MockDAI();
62+
dai.mint(user2, 1 ether);
4963
}
5064

5165
function _startProcessingBatch(uint256 requestId) internal {
@@ -1451,4 +1465,100 @@ contract FlowYieldVaultsRequestsTest is Test {
14511465
));
14521466
uint256 closeReq = c.closeYieldVault(100);
14531467
}
1468+
1469+
function test_CreateYieldVault_MsgValueValidation() public {
1470+
vm.startPrank(user);
1471+
1472+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustEqualAmount.selector);
1473+
c.createYieldVault{value: 5 ether}(NATIVE_FLOW, 1 ether, VAULT_ID, STRATEGY_ID);
1474+
1475+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustBeZero.selector);
1476+
c.createYieldVault{value: 5 ether}(WFLOW, 5 ether, VAULT_ID, STRATEGY_ID);
1477+
1478+
vm.stopPrank();
1479+
}
1480+
1481+
function test_CreateYieldVault_RevertTokenNotSupported() public {
1482+
deal(address(dai), user2, 20 ether);
1483+
assertEq(dai.balanceOf(user2), 20 ether);
1484+
1485+
vm.prank(user2);
1486+
vm.expectRevert(abi.encodeWithSelector(
1487+
FlowYieldVaultsRequests.TokenNotSupported.selector,
1488+
address(dai)
1489+
));
1490+
c.createYieldVault(address(dai), 5 ether, VAULT_ID, STRATEGY_ID);
1491+
}
1492+
1493+
function test_DepositToYieldVault_MsgValueValidation() public {
1494+
vm.prank(user);
1495+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustEqualAmount.selector);
1496+
c.depositToYieldVault{value: 5 ether}(42, NATIVE_FLOW, 1 ether);
1497+
1498+
c.testRegisterYieldVaultId(101, user, WFLOW);
1499+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustBeZero.selector);
1500+
c.depositToYieldVault{value: 5 ether}(101, WFLOW, 5 ether);
1501+
}
1502+
1503+
function test_DepositToYieldVault_RevertTokenNotSupported() public {
1504+
deal(address(dai), user2, 20 ether);
1505+
assertEq(dai.balanceOf(user2), 20 ether);
1506+
1507+
c.testRegisterYieldVaultId(101, user2, address(dai));
1508+
1509+
vm.prank(user2);
1510+
vm.expectRevert(abi.encodeWithSelector(
1511+
FlowYieldVaultsRequests.TokenNotSupported.selector,
1512+
address(dai)
1513+
));
1514+
c.depositToYieldVault{value: 5 ether}(101, address(dai), 1 ether);
1515+
}
1516+
1517+
function test_CompleteProcessing_MsgValueValidation() public {
1518+
vm.prank(user);
1519+
uint256 req1 = c.createYieldVault{value: 5 ether}(NATIVE_FLOW, 5 ether, VAULT_ID, STRATEGY_ID);
1520+
1521+
vm.prank(coa);
1522+
_startProcessingBatch(req1);
1523+
1524+
uint64 sentinelYieldVaultId = c.NO_YIELDVAULT_ID();
1525+
vm.prank(coa);
1526+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustEqualAmount.selector);
1527+
c.completeProcessing{value: 3 ether}(req1, false, sentinelYieldVaultId, "Failed");
1528+
1529+
c.testRegisterYieldVaultId(101, user2, address(dai));
1530+
c.setTokenConfig(address(dai), true, 0.5 ether, false);
1531+
1532+
vm.startPrank(user2);
1533+
deal(address(dai), user2, 20 ether);
1534+
dai.approve(address(c), 5 ether);
1535+
uint256 req2 = c.depositToYieldVault(101, address(dai), 5 ether);
1536+
vm.stopPrank();
1537+
1538+
vm.prank(coa);
1539+
_startProcessingBatch(req2);
1540+
1541+
vm.prank(coa);
1542+
vm.expectRevert(FlowYieldVaultsRequests.MsgValueMustBeZero.selector);
1543+
c.completeProcessing{value: 5 ether}(req2, false, 101, "Failed");
1544+
}
1545+
1546+
// function test_Stray_tokens() public {
1547+
// vm.deal(user2, 10 ether);
1548+
// assertEq(user2.balance, 10 ether);
1549+
1550+
// deal(address(dai), user2, 20 ether);
1551+
// assertEq(dai.balanceOf(user2), 20 ether);
1552+
1553+
// vm.prank(c.owner());
1554+
// c.setTokenConfig(address(dai), true, 0.5 ether, false);
1555+
1556+
// vm.startPrank(user2);
1557+
// dai.approve(address(c), 5 ether);
1558+
// uint256 reqId = c.createYieldVault(address(dai), 5 ether, VAULT_ID, STRATEGY_ID);
1559+
1560+
// assertEq(dai.balanceOf(address(c)), 5 ether);
1561+
1562+
// vm.stopPrank();
1563+
// }
14541564
}

0 commit comments

Comments
 (0)