Skip to content

Commit e7c7de0

Browse files
committed
rare token L2: disable initializers in constructor; do not grant minter role in initializer; update tests
1 parent 1fac4e4 commit e7c7de0

File tree

2 files changed

+25
-12
lines changed

2 files changed

+25
-12
lines changed

contracts/RareTokenL2.sol

+6-3
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,14 @@ contract SuperRareTokenL2 is
2222
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
2323
bytes32 public constant UPGRADER_ROLE = keccak256("UPGRADER_ROLE");
2424

25+
/// @custom:oz-upgrades-unsafe-allow constructor
26+
constructor() {
27+
_disableInitializers();
28+
}
29+
2530
/// @notice Initializes the contract with the provided admin and minter addresses.
2631
/// @param admin The admin address.
27-
/// @param minter The minter address.
28-
function initialize(address admin, address minter) public initializer {
32+
function initialize(address admin) public initializer {
2933
__ERC20_init("SuperRare", "RARE");
3034
__ERC20Burnable_init();
3135
__ERC20Pausable_init();
@@ -35,7 +39,6 @@ contract SuperRareTokenL2 is
3539

3640
_grantRole(DEFAULT_ADMIN_ROLE, admin);
3741
_grantRole(PAUSER_ROLE, admin);
38-
_grantRole(MINTER_ROLE, minter);
3942
_grantRole(UPGRADER_ROLE, admin);
4043
}
4144

test/RareBridge.t.sol

+19-9
Original file line numberDiff line numberDiff line change
@@ -36,20 +36,30 @@ contract RareTokenBridgeTest is Test {
3636
function setUp() public {
3737
rareToken = new SuperRareToken();
3838
rareToken.init(tokenOwner);
39-
rareTokenL2 = new SuperRareTokenL2();
39+
40+
SuperRareTokenL2 rareTokenL2Impl = new SuperRareTokenL2();
41+
ERC1967Proxy proxyRareTokenL2 = new ERC1967Proxy(
42+
address(rareTokenL2Impl),
43+
abi.encodeCall(
44+
rareTokenL2Impl.initialize,
45+
(admin)
46+
)
47+
);
48+
rareTokenL2 = SuperRareTokenL2(address(proxyRareTokenL2));
4049

4150
ccipLocalSimulator = new CCIPLocalSimulator();
4251
(
43-
uint64 chainSelector_,
52+
uint64 _chainSelector,
4453
IRouterClient sourceRouter,
4554
IRouterClient destinationRouter,
4655
,
47-
LinkToken linkToken_,
56+
LinkToken _linkToken,
4857
,
4958

5059
) = ccipLocalSimulator.configuration();
5160

52-
linkToken = linkToken_;
61+
linkToken = _linkToken;
62+
chainSelector = _chainSelector;
5363

5464
MockCCIPRouter(address(sourceRouter)).setFee(ccipFee);
5565
MockCCIPRouter(address(destinationRouter)).setFee(ccipFee);
@@ -74,18 +84,18 @@ contract RareTokenBridgeTest is Test {
7484
);
7585
rareBridgeL2 = RareBridgeBurnAndMint(payable(address(proxyBnM)));
7686

77-
rareTokenL2.initialize(tokenOwnerL2, address(rareBridgeL2));
87+
vm.startPrank(admin);
7888

79-
chainSelector = chainSelector_;
89+
rareTokenL2.grantRole(rareTokenL2.MINTER_ROLE(), address(rareBridgeL2));
8090

81-
vm.startPrank(admin);
8291
rareBridge.allowlistRecipient(chainSelector, address(rareBridgeL2), true);
8392
rareBridge.allowlistSender(chainSelector, address(rareBridgeL2), true);
93+
rareBridge.setExtraArgs(chainSelector, 400_000);
94+
8495
rareBridgeL2.allowlistRecipient(chainSelector, address(rareBridge), true);
8596
rareBridgeL2.allowlistSender(chainSelector, address(rareBridge), true);
86-
87-
rareBridge.setExtraArgs(chainSelector, 400_000);
8897
rareBridgeL2.setExtraArgs(chainSelector, 400_000);
98+
8999
vm.stopPrank();
90100
}
91101

0 commit comments

Comments
 (0)