@prosopo/provider 5.13.1 → 5.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +25 -23
  2. package/.turbo/turbo-build$colon$tsc.log +27 -27
  3. package/.turbo/turbo-build.log +26 -24
  4. package/CHANGELOG.md +95 -0
  5. package/dist/api/admin/apiDnsEventEndpoint.d.ts +2 -2
  6. package/dist/api/admin/apiDnsEventEndpoint.d.ts.map +1 -1
  7. package/dist/api/admin/apiDnsEventEndpoint.js +28 -5
  8. package/dist/api/admin/apiDnsEventEndpoint.js.map +1 -1
  9. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  10. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +1 -1
  11. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  12. package/dist/api/captcha/getImageCaptchaChallenge.d.ts.map +1 -1
  13. package/dist/api/captcha/getImageCaptchaChallenge.js +2 -0
  14. package/dist/api/captcha/getImageCaptchaChallenge.js.map +1 -1
  15. package/dist/api/captcha/getPoWCaptchaChallenge.d.ts.map +1 -1
  16. package/dist/api/captcha/getPoWCaptchaChallenge.js +4 -1
  17. package/dist/api/captcha/getPoWCaptchaChallenge.js.map +1 -1
  18. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  19. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +4 -1
  20. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  21. package/dist/api/captcha/submitImageCaptchaSolution.d.ts.map +1 -1
  22. package/dist/api/captcha/submitImageCaptchaSolution.js +3 -2
  23. package/dist/api/captcha/submitImageCaptchaSolution.js.map +1 -1
  24. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  25. package/dist/api/captcha/submitPoWCaptchaSolution.js +3 -2
  26. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  27. package/dist/api/captcha/submitPuzzleCaptchaSolution.d.ts.map +1 -1
  28. package/dist/api/captcha/submitPuzzleCaptchaSolution.js +3 -2
  29. package/dist/api/captcha/submitPuzzleCaptchaSolution.js.map +1 -1
  30. package/dist/api/captcha/trafficFilterRequestTime.d.ts +2 -0
  31. package/dist/api/captcha/trafficFilterRequestTime.d.ts.map +1 -1
  32. package/dist/api/captcha/trafficFilterRequestTime.js +9 -3
  33. package/dist/api/captcha/trafficFilterRequestTime.js.map +1 -1
  34. package/dist/api/captcha.d.ts.map +1 -1
  35. package/dist/api/captcha.js +2 -0
  36. package/dist/api/captcha.js.map +1 -1
  37. package/dist/api/hardBlockVerdictCache.d.ts +1 -0
  38. package/dist/api/hardBlockVerdictCache.d.ts.map +1 -1
  39. package/dist/api/hardBlockVerdictCache.js +4 -1
  40. package/dist/api/hardBlockVerdictCache.js.map +1 -1
  41. package/dist/api/requestBodySummary.d.ts +14 -0
  42. package/dist/api/requestBodySummary.d.ts.map +1 -0
  43. package/dist/api/requestBodySummary.js +47 -0
  44. package/dist/api/requestBodySummary.js.map +1 -0
  45. package/dist/api/verify.d.ts.map +1 -1
  46. package/dist/api/verify.js +9 -8
  47. package/dist/api/verify.js.map +1 -1
  48. package/dist/cjs/api/admin/apiDnsEventEndpoint.cjs +27 -4
  49. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +1 -1
  50. package/dist/cjs/api/captcha/getImageCaptchaChallenge.cjs +2 -0
  51. package/dist/cjs/api/captcha/getPoWCaptchaChallenge.cjs +4 -1
  52. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +4 -1
  53. package/dist/cjs/api/captcha/submitImageCaptchaSolution.cjs +3 -2
  54. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +3 -2
  55. package/dist/cjs/api/captcha/submitPuzzleCaptchaSolution.cjs +3 -2
  56. package/dist/cjs/api/captcha/trafficFilterRequestTime.cjs +6 -1
  57. package/dist/cjs/api/captcha.cjs +2 -0
  58. package/dist/cjs/api/hardBlockVerdictCache.cjs +4 -1
  59. package/dist/cjs/api/requestBodySummary.cjs +47 -0
  60. package/dist/cjs/api/verify.cjs +9 -8
  61. package/dist/cjs/pairs.cjs +70 -6
  62. package/dist/cjs/tasks/captchaManager.cjs +15 -0
  63. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +4 -1
  64. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +17 -6
  65. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +5 -1
  66. package/dist/cjs/tasks/puzzleCaptcha/puzzleTasks.cjs +1 -4
  67. package/dist/cjs/tasks/spam/checkTrafficFilter.cjs +11 -0
  68. package/dist/cjs/tasks/tasks.cjs +1 -37
  69. package/dist/cjs/utils/tarpitPadding.cjs +23 -0
  70. package/dist/pairs.d.ts +6 -1
  71. package/dist/pairs.d.ts.map +1 -1
  72. package/dist/pairs.js +67 -7
  73. package/dist/pairs.js.map +1 -1
  74. package/dist/tasks/captchaManager.d.ts.map +1 -1
  75. package/dist/tasks/captchaManager.js +15 -0
  76. package/dist/tasks/captchaManager.js.map +1 -1
  77. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  78. package/dist/tasks/frictionless/frictionlessTasks.js +4 -1
  79. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  80. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
  81. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +20 -8
  82. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
  83. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
  84. package/dist/tasks/powCaptcha/powTasks.js +5 -1
  85. package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
  86. package/dist/tasks/puzzleCaptcha/puzzleTasks.d.ts.map +1 -1
  87. package/dist/tasks/puzzleCaptcha/puzzleTasks.js +1 -4
  88. package/dist/tasks/puzzleCaptcha/puzzleTasks.js.map +1 -1
  89. package/dist/tasks/spam/checkTrafficFilter.d.ts +1 -0
  90. package/dist/tasks/spam/checkTrafficFilter.d.ts.map +1 -1
  91. package/dist/tasks/spam/checkTrafficFilter.js +11 -1
  92. package/dist/tasks/spam/checkTrafficFilter.js.map +1 -1
  93. package/dist/tasks/tasks.d.ts +0 -1
  94. package/dist/tasks/tasks.d.ts.map +1 -1
  95. package/dist/tasks/tasks.js +1 -37
  96. package/dist/tasks/tasks.js.map +1 -1
  97. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.d.ts +2 -0
  98. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.d.ts.map +1 -0
  99. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.js +81 -0
  100. package/dist/tests/integration/authenticatedVerifyClaim.integration.test.js.map +1 -0
  101. package/dist/tests/integration/imgCaptcha.integration.test.js +37 -1
  102. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
  103. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js +39 -3
  104. package/dist/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.js.map +1 -1
  105. package/dist/tests/unit/api/domainMiddleware.unit.test.d.ts +2 -0
  106. package/dist/tests/unit/api/domainMiddleware.unit.test.d.ts.map +1 -0
  107. package/dist/tests/unit/api/domainMiddleware.unit.test.js +167 -0
  108. package/dist/tests/unit/api/domainMiddleware.unit.test.js.map +1 -0
  109. package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js +32 -0
  110. package/dist/tests/unit/api/hardBlockVerdictCache.unit.test.js.map +1 -1
  111. package/dist/tests/unit/api/requestBodySummary.unit.test.d.ts +2 -0
  112. package/dist/tests/unit/api/requestBodySummary.unit.test.d.ts.map +1 -0
  113. package/dist/tests/unit/api/requestBodySummary.unit.test.js +172 -0
  114. package/dist/tests/unit/api/requestBodySummary.unit.test.js.map +1 -0
  115. package/dist/tests/unit/pairs.unit.test.js +126 -1
  116. package/dist/tests/unit/pairs.unit.test.js.map +1 -1
  117. package/dist/tests/unit/tasks/captchaManager.unit.test.js +38 -0
  118. package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
  119. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +104 -8
  120. package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
  121. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +232 -17
  122. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
  123. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +66 -14
  124. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
  125. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js +21 -1
  126. package/dist/tests/unit/tasks/puzzleCaptcha/puzzleTasks.unit.test.js.map +1 -1
  127. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.d.ts +2 -0
  128. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.d.ts.map +1 -0
  129. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.js +34 -0
  130. package/dist/tests/unit/tasks/tasksBackgroundWork.unit.test.js.map +1 -0
  131. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js +0 -49
  132. package/dist/tests/unit/tasks/writeQueueIntegration.unit.test.js.map +1 -1
  133. package/dist/tests/unit/util/redisCache.unit.test.js +1 -104
  134. package/dist/tests/unit/util/redisCache.unit.test.js.map +1 -1
  135. package/dist/utils/tarpitPadding.d.ts +3 -0
  136. package/dist/utils/tarpitPadding.d.ts.map +1 -0
  137. package/dist/utils/tarpitPadding.js +24 -0
  138. package/dist/utils/tarpitPadding.js.map +1 -0
  139. package/package.json +24 -24
