diff --git a/pkgs/server/jest.config.js b/pkgs/server/jest.config.js new file mode 100644 index 0000000..1a94667 --- /dev/null +++ b/pkgs/server/jest.config.js @@ -0,0 +1,6 @@ +/** @type {import('jest').Config} */ +module.exports = { + transform: { + "^.+\\.(t|j)sx?$": "@swc/jest", + }, +}; diff --git a/pkgs/server/package.json b/pkgs/server/package.json index 7eb5f7c..3cafb8d 100644 --- a/pkgs/server/package.json +++ b/pkgs/server/package.json @@ -4,7 +4,8 @@ "module": "dist/lib.js", "types": "dist/lib.d.ts", "scripts": { - "build": "tsc -p tsconfig.build.json" + "build": "tsc -p tsconfig.build.json", + "test": "jest" }, "dependencies": { "@pow-captcha/solver": "workspace:*", diff --git a/pkgs/server/src/lib.spec.ts b/pkgs/server/src/lib.spec.ts new file mode 100644 index 0000000..73b918b --- /dev/null +++ b/pkgs/server/src/lib.spec.ts @@ -0,0 +1,31 @@ +import { describe, it, expect } from "@jest/globals"; +import { wire } from "@pow-captcha/shared"; +import * as server from "./lib"; + +const SECRET = "e2c0b4ab-a215-4b36-bba8-19fae1601045"; + +describe("server", () => { + it("createChallenges ok", async () => { + const challengesSigned = await server.createChallenges({}, SECRET); + + await wire.verifyAndDeserializeData( + challengesSigned, + wire.challengeSchema, + SECRET, + ); + }); + + it("createChallenges wrong secret", async () => { + const challengesSigned = await server.createChallenges({}, SECRET); + + await expect( + (async () => { + await wire.verifyAndDeserializeData( + challengesSigned, + wire.challengeSchema, + "wrong-secret", + ); + })(), + ).rejects.toThrow("Signed data verification failed, hash mismatch"); + }); +});