Spaces:
Paused
Paused
| import crypto from "node:crypto"; | |
| import { describe, expect, it } from "vitest"; | |
| import { validateLineSignature } from "./signature.js"; | |
| const sign = (body: string, secret: string) => | |
| crypto.createHmac("SHA256", secret).update(body).digest("base64"); | |
| describe("validateLineSignature", () => { | |
| it("accepts valid signatures", () => { | |
| const secret = "secret"; | |
| const rawBody = JSON.stringify({ events: [{ type: "message" }] }); | |
| expect(validateLineSignature(rawBody, sign(rawBody, secret), secret)).toBe(true); | |
| }); | |
| it("rejects signatures computed with the wrong secret", () => { | |
| const rawBody = JSON.stringify({ events: [{ type: "message" }] }); | |
| expect(validateLineSignature(rawBody, sign(rawBody, "wrong-secret"), "secret")).toBe(false); | |
| }); | |
| it("rejects signatures with a different length", () => { | |
| const rawBody = JSON.stringify({ events: [{ type: "message" }] }); | |
| expect(validateLineSignature(rawBody, "short", "secret")).toBe(false); | |
| }); | |
| }); | |