@@ -13,18 +13,19 @@ import {IL2Resolver} from 'src/interfaces/IL2Resolver.sol';
1313import {INameWrapper} from 'src/interfaces/INameWrapper.sol ' ;
1414
1515contract UnitL2Resolver is Test {
16+ string internal constant _ENS_DOMAIN = 'optimism.l2.eth ' ;
1617 L2Resolver internal _l2Resolver;
1718 address internal _ensRegistry = makeAddr ('ENSRegistry ' );
1819 address internal _nameWrapper = makeAddr ('NameWrapper ' );
1920 address internal _reverseAdmin = makeAddr ('ReverseAdmin ' );
2021 address internal _nodeOwner = makeAddr ('NodeOwner ' );
2122 bytes32 internal _parentNodeNameHash = keccak256 ('l2.eth ' );
2223 bytes32 internal _reverseLookupNode;
23- bytes32 internal _nodeNameHash = keccak256 (' optimism.l2.eth ' );
24+ bytes32 internal _nodeNameHash = keccak256 (abi.encode (_ENS_DOMAIN) );
2425 string internal _key;
2526 bytes internal _chainIdBytes = hex '00010001010A00 ' ;
2627 string internal _reverseLookupKey;
27- bytes internal _reverseLookupValue = abi.encode (' optimism.l2.eth ' );
28+ bytes internal _reverseLookupValue = abi.encode (_ENS_DOMAIN );
2829
2930 function setUp () external {
3031 _l2Resolver = new L2Resolver (_ensRegistry, _nameWrapper, _reverseAdmin, _parentNodeNameHash);
@@ -394,6 +395,7 @@ contract UnitL2Resolver is Test {
394395 bytes memory _domainChainIdBytes
395396 ) external {
396397 vm.assume (bytes (_ensDomain).length > 0 );
398+
397399 bytes memory _value = abi.encode (_ensDomain);
398400 string memory _reverseKey = string .concat (_key, _bytes32ToHexString (keccak256 (_domainChainIdBytes)));
399401
@@ -409,6 +411,30 @@ contract UnitL2Resolver is Test {
409411 assertEq (_l2Resolver.chainName (_chainIdBytes), '' );
410412 }
411413
414+ function test_ResolveWhenResolvingChainId (bytes calldata _name ) external {
415+ _setRecord (_nodeNameHash, _key, _chainIdBytes);
416+
417+ // it returns abi-encoded chain identifier
418+ bytes memory _data = abi.encode (IL2Resolver.chainId.selector , _nodeNameHash);
419+ assertEq (_l2Resolver.resolve (_name, _data), abi.encode (_chainIdBytes));
420+ }
421+
422+ function test_ResolveWhenResolvingChainName (bytes calldata _name ) external {
423+ vm.prank (_reverseAdmin);
424+ _l2Resolver.setRecord (_reverseLookupNode, _reverseLookupKey, abi.encode (_ENS_DOMAIN));
425+
426+ // it returns abi-encoded ENS name
427+ bytes memory _data = abi.encode (IL2Resolver.chainName.selector , _chainIdBytes);
428+ assertEq (_l2Resolver.resolve (_name, _data), abi.encode (_ENS_DOMAIN));
429+ }
430+
431+ function test_ResolveWhenResolvingAnUnsupportedFunction (bytes calldata _name ) external {
432+ // it reverts
433+ bytes memory _data = abi.encode (IL2Resolver.getRecord.selector , _nodeNameHash, _key);
434+ vm.expectRevert (abi.encodeWithSelector (IL2Resolver.UnsupportedFunctionSelector.selector ));
435+ _l2Resolver.resolve (_name, _data);
436+ }
437+
412438 /**
413439 * @notice Sets up a mock and expects a call to it
414440 *
0 commit comments