From de8780702e6a4a7e9280a3868c42a901660d4edb Mon Sep 17 00:00:00 2001 From: Anton Paymyshev Date: Mon, 4 Mar 2024 09:46:17 +0700 Subject: [PATCH] add some test vectors --- js/src/nft/index.ts | 7 ++----- js/tests/nft.test.ts | 20 ++++++++++++++++++- js/tests/records-v2.test.ts | 38 +++++++++++++++++++++++++++++++++++++ js/tests/records.test.ts | 38 +++++++++++++++++++++++++++++++++++++ 4 files changed, 97 insertions(+), 6 deletions(-) diff --git a/js/src/nft/index.ts b/js/src/nft/index.ts index 870e438..ec5ee82 100644 --- a/js/src/nft/index.ts +++ b/js/src/nft/index.ts @@ -12,9 +12,9 @@ import { } from "@solana/spl-token"; import { NAME_TOKENIZER_ID, - MINT_PREFIX, NftRecord, getRecordFromMint, + getDomainMint, } from "./name-tokenizer"; /** @@ -29,10 +29,7 @@ export const retrieveNftOwner = async ( nameAccount: PublicKey, ) => { try { - const [mint] = await PublicKey.findProgramAddress( - [MINT_PREFIX, nameAccount.toBuffer()], - NAME_TOKENIZER_ID, - ); + const mint = getDomainMint(nameAccount); const mintInfo = await getMint(connection, mint); if (mintInfo.supply.toString() === "0") { diff --git a/js/tests/nft.test.ts b/js/tests/nft.test.ts index a221fd1..5028c9f 100644 --- a/js/tests/nft.test.ts +++ b/js/tests/nft.test.ts @@ -1,7 +1,8 @@ require("dotenv").config(); import { test, jest } from "@jest/globals"; import { PublicKey, Connection } from "@solana/web3.js"; -import { getTokenizedDomains } from "../src/utils"; +import { getDomainKeySync, getTokenizedDomains } from "../src/utils"; +import { getDomainMint } from "../src/nft/name-tokenizer"; jest.setTimeout(10_000); const connection = new Connection(process.env.RPC_URL!); @@ -42,3 +43,20 @@ test("Get tokenized domains", async () => { expect(domains).toEqual(item.domains); } }); + +describe("getDomainMint", () => { + test.each([ + { + domain: "domain1.sol", + address: "3YTxXhhVue9BVjgjPwJbbJ4uGPsnwN453DDf72rYE5WN", + }, + { + domain: "sub.domain2.sol", + address: "66CnogoXDBqYeYRGYzQf19VyrMnB4uGxpZQDuDYfbKCX", + }, + ])("$domain", (e) => { + expect(getDomainMint(getDomainKeySync(e.domain).pubkey).toBase58()).toBe( + e.address, + ); + }); +}); diff --git a/js/tests/records-v2.test.ts b/js/tests/records-v2.test.ts index e678c38..5217eae 100644 --- a/js/tests/records-v2.test.ts +++ b/js/tests/records-v2.test.ts @@ -4,6 +4,7 @@ import { deserializeRecordV2Content, getMultipleRecordsV2, getRecordV2, + getRecordV2Key, serializeRecordV2Content, } from "../src/record_v2"; import { Record } from "../src/types/record"; @@ -340,3 +341,40 @@ test("getMultipleRecordsV2", async () => { expect(items[i].record).toBe(res[i]?.record); } }); + +describe("getRecordV2Key", () => { + test.each([ + { + domain: "domain1.sol", + record: Record.SOL, + expected: "GBrd6Q53eu1T2PiaQAtm92r3DwxmoGvZ2D6xjtVtN1Qt", + }, + { + domain: "sub.domain2.sol", + record: Record.SOL, + expected: "A3EFmyCmK5rp73TdgLH8aW49PJ8SJw915arhydRZ6Sws", + }, + { + domain: "domain3.sol", + record: Record.Url, + expected: "DMZmnjcAnUwSje4o2LGJhipCfNZ5b37GEbbkwbQBWEW1", + }, + { + domain: "sub.domain4.sol", + record: Record.Url, + expected: "6o8JQ7vss6r9sw9GWNVugZktwfEJ67iUz6H63hhmg4sj", + }, + { + domain: "domain5.sol", + record: Record.IPFS, + expected: "DQHeVmAj9Nz4uAn2dneEsgBZWcfhUqLdtbDcfWhGL47D", + }, + { + domain: "sub.domain6.sol", + record: Record.IPFS, + expected: "Dj7tnTTaktrrmdtatRuLG3YdtGZk8XEBMb4w5WtCBHvr", + }, + ])("$domain", (e) => { + expect(getRecordV2Key(e.domain, e.record).toBase58()).toBe(e.expected); + }); +}); diff --git a/js/tests/records.test.ts b/js/tests/records.test.ts index b92e5d3..564dc28 100644 --- a/js/tests/records.test.ts +++ b/js/tests/records.test.ts @@ -6,6 +6,7 @@ import { Record } from "../src/types/record"; import { createRecordInstruction } from "../src/bindings"; import { resolveSolRecordV1 } from "../src/resolve"; import { NameRegistryState } from "../src/state"; +import { getRecordKeySync } from "../src/record"; jest.setTimeout(20_000); @@ -162,3 +163,40 @@ test("Des/ser", () => { expect(des).toBe(e.content); }); }); + +describe("getRecordKeySync", () => { + test.each([ + { + domain: "domain1.sol", + record: Record.SOL, + expected: "ATH9akc5pi1PWDB39YY7VCoYzCxmz8XVj23oegSoNSPL", + }, + { + domain: "sub.domain2.sol", + record: Record.SOL, + expected: "AEgJVf6zaQfkyYPnYu8Y9Vxa1Sy69EtRSP8iGubx5MnC", + }, + { + domain: "domain3.sol", + record: Record.Url, + expected: "EuxtWLCKsdpwM8ftKjnD2Q8vBdzZunh7DY1mHwXhLTqx", + }, + { + domain: "sub.domain4.sol", + record: Record.Url, + expected: "64nv6HSbifdUgdWst48V4YUB3Y3uQXVQRD4iDZPd9qGx", + }, + { + domain: "domain5.sol", + record: Record.IPFS, + expected: "2uRMeYzKXaYgFVQ1Yh7fKyZWcxsFUMgpEwMi19sVjwjk", + }, + { + domain: "sub.domain6.sol", + record: Record.IPFS, + expected: "61JdnEhbd2bEfxnu2uQ38gM2SUry2yY8kBMEseYh8dDy", + }, + ])("$domain", (e) => { + expect(getRecordKeySync(e.domain, e.record).toBase58()).toBe(e.expected); + }); +});