import { ProofStatus, ProofTypes, SignatureProof } from "@notabene/javascript-sdk"; import { describe, expect, it } from "vitest"; import { verifyCIP8Signature } from "../cardano"; const YOROI_PROOF: SignatureProof = { type: ProofTypes.CIP8, status: ProofStatus.PENDING, address: `cardano:mainnet:addr1qy58rqrwahalep9l9t83aevvmu0h8hksqj3u6n2fvrkse4d8v387at20m9fgf0rstupcp6fa3af53h86gu838df0nmgs7lekj2`, did: `did:key:z6MkuyaPKeAa6iZwKGFo2ZYMSGHhAnahwW1Ss2Zc6SfxBYhx`, attestation: "test", proof: "845846a2012767616464726573735839012871806eedfbfc84bf2acf1ee58cdf1f73ded004a3cd4d4960ed0cd5a7644feead4fd95284bc705f0380e93d8f5348dcfa470f13b52f9ed1a166686173686564f444746573745840dd85eb4498a4a4228185c556a56509024e3f2f144bef1e54aa2910a850934dac47fb419bf967575f9e8dd269f3566e2d34ef57e07113011b84b5c0af25b8450b", wallet_provider: "Yoroi", chainSpecificData: { cardanoCoseKey: "a4010103272006215820e91872688a7eb182e3b505a45e2123b8e0ce527e736937a74c2f59b035389210", }, }; describe("verifyCIP8Signature", () => { it("verifies valid CIP8 signature", async () => { const result = await verifyCIP8Signature(YOROI_PROOF); expect(result.status).toBe(ProofStatus.VERIFIED); }); it("fails for invalid CBOR proof", async () => { const invalidProof = { ...YOROI_PROOF, proof: "invalid_cbor_data" }; const result = await verifyCIP8Signature(invalidProof); expect(result.status).toBe(ProofStatus.FAILED); }); it("fails if cardanoCoseKey is not provided", async () => { const invalidProof = { ...YOROI_PROOF, chainSpecificData: undefined }; const result = await verifyCIP8Signature(invalidProof); expect(result.status).toBe(ProofStatus.FAILED); }); it("fails for non-Cardano address", async () => { const invalidProof = { ...YOROI_PROOF, address: "eth:1:0x1234567890123456789012345678901234567890" as `eth:${string}:${string}` }; const result = await verifyCIP8Signature(invalidProof); expect(result.status).toBe(ProofStatus.FAILED); }); });