diff --git a/.github/workflows/pull-request-build-and-test.yml b/.github/workflows/pull-request-build-and-test.yml index 99948cdae..9a50d6a1e 100644 --- a/.github/workflows/pull-request-build-and-test.yml +++ b/.github/workflows/pull-request-build-and-test.yml @@ -49,7 +49,7 @@ jobs: run: forge install - name: Run forge tests - run: forge test --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test' + run: forge test --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test|LiFiZapperTest' build-and-test-bsc: needs: [lint] @@ -95,7 +95,7 @@ jobs: run: forge install - name: Run forge tests on Polygon - run: forge test --fork-url https://rpc.ankr.com/polygon --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test' + run: forge test --fork-url https://rpc.ankr.com/polygon --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test|LiFiZapperTest' build-and-test-evmostestnet: needs: [lint] @@ -117,7 +117,7 @@ jobs: run: forge install - name: Run forge tests on Evmos Testnet - run: forge test --fork-url https://eth.bd.evmos.dev:8545 --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test' + run: forge test --fork-url https://eth.bd.evmos.dev:8545 --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test|LiFiZapperTest' build-and-test-moonbeam: needs: [lint] @@ -139,4 +139,4 @@ jobs: run: forge install - name: Run forge tests on Moonbeam - run: forge test --fork-url https://moonbeam.api.onfinality.io/public --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test' + run: forge test --fork-url https://moonbeam.api.onfinality.io/public --fork-block-number ${FORK_BLOCK_NUMBER} --no-match-contract 'Abstract|BeefyERC4626Test|DotDotERC4626Test|ArrakisERC4626Test|JarvisERC4626Test|LiFiZapperTest' diff --git a/.gitmodules b/.gitmodules index 8edea5696..a8dfc9023 100644 --- a/.gitmodules +++ b/.gitmodules @@ -19,3 +19,6 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "lib/fuse-pool-zap"] + path = lib/fuse-pool-zap + url = https://github.com/lifinance/fuse-pool-zap diff --git a/contracts/test/external/lifi/LiFiZapperTest.t.sol b/contracts/test/external/lifi/LiFiZapperTest.t.sol new file mode 100644 index 000000000..8a731422d --- /dev/null +++ b/contracts/test/external/lifi/LiFiZapperTest.t.sol @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import "ds-test/test.sol"; +import "forge-std/Vm.sol"; + +import "../../config/BaseTest.t.sol"; +import { ERC20 } from "solmate/tokens/ERC20.sol"; +import { IFusePool, IFToken, FusePoolZap } from "fuse-pool-zap/FusePoolZap.sol"; + +// Using 2BRL +// Tested on block 19052824 +contract LiFiZapperTest is BaseTest { + bool public shouldRunTest; + FusePoolZap internal zap; + + address internal constant JARVIS_FUSE_POOL = 0x31d76A64Bc8BbEffb601fac5884372DEF910F044; + address internal constant BUSD = 0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56; + address internal constant FTOKEN = 0xa7213deB44f570646Ea955771Cc7f39B58841363; + address internal constant DEPOSITOR = 0x30C3002f742ad0811169d307ca39863209c80540; + + constructor() { + shouldRunTest = forChains(BSC_MAINNET); + } + + function setUp() public { + zap = new FusePoolZap(); + } + + function testCanZapIn() public { + vm.startPrank(DEPOSITOR); + + uint256 amount = 1000 * 10**ERC20(BUSD).decimals(); + + ERC20(BUSD).approve(address(zap), amount); + zap.zapIn(JARVIS_FUSE_POOL, BUSD, amount); + + assertEq(ERC20(FTOKEN).balanceOf(DEPOSITOR) > 0, true); + + vm.stopPrank(); + } +} diff --git a/foundry.toml b/foundry.toml index 36a47f2bd..6c9adb9a7 100644 --- a/foundry.toml +++ b/foundry.toml @@ -2,5 +2,6 @@ src = 'contracts' bytecode_hash = 'none' solc_version = "0.8.10" +libs = ["node_modules", "lib"] # See more config options https://github.com/gakonst/foundry/tree/master/config diff --git a/lib/fuse-pool-zap b/lib/fuse-pool-zap new file mode 160000 index 000000000..5906dbf4b --- /dev/null +++ b/lib/fuse-pool-zap @@ -0,0 +1 @@ +Subproject commit 5906dbf4b1f8aa54bb82751943bbaedcc3e7c03b diff --git a/remappings.txt b/remappings.txt index 2441a8f45..beefdc1cc 100644 --- a/remappings.txt +++ b/remappings.txt @@ -7,4 +7,5 @@ ds-test/=lib/ds-test/src/ weird-erc20/=lib/fuse-flywheel/lib/libcompound/lib/solmate/lib/weird-erc20/src/ flywheel-v2/=lib/flywheel-v2/src/ flywheel/=lib/flywheel-v2/src/ -@openzeppelin=lib/openzeppelin-contracts/ \ No newline at end of file +@openzeppelin=lib/openzeppelin-contracts/ +fuse-pool-zap/=lib/fuse-pool-zap/src/ \ No newline at end of file