@@ -1 +1 @@
1
- {"version":3,"file":"apiDnsEventEndpoint.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiDnsEventEndpoint.unit.test.js","sourceRoot":"","sources":["../../../../../src/tests/unit/api/admin/apiDnsEventEndpoint.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=domainMiddleware.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainMiddleware.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/api/domainMiddleware.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,167 @@
1
+ import http from "node:http";
2
+ import { getLogger } from "@prosopo/logger";
3
+ import { ALWAYS_PASS_SITE_KEY, Tier } from "@prosopo/types";
4
+ import { ClientRecordSchema, } from "@prosopo/types-database";
5
+ import express from "express";
6
+ import i18next from "i18next";
7
+ import mongoose from "mongoose";
8
+ import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from "vitest";
9
+ import { setMaintenanceMode } from "../../../api/admin/apiToggleMaintenanceModeEndpoint.js";
10
+ import { domainMiddleware } from "../../../api/domainMiddleware.js";
11
+ import { createMockProviderEnvironment } from "../testUtils/mockProviderEnv.js";
12
+ vi.mock("../../../tasks/index.js", async () => {
13
+ const { ClientTaskManager: RealClientTaskManager } = await import("../../../tasks/client/clientTasks.js");
14
+ class Tasks {
15
+ constructor(env) {
16
+ this.db = env.getDb();
17
+ this.clientTaskManager = new RealClientTaskManager(env.config, env.logger, this.db);
18
+ }
19
+ }
20
+ return { Tasks };
21
+ });
22
+ const SITE_KEY = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
23
+ const ClientModel = mongoose.model("DomainMiddlewareTestClient", ClientRecordSchema);
24
+ const clientRecord = (domains) => new ClientModel({
25
+ account: SITE_KEY,
26
+ tier: Tier.Free,
27
+ settings: domains === undefined ? undefined : { domains },
28
+ });
29
+ const getClientRecord = vi.fn();
30
+ let server;
31
+ let port;
32
+ let t;
33
+ beforeAll(async () => {
34
+ const i18n = i18next.createInstance();
35
+ await i18n.init({ lng: "en", resources: {} });
36
+ t = i18n.t;
37
+ const env = createMockProviderEnvironment();
38
+ const db = env.getDb();
39
+ db.getClientRecord = getClientRecord;
40
+ const app = express();
41
+ app.use((req, _res, next) => {
42
+ req.t = t;
43
+ req.i18n = { t };
44
+ req.logger = getLogger("error", "test:domain-middleware");
45
+ next();
46
+ });
47
+ app.use(domainMiddleware(env));
48
+ app.post("/", (_req, res) => {
49
+ res.status(200).json({ reached: true });
50
+ });
51
+ server = http.createServer(app);
52
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
53
+ const address = server.address();
54
+ if (address === null || typeof address === "string") {
55
+ throw new Error("test server did not bind a TCP port");
56
+ }
57
+ port = address.port;
58
+ });
59
+ afterAll(async () => {
60
+ await new Promise((resolve) => server.close(() => resolve()));
61
+ });
62
+ beforeEach(() => {
63
+ setMaintenanceMode(false);
64
+ getClientRecord.mockReset();
65
+ });
66
+ afterEach(() => {
67
+ setMaintenanceMode(false);
68
+ });
69
+ const send = (headers) => new Promise((resolve, reject) => {
70
+ const req = http.request({ host: "127.0.0.1", port, path: "/", method: "POST", headers }, (res) => {
71
+ let body = "";
72
+ res.setEncoding("utf8");
73
+ res.on("data", (chunk) => {
74
+ body += chunk;
75
+ });
76
+ res.on("end", () => {
77
+ resolve({
78
+ status: res.statusCode ?? 0,
79
+ reached: body.includes('"reached":true'),
80
+ });
81
+ });
82
+ });
83
+ req.on("error", reject);
84
+ req.end();
85
+ });
86
+ const withKey = (origin) => ({
87
+ "prosopo-site-key": SITE_KEY,
88
+ ...(origin === undefined ? {} : { origin }),
89
+ });
90
+ describe("domainMiddleware", () => {
91
+ it("rejects a request without a site key", async () => {
92
+ const result = await send({ origin: "https://example.com" });
93
+ expect(result).toEqual({ status: 400, reached: false });
94
+ expect(getClientRecord).not.toHaveBeenCalled();
95
+ });
96
+ it("rejects a malformed site key before touching the database", async () => {
97
+ const result = await send({
98
+ "prosopo-site-key": "not-an-address",
99
+ origin: "https://example.com",
100
+ });
101
+ expect(result).toEqual({ status: 400, reached: false });
102
+ expect(getClientRecord).not.toHaveBeenCalled();
103
+ });
104
+ it("lets a reserved test site key through from any origin", async () => {
105
+ const result = await send({
106
+ "prosopo-site-key": ALWAYS_PASS_SITE_KEY,
107
+ origin: "https://anything.invalid",
108
+ });
109
+ expect(result).toEqual({ status: 200, reached: true });
110
+ expect(getClientRecord).not.toHaveBeenCalled();
111
+ });
112
+ it("rejects a site key with no client record", async () => {
113
+ getClientRecord.mockResolvedValue(undefined);
114
+ const result = await send(withKey("https://example.com"));
115
+ expect(result).toEqual({ status: 400, reached: false });
116
+ expect(getClientRecord).toHaveBeenCalledWith(SITE_KEY);
117
+ });
118
+ it("rejects a registered site key that allows no domains", async () => {
119
+ getClientRecord.mockResolvedValue(clientRecord(undefined));
120
+ const result = await send(withKey("https://example.com"));
121
+ expect(result).toEqual({ status: 400, reached: false });
122
+ });
123
+ it("rejects a request without an Origin header", async () => {
124
+ getClientRecord.mockResolvedValue(clientRecord(["example.com"]));
125
+ const result = await send(withKey());
126
+ expect(result).toEqual({ status: 400, reached: false });
127
+ });
128
+ it.each([
129
+ ["the exact domain", "https://example.com"],
130
+ ["a subdomain", "https://shop.example.com"],
131
+ [
132
+ "the Google Translate proxy of the domain",
133
+ "https://example-com.translate.goog",
134
+ ],
135
+ ])("allows %s", async (_name, origin) => {
136
+ getClientRecord.mockResolvedValue(clientRecord(["example.com"]));
137
+ const result = await send(withKey(origin));
138
+ expect(result).toEqual({ status: 200, reached: true });
139
+ });
140
+ it.each([
141
+ ["another domain", "https://evil.com"],
142
+ ["a lookalike suffix", "https://example.com.evil.com"],
143
+ ["a lookalike prefix", "https://evilexample.com"],
144
+ [
145
+ "the Google Translate proxy of another domain",
146
+ "https://evil-com.translate.goog",
147
+ ],
148
+ ["a null origin", "null"],
149
+ ])("rejects %s", async (_name, origin) => {
150
+ getClientRecord.mockResolvedValue(clientRecord(["example.com"]));
151
+ const result = await send(withKey(origin));
152
+ expect(result.reached).toBe(false);
153
+ expect(result.status).toBeGreaterThanOrEqual(400);
154
+ });
155
+ it("fails closed when the client lookup throws", async () => {
156
+ getClientRecord.mockRejectedValue(new Error("mongo down"));
157
+ const result = await send(withKey("https://example.com"));
158
+ expect(result).toEqual({ status: 401, reached: false });
159
+ });
160
+ it("skips validation while maintenance mode is on", async () => {
161
+ setMaintenanceMode(true);
162
+ const result = await send({ origin: "https://evil.com" });
163
+ expect(result).toEqual({ status: 200, reached: true });
164
+ expect(getClientRecord).not.toHaveBeenCalled();
165
+ });
166
+ });
167
+ //# sourceMappingURL=domainMiddleware.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domainMiddleware.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/domainMiddleware.unit.test.ts"],"names":[],"mappings":"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"}
@@ -139,6 +139,38 @@ describe("HardBlockVerdictCache", () => {
139
139
  expect(calls).toBe(2);
140
140
  expect(wave2).toHaveLength(1);
141
141
  });
142
+ it("a compute that was in flight when clear() ran does not repopulate the cache", async () => {
143
+ const cache = new HardBlockVerdictCache(30_000, 100);
144
+ let release = () => { };
145
+ const staleCompute = () => new Promise((resolve) => {
146
+ release = resolve;
147
+ });
148
+ const stale = cache.getOrCompute("k", staleCompute);
149
+ cache.clear();
150
+ release([rule("deleted")]);
151
+ expect((await stale)[0]?.description).toBe("rule-deleted");
152
+ expect(cache.get("k")).toBeUndefined();
153
+ let calls = 0;
154
+ const fresh = await cache.getOrCompute("k", async () => {
155
+ calls++;
156
+ return [];
157
+ });
158
+ expect(calls).toBe(1);
159
+ expect(fresh).toHaveLength(0);
160
+ });
161
+ it("a caller arriving after clear() does not join the pre-clear compute", async () => {
162
+ const cache = new HardBlockVerdictCache(30_000, 100);
163
+ let release = () => { };
164
+ const stale = cache.getOrCompute("k", () => new Promise((resolve) => {
165
+ release = resolve;
166
+ }));
167
+ cache.clear();
168
+ const fresh = cache.getOrCompute("k", async () => []);
169
+ release([rule("deleted")]);
170
+ expect(await fresh).toHaveLength(0);
171
+ expect((await stale)[0]?.description).toBe("rule-deleted");
172
+ expect(cache.get("k")).toEqual([]);
173
+ });
142
174
  it("fast-paths a cache hit without touching the inflight map", async () => {
143
175
  const cache = new HardBlockVerdictCache(30_000, 100);
144
176
  cache.set("k", [rule("prefilled")]);
@@ -1 +1 @@
1
- {"version":3,"file":"hardBlockVerdictCache.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/hardBlockVerdictCache.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hardBlockVerdictCache.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/hardBlockVerdictCache.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=requestBodySummary.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestBodySummary.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/unit/api/requestBodySummary.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,172 @@
1
+ import { handleErrors } from "@prosopo/api-express-router";
2
+ import { getLogger } from "@prosopo/logger";
3
+ import { ClientApiPaths } from "@prosopo/types";
4
+ import express from "express";
5
+ import i18next from "i18next";
6
+ import { afterAll, beforeAll, beforeEach, describe, expect, it, vi, } from "vitest";
7
+ vi.mock("../../../api/admin/apiToggleMaintenanceModeEndpoint.js", () => ({
8
+ getMaintenanceMode: () => false,
9
+ }));
10
+ vi.mock("../../../tasks/tasks.js", () => ({
11
+ Tasks: vi.fn().mockImplementation(function () {
12
+ return {};
13
+ }),
14
+ }));
15
+ import submitPuzzleCaptchaSolution from "../../../api/captcha/submitPuzzleCaptchaSolution.js";
16
+ import { MAX_PREVIEW_CHARS, summariseRequestBody, } from "../../../api/requestBodySummary.js";
17
+ import { prosopoVerifyRouter } from "../../../api/verify.js";
18
+ const SECRET = "SECRET_VALUE_THAT_MUST_NOT_BE_LOGGED";
19
+ const LOG_LINE_LIMIT = 8_000;
20
+ describe("summariseRequestBody", () => {
21
+ it("redacts signature, token and secret fields at any depth", () => {
22
+ const summary = summariseRequestBody({
23
+ headers: {},
24
+ body: {
25
+ dapp: "site-key",
26
+ token: SECRET,
27
+ dappSignature: SECRET,
28
+ secret: SECRET,
29
+ signature: { user: { timestamp: SECRET } },
30
+ nested: { procaptchaToken: SECRET, fingerprintProof: SECRET },
31
+ },
32
+ });
33
+ expect(summary.preview).not.toContain(SECRET);
34
+ expect(summary.preview).toContain("site-key");
35
+ expect(summary.keys).toEqual([
36
+ "dapp",
37
+ "token",
38
+ "dappSignature",
39
+ "secret",
40
+ "signature",
41
+ "nested",
42
+ ]);
43
+ expect(summary.keyCount).toBe(6);
44
+ });
45
+ it("bounds huge strings, arrays and key counts", () => {
46
+ const body = {
47
+ long: "x".repeat(900_000),
48
+ events: Array.from({ length: 150_000 }, () => null),
49
+ deep: { a: { b: { c: { d: SECRET } } } },
50
+ };
51
+ for (let i = 0; i < 1000; i++) {
52
+ body[`k${i}`] = i;
53
+ }
54
+ const summary = summariseRequestBody({
55
+ headers: { "content-length": "987654" },
56
+ body,
57
+ });
58
+ expect(summary.bytes).toBe(987654);
59
+ expect(summary.keyCount).toBe(1003);
60
+ expect(summary.keys).toHaveLength(20);
61
+ expect(summary.preview.length).toBeLessThanOrEqual(MAX_PREVIEW_CHARS);
62
+ expect(summary.preview).toContain("(+899936 chars)");
63
+ expect(summary.preview).toContain("(+149995 items)");
64
+ expect(summary.preview).not.toContain(SECRET);
65
+ expect(JSON.stringify(summary).length).toBeLessThan(2_000);
66
+ });
67
+ it("summarises non-object bodies", () => {
68
+ expect(summariseRequestBody({ headers: {}, body: undefined })).toEqual({
69
+ type: "undefined",
70
+ preview: "",
71
+ });
72
+ expect(summariseRequestBody({ headers: {}, body: null })).toEqual({
73
+ type: "null",
74
+ preview: "null",
75
+ });
76
+ expect(summariseRequestBody({ headers: {}, body: ["a", 1, "b".repeat(100)] })).toEqual({
77
+ type: "array",
78
+ preview: `["a",1,"${"b".repeat(64)}...(+36 chars)"]`,
79
+ });
80
+ expect(summariseRequestBody({
81
+ headers: { "content-length": "not-a-number" },
82
+ body: "text",
83
+ })).toEqual({ type: "string", preview: '"text"' });
84
+ });
85
+ });
86
+ describe("parse-failure logs on client routes", () => {
87
+ const records = [];
88
+ const logger = getLogger("fatal", "requestBodySummary.test");
89
+ const capture = (fn) => {
90
+ records.push(fn());
91
+ };
92
+ const i18n = i18next.createInstance();
93
+ let baseUrl = "";
94
+ let server;
95
+ beforeAll(async () => {
96
+ await i18n.init({ lng: "en", resources: {} });
97
+ vi.spyOn(logger, "error").mockImplementation(capture);
98
+ vi.spyOn(logger, "info").mockImplementation(capture);
99
+ vi.spyOn(logger, "debug").mockImplementation(capture);
100
+ vi.spyOn(logger, "warn").mockImplementation(capture);
101
+ const env = { logger };
102
+ const app = express();
103
+ app.use(express.json({ limit: "1mb" }));
104
+ app.use((req, _res, next) => {
105
+ req.i18n = { t: i18n.t };
106
+ req.logger = logger;
107
+ next();
108
+ });
109
+ const puzzle = submitPuzzleCaptchaSolution(env);
110
+ const puzzleHandler = (req, res, next) => {
111
+ puzzle(req, res, next).catch(next);
112
+ };
113
+ app.post("/puzzle", puzzleHandler);
114
+ app.use(prosopoVerifyRouter(env));
115
+ app.use(handleErrors);
116
+ await new Promise((resolve) => {
117
+ server = app.listen(0, "127.0.0.1", () => resolve());
118
+ });
119
+ const address = server?.address();
120
+ baseUrl = `http://127.0.0.1:${address.port}`;
121
+ });
122
+ afterAll(async () => {
123
+ await new Promise((resolve) => server?.close(() => resolve()));
124
+ });
125
+ beforeEach(() => {
126
+ records.length = 0;
127
+ });
128
+ const post = async (path, body) => {
129
+ const res = await fetch(`${baseUrl}${path}`, {
130
+ method: "POST",
131
+ headers: { "content-type": "application/json" },
132
+ body: JSON.stringify(body),
133
+ });
134
+ await res.text();
135
+ return res.status;
136
+ };
137
+ const padding = "p".repeat(900_000);
138
+ const cases = [
139
+ [
140
+ "image verify",
141
+ ClientApiPaths.VerifyImageCaptchaSolutionDapp,
142
+ { token: 1, dappSignature: SECRET, padding },
143
+ ],
144
+ [
145
+ "pow verify",
146
+ ClientApiPaths.VerifyPowCaptchaSolution,
147
+ { token: 1, dappSignature: SECRET, padding },
148
+ ],
149
+ [
150
+ "puzzle submit",
151
+ "/puzzle",
152
+ {
153
+ challenge: 1,
154
+ signature: { user: { timestamp: SECRET } },
155
+ padding,
156
+ },
157
+ ],
158
+ ];
159
+ for (const [name, path, body] of cases) {
160
+ it(`${name}: logs a bounded, redacted body summary`, async () => {
161
+ expect(await post(path, body)).toBe(400);
162
+ expect(records.length).toBeGreaterThan(0);
163
+ for (const record of records) {
164
+ const line = JSON.stringify(record);
165
+ expect(line.length).toBeLessThan(LOG_LINE_LIMIT);
166
+ expect(line).not.toContain(SECRET);
167
+ }
168
+ expect(JSON.stringify(records)).toContain('"keys":[');
169
+ });
170
+ }
171
+ });
172
+ //# sourceMappingURL=requestBodySummary.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requestBodySummary.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/requestBodySummary.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
+ import { InputMethod } from "@prosopo/types";
1
2
  import { embedData, extractData } from "@prosopo/util";
2
3
  import { randomAsHex } from "@prosopo/util-crypto";
3
4
  import { describe, expect, it } from "vitest";
4
- import { constructPairList, containsIdenticalPairs, peelCheckboxPrefix, } from "../../pairs.js";
5
+ import { constructPairList, containsIdenticalPairs, keyboardSelectionHasPosition, peelCheckboxInputMethod, peelCheckboxPrefix, resolveInputMethods, selectionsLookScripted, } from "../../pairs.js";
6
+ const { keyboard, pointer } = InputMethod;
5
7
  describe("constructPairList", () => {
6
8
  it("should construct pairs from even-length array", () => {
7
9
  const input = [1, 2, 3, 4, 5, 6];
@@ -304,4 +306,127 @@ describe("peelCheckboxPrefix", () => {
304
306
  expect(peelCheckboxPrefix([], [])).toEqual({ flat: [] });
305
307
  });
306
308
  });
309
+ describe("containsIdenticalPairs with input methods", () => {
310
+ const keyboardOnly = [
311
+ [[0, 0]],
312
+ [
313
+ [0, 0],
314
+ [0, 0],
315
+ [0, 0],
316
+ ],
317
+ [
318
+ [0, 0],
319
+ [0, 0],
320
+ ],
321
+ ];
322
+ it("leaves keyboard selections out of the repeated-position check", () => {
323
+ const methods = [
324
+ [keyboard],
325
+ [keyboard, keyboard, keyboard],
326
+ [keyboard, keyboard],
327
+ ];
328
+ expect(containsIdenticalPairs(keyboardOnly, methods)).toBe(false);
329
+ });
330
+ it("still counts repeated (0, 0) when nothing declares keyboard", () => {
331
+ expect(containsIdenticalPairs(keyboardOnly)).toBe(true);
332
+ });
333
+ it("still flags (0, 0) declared as pointer twice", () => {
334
+ const methods = [
335
+ [pointer],
336
+ [pointer, keyboard, keyboard],
337
+ [keyboard, keyboard],
338
+ ];
339
+ expect(containsIdenticalPairs(keyboardOnly, methods)).toBe(true);
340
+ });
341
+ it("allows a single pointer (0, 0) among keyboard selections", () => {
342
+ const methods = [
343
+ [pointer],
344
+ [keyboard, keyboard, keyboard],
345
+ [keyboard, keyboard],
346
+ ];
347
+ expect(containsIdenticalPairs(keyboardOnly, methods)).toBe(false);
348
+ });
349
+ it("flags a repeated pointer position alongside keyboard selections", () => {
350
+ const pairs = [
351
+ [[0, 0]],
352
+ [
353
+ [0, 0],
354
+ [120, 340],
355
+ ],
356
+ [[120, 340]],
357
+ ];
358
+ const methods = [[keyboard], [keyboard, pointer], [pointer]];
359
+ expect(containsIdenticalPairs(pairs, methods)).toBe(true);
360
+ });
361
+ });
362
+ describe("resolveInputMethods", () => {
363
+ it("treats every pair of a captcha that declares nothing as pointer", () => {
364
+ expect(resolveInputMethods([
365
+ [1, 2, 3, 4],
366
+ [5, 6],
367
+ ], [undefined, undefined])).toEqual([[pointer, pointer], [pointer]]);
368
+ });
369
+ it("keeps the declared methods when they line up with the pairs", () => {
370
+ expect(resolveInputMethods([
371
+ [0, 0, 5, 6],
372
+ [0, 0],
373
+ ], [[keyboard, pointer], [keyboard]])).toEqual([[keyboard, pointer], [keyboard]]);
374
+ });
375
+ it("resolves each captcha on its own", () => {
376
+ expect(resolveInputMethods([
377
+ [1, 2],
378
+ [0, 0],
379
+ ], [undefined, [keyboard]])).toEqual([[pointer], [keyboard]]);
380
+ });
381
+ it("rejects more methods than pairs", () => {
382
+ expect(resolveInputMethods([[1, 2]], [[pointer, keyboard]])).toBeUndefined();
383
+ });
384
+ it("rejects fewer methods than pairs", () => {
385
+ expect(resolveInputMethods([[0, 0, 0, 0]], [[keyboard]])).toBeUndefined();
386
+ });
387
+ });
388
+ describe("peelCheckboxInputMethod", () => {
389
+ it("gives the checkbox its own list, as its coordinates get", () => {
390
+ expect(peelCheckboxInputMethod([[keyboard, pointer, pointer], [keyboard]])).toEqual([[keyboard], [pointer, pointer], [keyboard]]);
391
+ });
392
+ it("leaves an empty first list alone", () => {
393
+ expect(peelCheckboxInputMethod([[], [pointer]])).toEqual([[], [pointer]]);
394
+ expect(peelCheckboxInputMethod([])).toEqual([]);
395
+ });
396
+ });
397
+ describe("keyboardSelectionHasPosition", () => {
398
+ it("accepts keyboard selections at (0, 0)", () => {
399
+ expect(keyboardSelectionHasPosition([[[0, 0]], [[0, 0]]], [[keyboard], [keyboard]])).toBe(false);
400
+ });
401
+ it("flags a keyboard selection carrying a position", () => {
402
+ expect(keyboardSelectionHasPosition([[[0, 0]], [[12, 0]]], [[keyboard], [keyboard]])).toBe(true);
403
+ });
404
+ it("does not care where pointer selections are", () => {
405
+ expect(keyboardSelectionHasPosition([[[12, 34]]], [[pointer]])).toBe(false);
406
+ });
407
+ });
408
+ describe("selectionsLookScripted", () => {
409
+ it("passes a keyboard-only solve", () => {
410
+ expect(selectionsLookScripted([
411
+ [[0, 0]],
412
+ [
413
+ [0, 0],
414
+ [0, 0],
415
+ ],
416
+ [[0, 0]],
417
+ ], [[keyboard], [keyboard, keyboard], [keyboard]])).toBe(false);
418
+ });
419
+ it("passes pointer selections at distinct positions", () => {
420
+ expect(selectionsLookScripted([[[3, 4]], [[10, 20]], [[11, 20]]], [[pointer], [pointer], [pointer]])).toBe(false);
421
+ });
422
+ it("rejects methods that did not line up with the coordinates", () => {
423
+ expect(selectionsLookScripted([[[3, 4]]], undefined)).toBe(true);
424
+ });
425
+ it("rejects a keyboard selection carrying a position", () => {
426
+ expect(selectionsLookScripted([[[3, 4]], [[50, 60]]], [[pointer], [keyboard]])).toBe(true);
427
+ });
428
+ it("rejects a repeated pointer position", () => {
429
+ expect(selectionsLookScripted([[[3, 4]], [[50, 60]], [[50, 60]]], [[pointer], [pointer], [pointer]])).toBe(true);
430
+ });
431
+ });
307
432
  //# sourceMappingURL=pairs.unit.test.js.map