// test/signatureVerify.test.js const { test } = require("node:test"); const assert = require("node:assert"); const crypto = require("node:crypto"); const { verifySignature } = require("../src/lib/signatureVerify"); test("正しい署名はtrueを返す", () => { const secret = "test-secret"; const body = JSON.stringify({ hello: "world" }); const signature = crypto.createHmac("sha256", secret).update(body).digest("base64"); assert.strictEqual(verifySignature(body, signature, secret), true); }); test("sha256=プレフィックス付き署名も検証できる", () => { const secret = "test-secret"; const body = JSON.stringify({ hello: "world" }); const signature = crypto.createHmac("sha256", secret).update(body).digest("base64"); assert.strictEqual(verifySignature(body, `sha256=${signature}`, secret), true); }); test("不正な署名はfalseを返す", () => { assert.strictEqual(verifySignature("body", "invalid-signature", "secret"), false); }); test("署名ヘッダーが空ならfalseを返す", () => { assert.strictEqual(verifySignature("body", "", "secret"), false); });