import { describe, it, expect } from "vitest"; import { verifyPersonalSignTIP191 } from "../tron"; import { type SignatureProof, ProofStatus, ProofTypes, } from "@notabene/javascript-sdk"; import { TronWeb, Trx } from "tronweb"; const account = await TronWeb.createAccount(); const privateKey = account.privateKey; const address = account.address.base58; function personalSign(): SignatureProof { const attestation = "I agree"; const proof = Trx.signMessageV2(attestation, privateKey); return { type: ProofTypes.TIP191, address: `tron:0x2b6653dc:${address}`, did: `did:pkh:tron:0x2b6653dc:${address}`, attestation, proof, status: ProofStatus.PENDING, wallet_provider: "MetaMask", }; } describe("verifyPersonalSignTIP191", () => { it("returns verified proof when valid message and address", async () => { const proof = personalSign(); const result = await verifyPersonalSignTIP191(proof); expect(result.status).toBe(ProofStatus.VERIFIED); }); it("returns failed proof when invalid message or address", async () => { const proof = { ...personalSign(), attestation: "evil text" }; const result = await verifyPersonalSignTIP191(proof); expect(result.status).toBe(ProofStatus.FAILED); }); it("returns failed proof for non-TRON address", async () => { const proof: SignatureProof = { type: ProofTypes.TIP191, did: `did:pkh:bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6`, wallet_provider: "metamask", address: "bip122:000000000019d6689c085ae165831e93:128Lkh3S7CkDTBZ8W7BbpsN3YYizJMp8p6", attestation: "test message", proof: "0xabcd", status: ProofStatus.PENDING, }; const result = await verifyPersonalSignTIP191(proof); expect(result.status).toBe(ProofStatus.FAILED); }); });