-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathreceipt-verification.test.mjs
More file actions
38 lines (32 loc) · 1.28 KB
/
receipt-verification.test.mjs
File metadata and controls
38 lines (32 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import test from "node:test";
import assert from "node:assert/strict";
import { createRequire } from "node:module";
import { loadFixture, loadTextFixture } from "../../typescript-sdk/tests/helpers.mjs";
const require = createRequire(import.meta.url);
const { verifyReceipt } = require("../../typescript-sdk/dist/index.cjs");
const publicKey = `ed25519:${loadTextFixture("public_key_base64.txt")}`;
async function verifyReceiptWithKid(receipt) {
if (receipt.kid !== "v1") {
return { valid: false, error: "Unknown key id" };
}
const result = await verifyReceipt(receipt, { publicKey });
return {
valid: result.ok,
error: result.errors.signature_error ?? result.errors.verify_error ?? ""
};
}
test("valid receipt verifies", async () => {
const receipt = loadFixture("receipt_valid.json");
const result = await verifyReceiptWithKid(receipt);
assert.equal(result.valid, true);
});
test("invalid signature fails", async () => {
const receipt = loadFixture("receipt_invalid_sig.json");
const result = await verifyReceiptWithKid(receipt);
assert.equal(result.valid, false);
});
test("wrong kid fails", async () => {
const receipt = loadFixture("receipt_wrong_kid.json");
const result = await verifyReceiptWithKid(receipt);
assert.match(result.error, /Unknown key id/);
});