@prosopo/provider 2.9.8 → 3.0.6
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.
- package/CHANGELOG.md +186 -0
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js +4 -4
- package/dist/api/admin/apiRegisterSiteKeyEndpoint.js.map +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js +5 -5
- package/dist/api/admin/apiRemoveDetectorKeyEndpoint.js.map +1 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.d.ts.map +1 -1
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js +5 -5
- package/dist/api/admin/apiUpdateDetectorKeyEndpoint.js.map +1 -1
- package/dist/api/blacklistRequestInspector.d.ts +6 -8
- package/dist/api/blacklistRequestInspector.d.ts.map +1 -1
- package/dist/api/blacklistRequestInspector.js +38 -20
- package/dist/api/blacklistRequestInspector.js.map +1 -1
- package/dist/api/block.d.ts.map +1 -1
- package/dist/api/block.js +5 -5
- package/dist/api/block.js.map +1 -1
- package/dist/api/captcha.d.ts.map +1 -1
- package/dist/api/captcha.js +114 -24
- package/dist/api/captcha.js.map +1 -1
- package/dist/api/domainMiddleware.d.ts.map +1 -1
- package/dist/api/domainMiddleware.js +3 -3
- package/dist/api/domainMiddleware.js.map +1 -1
- package/dist/api/headerCheckMiddleware.js +2 -2
- package/dist/api/headerCheckMiddleware.js.map +1 -1
- package/dist/api/ja4Middleware.d.ts.map +1 -1
- package/dist/api/ja4Middleware.js +18 -6
- package/dist/api/ja4Middleware.js.map +1 -1
- package/dist/api/public.d.ts +1 -2
- package/dist/api/public.d.ts.map +1 -1
- package/dist/api/public.js +9 -4
- package/dist/api/public.js.map +1 -1
- package/dist/api/validateAddress.d.ts +2 -2
- package/dist/api/validateAddress.d.ts.map +1 -1
- package/dist/api/validateAddress.js +10 -4
- package/dist/api/validateAddress.js.map +1 -1
- package/dist/api/verify.d.ts.map +1 -1
- package/dist/api/verify.js +8 -7
- package/dist/api/verify.js.map +1 -1
- package/dist/cjs/api/admin/apiRegisterSiteKeyEndpoint.cjs +3 -3
- package/dist/cjs/api/admin/apiRemoveDetectorKeyEndpoint.cjs +4 -4
- package/dist/cjs/api/admin/apiUpdateDetectorKeyEndpoint.cjs +4 -4
- package/dist/cjs/api/blacklistRequestInspector.cjs +36 -21
- package/dist/cjs/api/block.cjs +4 -5
- package/dist/cjs/api/captcha.cjs +116 -39
- package/dist/cjs/api/domainMiddleware.cjs +3 -3
- package/dist/cjs/api/headerCheckMiddleware.cjs +1 -1
- package/dist/cjs/api/ja4Middleware.cjs +17 -8
- package/dist/cjs/api/public.cjs +9 -4
- package/dist/cjs/api/validateAddress.cjs +12 -6
- package/dist/cjs/api/verify.cjs +13 -12
- package/dist/cjs/index.cjs +1 -5
- package/dist/cjs/schedulers/captchaScheduler.cjs +11 -7
- package/dist/cjs/schedulers/getClientList.cjs +12 -5
- package/dist/cjs/tasks/captchaManager.cjs +76 -23
- package/dist/cjs/tasks/client/clientTasks.cjs +25 -19
- package/dist/cjs/tasks/detection/decodePayload.cjs +284 -362
- package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +32 -25
- package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +37 -26
- package/dist/cjs/tasks/powCaptcha/powTasks.cjs +19 -18
- package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +5 -3
- package/dist/cjs/tasks/tasks.cjs +11 -2
- package/dist/cjs/util.cjs +58 -8
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/schedulers/captchaScheduler.d.ts +1 -1
- package/dist/schedulers/captchaScheduler.d.ts.map +1 -1
- package/dist/schedulers/captchaScheduler.js +11 -3
- package/dist/schedulers/captchaScheduler.js.map +1 -1
- package/dist/schedulers/getClientList.d.ts +1 -1
- package/dist/schedulers/getClientList.d.ts.map +1 -1
- package/dist/schedulers/getClientList.js +12 -3
- package/dist/schedulers/getClientList.js.map +1 -1
- package/dist/tasks/captchaManager.d.ts +14 -1
- package/dist/tasks/captchaManager.d.ts.map +1 -1
- package/dist/tasks/captchaManager.js +67 -24
- package/dist/tasks/captchaManager.js.map +1 -1
- package/dist/tasks/client/clientTasks.d.ts.map +1 -1
- package/dist/tasks/client/clientTasks.js +26 -18
- package/dist/tasks/client/clientTasks.js.map +1 -1
- package/dist/tasks/detection/decodePayload.d.ts +2 -2
- package/dist/tasks/detection/decodePayload.d.ts.map +1 -1
- package/dist/tasks/detection/decodePayload.js +184 -230
- package/dist/tasks/detection/decodePayload.js.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.d.ts +4 -5
- package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
- package/dist/tasks/frictionless/frictionlessTasks.js +32 -24
- package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -1
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +38 -25
- package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts +1 -1
- package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasks.js +17 -18
- package/dist/tasks/powCaptcha/powTasks.js.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -1
- package/dist/tasks/powCaptcha/powTasksUtils.js +5 -3
- package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -1
- package/dist/tasks/tasks.d.ts +3 -2
- package/dist/tasks/tasks.d.ts.map +1 -1
- package/dist/tasks/tasks.js +13 -3
- package/dist/tasks/tasks.js.map +1 -1
- package/dist/tests/integration/imgCaptcha.integration.test.js +3 -2
- package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -1
- package/dist/tests/integration/powCaptcha.integration.test.js +9 -9
- package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -1
- package/dist/tests/integration/registerSitekey.d.ts.map +1 -1
- package/dist/tests/integration/registerSitekey.js +13 -2
- package/dist/tests/integration/registerSitekey.js.map +1 -1
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts +2 -0
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.d.ts.map +1 -0
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js +43 -0
- package/dist/tests/unit/api/ignoreMiddleware.unit.test.js.map +1 -0
- package/dist/tests/unit/api/ja4Middleware.unit.test.js +18 -4
- package/dist/tests/unit/api/ja4Middleware.unit.test.js.map +1 -1
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +30 -18
- package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/captchaManager.unit.test.js +11 -5
- package/dist/tests/unit/tasks/captchaManager.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +43 -19
- package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +11 -4
- package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js +9 -8
- package/dist/tests/unit/tasks/frictionless/frictionlessTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +29 -10
- package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +2 -3
- package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -1
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +4 -2
- package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -1
- package/dist/tests/unit/util.unit.test.js +110 -2
- package/dist/tests/unit/util.unit.test.js.map +1 -1
- package/dist/util.d.ts +5 -0
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +57 -5
- package/dist/util.js.map +1 -1
- package/package.json +24 -20
- package/vite.test.config.ts +1 -1
- package/dist/api/authMiddleware.d.ts +0 -6
- package/dist/api/authMiddleware.d.ts.map +0 -1
- package/dist/api/authMiddleware.js +0 -82
- package/dist/api/authMiddleware.js.map +0 -1
- package/dist/api/requestLoggerMiddleware.d.ts +0 -4
- package/dist/api/requestLoggerMiddleware.d.ts.map +0 -1
- package/dist/api/requestLoggerMiddleware.js +0 -12
- package/dist/api/requestLoggerMiddleware.js.map +0 -1
- package/dist/cjs/api/authMiddleware.cjs +0 -81
- package/dist/cjs/api/requestLoggerMiddleware.cjs +0 -14
- package/dist/tests/unit/api/authMiddleware.unit.test.d.ts +0 -2
- package/dist/tests/unit/api/authMiddleware.unit.test.d.ts.map +0 -1
- package/dist/tests/unit/api/authMiddleware.unit.test.js +0 -125
- package/dist/tests/unit/api/authMiddleware.unit.test.js.map +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { hexToU8a, isHex } from "@polkadot/util";
|
|
2
|
-
import { ProsopoApiError, ProsopoEnvError } from "@prosopo/common";
|
|
3
|
-
import { describe, expect, it, vi } from "vitest";
|
|
4
|
-
import { authMiddleware } from "../../../api/authMiddleware.js";
|
|
5
|
-
vi.mock("@polkadot/util", () => ({
|
|
6
|
-
hexToU8a: vi.fn(),
|
|
7
|
-
isHex: vi.fn(),
|
|
8
|
-
}));
|
|
9
|
-
const mockLogger = {
|
|
10
|
-
info: vi.fn(),
|
|
11
|
-
error: vi.fn(),
|
|
12
|
-
warn: vi.fn(),
|
|
13
|
-
};
|
|
14
|
-
const mockTasks = {};
|
|
15
|
-
const mockPair = {
|
|
16
|
-
publicKey: "mockPublicKey",
|
|
17
|
-
verify: vi.fn(),
|
|
18
|
-
};
|
|
19
|
-
const mockEnv = {
|
|
20
|
-
pair: mockPair,
|
|
21
|
-
authAccount: mockPair,
|
|
22
|
-
logger: mockLogger,
|
|
23
|
-
};
|
|
24
|
-
describe("authMiddleware", () => {
|
|
25
|
-
it("should call next() if signature is valid", async () => {
|
|
26
|
-
const mockReq = {
|
|
27
|
-
url: "/v1/prosopo/provider/captcha/image",
|
|
28
|
-
originalUrl: "/v1/prosopo/provider/captcha/image",
|
|
29
|
-
headers: {
|
|
30
|
-
signature: "0x1234",
|
|
31
|
-
timestamp: new Date().getTime(),
|
|
32
|
-
},
|
|
33
|
-
logger: mockLogger,
|
|
34
|
-
};
|
|
35
|
-
const mockRes = {
|
|
36
|
-
status: vi.fn().mockReturnThis(),
|
|
37
|
-
json: vi.fn(),
|
|
38
|
-
};
|
|
39
|
-
const mockNext = vi.fn();
|
|
40
|
-
vi.mocked(isHex).mockReturnValue(true);
|
|
41
|
-
vi.mocked(hexToU8a).mockReturnValue(new Uint8Array());
|
|
42
|
-
vi.mocked(mockPair.verify).mockReturnValue(true);
|
|
43
|
-
const middleware = authMiddleware(mockEnv);
|
|
44
|
-
await middleware(mockReq, mockRes, mockNext);
|
|
45
|
-
expect(mockNext).toHaveBeenCalled();
|
|
46
|
-
expect(mockRes.status).not.toHaveBeenCalled();
|
|
47
|
-
});
|
|
48
|
-
it("should return 401 if signature is invalid", async () => {
|
|
49
|
-
const mockReq = {
|
|
50
|
-
url: "/v1/prosopo/provider/captcha/image",
|
|
51
|
-
originalUrl: "/v1/prosopo/provider/captcha/image",
|
|
52
|
-
headers: {
|
|
53
|
-
signature: "0x1234",
|
|
54
|
-
timestamp: new Date().getTime(),
|
|
55
|
-
},
|
|
56
|
-
logger: mockLogger,
|
|
57
|
-
};
|
|
58
|
-
const mockRes = {
|
|
59
|
-
status: vi.fn().mockReturnThis(),
|
|
60
|
-
json: vi.fn(),
|
|
61
|
-
};
|
|
62
|
-
const mockNext = vi.fn();
|
|
63
|
-
vi.mocked(isHex).mockReturnValue(true);
|
|
64
|
-
vi.mocked(hexToU8a).mockReturnValue(new Uint8Array());
|
|
65
|
-
vi.mocked(mockPair.verify).mockReturnValue(false);
|
|
66
|
-
const middleware = authMiddleware(mockEnv);
|
|
67
|
-
await middleware(mockReq, mockRes, mockNext);
|
|
68
|
-
expect(mockNext).not.toHaveBeenCalled();
|
|
69
|
-
expect(mockRes.status).toHaveBeenCalledWith(401);
|
|
70
|
-
expect(mockRes.json).toHaveBeenCalledWith({
|
|
71
|
-
error: "Unauthorized",
|
|
72
|
-
message: expect.any(ProsopoApiError),
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
it("should return 401 if key pair is missing", async () => {
|
|
76
|
-
const mockReq = {
|
|
77
|
-
url: "/v1/prosopo/provider/captcha/image",
|
|
78
|
-
originalUrl: "/v1/prosopo/provider/captcha/image",
|
|
79
|
-
headers: {
|
|
80
|
-
signature: "0x1234",
|
|
81
|
-
timestamp: new Date().getTime(),
|
|
82
|
-
},
|
|
83
|
-
logger: mockLogger,
|
|
84
|
-
};
|
|
85
|
-
const mockRes = {
|
|
86
|
-
status: vi.fn().mockReturnThis(),
|
|
87
|
-
json: vi.fn(),
|
|
88
|
-
};
|
|
89
|
-
const mockNext = vi.fn();
|
|
90
|
-
const invalidEnv = {
|
|
91
|
-
pair: null,
|
|
92
|
-
};
|
|
93
|
-
const middleware = authMiddleware(invalidEnv);
|
|
94
|
-
await middleware(mockReq, mockRes, mockNext);
|
|
95
|
-
expect(mockNext).not.toHaveBeenCalled();
|
|
96
|
-
expect(mockRes.status).toHaveBeenCalledWith(401);
|
|
97
|
-
expect(mockRes.json).toHaveBeenCalledWith({
|
|
98
|
-
error: "Unauthorized",
|
|
99
|
-
message: expect.any(ProsopoEnvError),
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
it("should 404 if url does not contain /v1/prosopo", async () => {
|
|
103
|
-
const mockReq = {
|
|
104
|
-
url: "/favicon.ico",
|
|
105
|
-
originalUrl: "/favicon.ico",
|
|
106
|
-
headers: {
|
|
107
|
-
signature: "0x1234",
|
|
108
|
-
timestamp: new Date().getTime(),
|
|
109
|
-
},
|
|
110
|
-
logger: mockLogger,
|
|
111
|
-
};
|
|
112
|
-
const mockRes = {
|
|
113
|
-
status: vi.fn().mockReturnThis(),
|
|
114
|
-
statusCode: 404,
|
|
115
|
-
json: vi.fn(),
|
|
116
|
-
};
|
|
117
|
-
const mockNext = vi.fn(() => {
|
|
118
|
-
console.log("mock next function");
|
|
119
|
-
});
|
|
120
|
-
const middleware = authMiddleware(mockEnv);
|
|
121
|
-
await middleware(mockReq, mockRes, mockNext);
|
|
122
|
-
expect(mockRes.statusCode).toBe(404);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
//# sourceMappingURL=authMiddleware.unit.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"authMiddleware.unit.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/api/authMiddleware.unit.test.ts"],"names":[],"mappings":"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"}
|