prep audit test for divideNft
This commit is contained in:
parent
7d438f1c44
commit
1c7ff31322
83
test/unit/TokenDividerTest.audit.divideNft.t.sol
Normal file
83
test/unit/TokenDividerTest.audit.divideNft.t.sol
Normal file
@ -0,0 +1,83 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.18;
|
||||
|
||||
|
||||
import {Test, console} from 'forge-std/Test.sol';
|
||||
import {DeployTokenDivider} from 'script/DeployTokenDivider.s.sol';
|
||||
import {TokenDivider} from 'src/TokenDivider.sol';
|
||||
import {ERC721Mock} from '../mocks/ERC721Mock.sol';
|
||||
import {ERC20Mock} from '@openzeppelin/contracts/mocks/token/ERC20Mock.sol';
|
||||
import {Ownable} from '@openzeppelin/contracts/access/Ownable.sol';
|
||||
|
||||
|
||||
contract TokenDiverTest is Test {
|
||||
DeployTokenDivider deployer;
|
||||
TokenDivider tokenDivider;
|
||||
ERC721Mock erc721Mock;
|
||||
|
||||
address public USER = makeAddr("user");
|
||||
address public USER2 = makeAddr("user2");
|
||||
uint256 constant public STARTING_USER_BALANCE = 10e18;
|
||||
uint256 constant public AMOUNT = 2e18;
|
||||
uint256 constant public TOKEN_ID = 0;
|
||||
|
||||
function setUp() public {
|
||||
deployer = new DeployTokenDivider();
|
||||
tokenDivider = deployer.run();
|
||||
|
||||
erc721Mock = new ERC721Mock();
|
||||
|
||||
erc721Mock.mint(USER); // @auditor: user has the NFT
|
||||
vm.deal(USER2, STARTING_USER_BALANCE); // @auditor: user2 got 10 ether
|
||||
}
|
||||
|
||||
function test_assertSetUp() public {
|
||||
// then what?
|
||||
|
||||
// USER has no ERC721 NFT of TOKEN_ID
|
||||
assertTrue(address(erc721Mock.ownerOf(TOKEN_ID)) == address(USER2));
|
||||
// USER has no balance
|
||||
// USER2 has STARTING_USER_BALANCE
|
||||
}
|
||||
|
||||
/*
|
||||
function testDivideNft() public {
|
||||
|
||||
vm.startPrank(USER);
|
||||
erc721Mock.approve(address(tokenDivider), TOKEN_ID);
|
||||
|
||||
tokenDivider.divideNft(address(erc721Mock), TOKEN_ID, AMOUNT);
|
||||
vm.stopPrank();
|
||||
ERC20Mock erc20Mock = ERC20Mock(tokenDivider.getErc20InfoFromNft(address(erc721Mock)).erc20Address);
|
||||
|
||||
console.log("ERC20 Token name is: ", erc20Mock.name());
|
||||
console.log("ERC20 Token symbol is: ", erc20Mock.symbol());
|
||||
assertEq(tokenDivider.getErc20TotalMintedAmount(address(erc20Mock)), AMOUNT);
|
||||
assertEq(erc721Mock.ownerOf(TOKEN_ID), address(tokenDivider));
|
||||
assertEq(tokenDivider.getBalanceOf(USER, address(erc20Mock)), AMOUNT);
|
||||
|
||||
}
|
||||
|
||||
|
||||
modifier nftDivided() {
|
||||
vm.startPrank(USER);
|
||||
erc721Mock.approve(address(tokenDivider), TOKEN_ID);
|
||||
tokenDivider.divideNft(address(erc721Mock), TOKEN_ID, AMOUNT);
|
||||
vm.stopPrank();
|
||||
|
||||
_;
|
||||
|
||||
}
|
||||
|
||||
function testDivideNftFailsIsSenderIsNotNftOwner() public {
|
||||
vm.prank(USER);
|
||||
erc721Mock.approve(address(tokenDivider), TOKEN_ID);
|
||||
|
||||
vm.startPrank(USER2);
|
||||
vm.expectRevert(TokenDivider.TokenDivider__NotFromNftOwner.selector);
|
||||
tokenDivider.divideNft(address(erc721Mock), TOKEN_ID, AMOUNT);
|
||||
vm.stopPrank();
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user