// SPDX-License-Identifier: MPL-2.0 pragma solidity ^0.8.17; import {console} from "forge-std/console.sol"; import "@le7el/generative_art/src/SVG9x9.sol"; import "@le7el/generative_art/src/EncodeUtils.sol"; import {IdentityMetadataProxyV1} from "src/nft/IdentityMetadataProxyV1.sol"; import {TestWithDeployments} from "./util/TestWithDeployments.sol"; contract IdentityMetadataTest is TestWithDeployments { uint256 internal constant YEAR = 365 days; address internal admin = address(1); address internal user = address(2); function setUp() public { vm.label(admin, "Admin"); vm.label(user, "User"); // Setup smart contracts vm.startPrank(admin); deployAll(admin); IdentityMetadataProxyV1 metadata = new IdentityMetadataProxyV1(); identityNFT.setBasenodeResolverSettings(abi.encodeWithSignature( "setProxyConfig(bytes32,address,bytes4,address)", identityNFT.baseNode(), address(identityNFT), bytes4(keccak256("tokenURI(uint256,string,string)")), address(metadata) )); vm.stopPrank(); } function testMetadataValidness() public { vm.startPrank(user); registerIdentityNFT(user, keccak256("secret"), YEAR, "johndoe"); string memory rawMetadata = identityNFT.tokenURI(86745341786912841616557368118532256523691956314975099975829920571153145112669); string memory refMetadata = string(abi.encodePacked( "data:application/json;base64,", EncodeUtils.base64(bytes('{\"name\":\"johndoe.l7l\",\"description\":\"LE7EL identity record\",\"image_data\":\"johndoe.l7l\",\"attributes\":[{\"trait_type\":\"Type\",\"value\":\"Identity\"}]}')) )); assertTrue(keccak256(bytes(rawMetadata)) == keccak256(bytes(refMetadata))); vm.stopPrank(); } function testCustomNFTImages() public { vm.startPrank(user); registerIdentityNFT(user, keccak256("secret"), YEAR, "johndoe"); resolver.setText(0x065942c7a3e13329f007894615b14cf2e9026dc7f015dbd561fbb753c6e5cd1d, "L7L_IDENTITY_IMAGE", "ipfs://chubaka.jpg"); string memory rawMetadata = identityNFT.tokenURI(86745341786912841616557368118532256523691956314975099975829920571153145112669); string memory refMetadata = string(abi.encodePacked( "data:application/json;base64,", EncodeUtils.base64(bytes('{\"name\":\"johndoe.l7l\",\"description\":\"LE7EL identity record\",\"image\":\"ipfs://chubaka.jpg\",\"attributes\":[{\"trait_type\":\"Type\",\"value\":\"Identity\"}]}')) )); assertTrue(keccak256(bytes(rawMetadata)) == keccak256(bytes(refMetadata))); vm.stopPrank(); } }