Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
N
nebula
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
exchain
nebula
Commits
3054e757
Unverified
Commit
3054e757
authored
Dec 15, 2022
by
Kelvin Fichter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test(ctb): OptimismMintableERC721 tests
Ports tests for the OptimismMintableERC721 contract.
parent
13a72cb2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
132 additions
and
0 deletions
+132
-0
.gas-snapshot
packages/contracts-bedrock/.gas-snapshot
+6
-0
OptimismMintableERC721.t.sol
...racts-bedrock/contracts/test/OptimismMintableERC721.t.sol
+126
-0
No files found.
packages/contracts-bedrock/.gas-snapshot
View file @
3054e757
...
...
@@ -224,6 +224,12 @@ OptimismMintableTokenFactory_Test:test_bridge_succeeds() (gas: 7577)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_remoteIsZero_succeeds() (gas: 9413)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_sameTwice_succeeds() (gas: 2176713)
OptimismMintableTokenFactory_Test:test_createStandardL2Token_succeeds() (gas: 1095296)
OptimismMintableERC721_Test:test_burn_notBridge_reverts() (gas: 136922)
OptimismMintableERC721_Test:test_burn_succeeds() (gas: 118779)
OptimismMintableERC721_Test:test_constructor_succeeds() (gas: 24162)
OptimismMintableERC721_Test:test_safeMint_notBridge_reverts() (gas: 11142)
OptimismMintableERC721_Test:test_safeMint_succeeds() (gas: 140502)
OptimismMintableERC721_Test:test_tokenURI_succeeds() (gas: 163420)
OptimismPortalUpgradeable_Test:test_initialize_cannotInitImpl_reverts() (gas: 10791)
OptimismPortalUpgradeable_Test:test_initialize_cannotInitProxy_reverts() (gas: 15833)
OptimismPortalUpgradeable_Test:test_params_initValuesOnProxy_succeeds() (gas: 16011)
...
...
packages/contracts-bedrock/contracts/test/OptimismMintableERC721.t.sol
0 → 100644
View file @
3054e757
// SPDX-License-Identifier: MIT
pragma solidity 0.8.15;
import { ERC721 } from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import { IERC165 } from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
import { Strings } from "@openzeppelin/contracts/utils/Strings.sol";
import { ERC721Bridge_Initializer } from "./CommonTest.t.sol";
import { OptimismMintableERC721 } from "../universal/OptimismMintableERC721.sol";
contract OptimismMintableERC721_Test is ERC721Bridge_Initializer {
ERC721 internal L1Token;
OptimismMintableERC721 internal L2Token;
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
event Mint(address indexed account, uint256 tokenId);
event Burn(address indexed account, uint256 tokenId);
function setUp() public override {
super.setUp();
// Set up the token pair.
L1Token = new ERC721("L1Token", "L1T");
L2Token = new OptimismMintableERC721(
address(L2Bridge),
1,
address(L1Token),
"L2Token",
"L2T"
);
// Label the addresses for nice traces.
vm.label(address(L1Token), "L1ERC721Token");
vm.label(address(L2Token), "L2ERC721Token");
}
function test_constructor_succeeds() external {
assertEq(L2Token.name(), "L2Token");
assertEq(L2Token.symbol(), "L2T");
assertEq(L2Token.remoteToken(), address(L1Token));
assertEq(L2Token.bridge(), address(L2Bridge));
assertEq(L2Token.remoteChainId(), 1);
assertEq(L2Token.REMOTE_TOKEN(), address(L1Token));
assertEq(L2Token.BRIDGE(), address(L2Bridge));
assertEq(L2Token.REMOTE_CHAIN_ID(), 1);
}
function test_safeMint_succeeds() external {
// Expect a transfer event.
vm.expectEmit(true, true, true, true);
emit Transfer(address(0), alice, 1);
// Expect a mint event.
vm.expectEmit(true, true, true, true);
emit Mint(alice, 1);
// Mint the token.
vm.prank(address(L2Bridge));
L2Token.safeMint(alice, 1);
// Token should be owned by alice.
assertEq(L2Token.ownerOf(1), alice);
}
function test_safeMint_notBridge_reverts() external {
// Try to mint the token.
vm.expectRevert("OptimismMintableERC721: only bridge can call this function");
vm.prank(address(alice));
L2Token.safeMint(alice, 1);
}
function test_burn_succeeds() external {
// Mint the token first.
vm.prank(address(L2Bridge));
L2Token.safeMint(alice, 1);
// Expect a transfer event.
vm.expectEmit(true, true, true, true);
emit Transfer(alice, address(0), 1);
// Expect a burn event.
vm.expectEmit(true, true, true, true);
emit Burn(alice, 1);
// Burn the token.
vm.prank(address(L2Bridge));
L2Token.burn(alice, 1);
// Token should be owned by address(0).
vm.expectRevert("ERC721: invalid token ID");
L2Token.ownerOf(1);
}
function test_burn_notBridge_reverts() external {
// Mint the token first.
vm.prank(address(L2Bridge));
L2Token.safeMint(alice, 1);
// Try to burn the token.
vm.expectRevert("OptimismMintableERC721: only bridge can call this function");
vm.prank(address(alice));
L2Token.burn(alice, 1);
}
function test_tokenURI_succeeds() external {
// Mint the token first.
vm.prank(address(L2Bridge));
L2Token.safeMint(alice, 1);
// Token URI should be correct.
assertEq(
L2Token.tokenURI(1),
string(
abi.encodePacked(
"ethereum:",
Strings.toHexString(uint160(address(L1Token)), 20),
"@",
Strings.toString(1),
"/tokenURI?uint256=",
Strings.toString(1)
)
)
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment