From 8437fe4e6eee055d9048424714ecf797afd02f58 Mon Sep 17 00:00:00 2001 From: EmperorOrokuSaki Date: Thu, 8 Dec 2022 02:03:31 +0330 Subject: [PATCH] Make Burn TokenOwnerOnly & Add test suites --- contracts/FleekERC721.sol | 2 +- test/foundry/apps.t.sol | 46 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/contracts/FleekERC721.sol b/contracts/FleekERC721.sol index 47d9a9f..069dfde 100644 --- a/contracts/FleekERC721.sol +++ b/contracts/FleekERC721.sol @@ -229,7 +229,7 @@ contract FleekERC721 is ERC721, FleekAccessControl { function burn( uint256 tokenId - ) public virtual requireTokenController(tokenId) { + ) public virtual requireTokenOwner(tokenId) { _requireMinted(tokenId); require( ownerOf(tokenId) == msg.sender, diff --git a/test/foundry/apps.t.sol b/test/foundry/apps.t.sol index 58068c8..599ad20 100644 --- a/test/foundry/apps.t.sol +++ b/test/foundry/apps.t.sol @@ -31,6 +31,7 @@ contract FleekTest is Test { ); assertEq(mint, 0); + assertEq(fleekContract.ownerOf(mint), DEPLOYER); } function testMintingMintedToken() public { @@ -297,6 +298,28 @@ function testFailChangingAllPossibleFieldsOnAnotherUsersTokenWithoutAccess() pub fleekContract.burn(mint); } + function testFailTokenControllerAttemptsToBurnToken() public { + uint256 mint = fleekContract.mint( + DEPLOYER, + 'Foundry Test App', + 'This is a test application submitted by foundry tests.', + 'https://fleek.xyz', + 'https://fleek.xyz', + 'fleek_xyz', + 'afff3f6', + 'https://github.com/fleekxyz/contracts' + ); + + assertEq(mint, 0); + + fleekContract.addTokenController(mint, 0xb4c79daB8f259C7Aee6E5b2Aa729821864227e84); + + vm.prank(address(0xb4c79daB8f259C7Aee6E5b2Aa729821864227e84)); + + fleekContract.burn(mint); + } + + function testSetTokenName() public { uint256 mint = fleekContract.mint( DEPLOYER, @@ -550,7 +573,7 @@ function testFailChangingAllPossibleFieldsOnAnotherUsersTokenWithoutAccess() pub fleekContract.addTokenController(mint, 0xb4c79daB8f259C7Aee6E5b2Aa729821864227e84); } - function testFailAddTokenControllerTwice() public { + function testAddTokenControllerTwice() public { uint256 mint = fleekContract.mint( DEPLOYER, 'Foundry Test App', @@ -624,7 +647,7 @@ function testFailChangingAllPossibleFieldsOnAnotherUsersTokenWithoutAccess() pub fleekContract.removeTokenController(mint, 0xb4c79daB8f259C7Aee6E5b2Aa729821864227e84); } - function testFailRemoveUnknownTokenController() public { + function testRemoveUnknownTokenController() public { uint256 mint = fleekContract.mint( DEPLOYER, 'Foundry Test App', @@ -664,4 +687,23 @@ function testFailChangingAllPossibleFieldsOnAnotherUsersTokenWithoutAccess() pub fleekContract.removeTokenController(mint, DEPLOYER); } + function testBalanceOfDeployerAfterAndBeforeMinting() public { + assertEq(fleekContract.balanceOf(DEPLOYER), 0); + + uint256 mint = fleekContract.mint( + DEPLOYER, + 'Foundry Test App', + 'This is a test application submitted by foundry tests.', + 'https://fleek.xyz', + 'https://fleek.xyz', + 'fleek_xyz', + 'afff3f6', + 'https://github.com/fleekxyz/contracts' + ); + + assertEq(mint, 0); + + assertEq(fleekContract.balanceOf(DEPLOYER), 1); + } + }