28 lines
1.1 KiB
JavaScript
28 lines
1.1 KiB
JavaScript
// 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);
|
|
});
|