@prosopo/provider 2.1.4 → 2.1.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.
Files changed (263) hide show
  1. package/.dockerignore +5 -0
  2. package/dist/api/admin.d.ts +4 -0
  3. package/dist/api/admin.d.ts.map +1 -0
  4. package/dist/api/admin.js +36 -0
  5. package/dist/api/admin.js.map +1 -0
  6. package/dist/api/authMiddleware.d.ts +6 -0
  7. package/dist/api/authMiddleware.d.ts.map +1 -0
  8. package/dist/api/authMiddleware.js +66 -0
  9. package/dist/api/authMiddleware.js.map +1 -0
  10. package/dist/api/captcha.d.ts +4 -0
  11. package/dist/api/captcha.d.ts.map +1 -0
  12. package/dist/api/captcha.js +299 -0
  13. package/dist/api/captcha.js.map +1 -0
  14. package/dist/api/captchaScheduler.d.ts +4 -0
  15. package/dist/api/captchaScheduler.d.ts.map +1 -0
  16. package/dist/api/captchaScheduler.js +17 -0
  17. package/dist/api/captchaScheduler.js.map +1 -0
  18. package/dist/api/errorHandler.d.ts +11 -0
  19. package/dist/api/errorHandler.d.ts.map +1 -0
  20. package/dist/api/errorHandler.js +42 -0
  21. package/dist/api/errorHandler.js.map +1 -0
  22. package/dist/api/verify.d.ts +4 -0
  23. package/dist/api/verify.d.ts.map +1 -0
  24. package/dist/api/verify.js +98 -0
  25. package/dist/api/verify.js.map +1 -0
  26. package/dist/batch/commitments.d.ts +24 -0
  27. package/dist/batch/commitments.d.ts.map +1 -0
  28. package/dist/batch/commitments.js +130 -0
  29. package/dist/batch/commitments.js.map +1 -0
  30. package/dist/batch/index.d.ts +2 -0
  31. package/dist/batch/index.d.ts.map +1 -0
  32. package/dist/batch/index.js +2 -0
  33. package/dist/batch/index.js.map +1 -0
  34. package/dist/cjs/api/admin.cjs +37 -0
  35. package/dist/cjs/api/authMiddleware.cjs +66 -0
  36. package/dist/cjs/api/captcha.cjs +380 -0
  37. package/dist/cjs/api/errorHandler.cjs +42 -0
  38. package/dist/cjs/api/verify.cjs +120 -0
  39. package/dist/cjs/index.cjs +25 -0
  40. package/dist/cjs/schedulers/captchaScheduler.cjs +33 -0
  41. package/dist/cjs/schedulers/getClientList.cjs +31 -0
  42. package/dist/cjs/tasks/client/clientTasks.cjs +148 -0
  43. package/dist/cjs/tasks/dataset/datasetTasks.cjs +30 -0
  44. package/dist/cjs/tasks/dataset/datasetTasksUtils.cjs +34 -0
  45. package/dist/cjs/tasks/detection/decodePayload.cjs +549 -0
  46. package/dist/cjs/tasks/detection/getBotScore.cjs +18 -0
  47. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasks.cjs +313 -0
  48. package/dist/cjs/tasks/imgCaptcha/imgCaptchaTasksUtils.cjs +25 -0
  49. package/dist/cjs/tasks/index.cjs +4 -0
  50. package/dist/cjs/tasks/powCaptcha/powTasks.cjs +134 -0
  51. package/dist/cjs/tasks/powCaptcha/powTasksUtils.cjs +26 -0
  52. package/dist/cjs/tasks/tasks.cjs +40 -0
  53. package/dist/cjs/util.cjs +45 -0
  54. package/dist/index.d.ts +10 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +10 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/scheduler.d.ts +4 -0
  59. package/dist/scheduler.d.ts.map +1 -0
  60. package/dist/scheduler.js +21 -0
  61. package/dist/scheduler.js.map +1 -0
  62. package/dist/schedulers/captchaScheduler.d.ts +4 -0
  63. package/dist/schedulers/captchaScheduler.d.ts.map +1 -0
  64. package/dist/schedulers/captchaScheduler.js +28 -0
  65. package/dist/schedulers/captchaScheduler.js.map +1 -0
  66. package/dist/schedulers/getClientList.d.ts +4 -0
  67. package/dist/schedulers/getClientList.d.ts.map +1 -0
  68. package/dist/schedulers/getClientList.js +28 -0
  69. package/dist/schedulers/getClientList.js.map +1 -0
  70. package/dist/tasks/client/clientTasks.d.ts +13 -0
  71. package/dist/tasks/client/clientTasks.d.ts.map +1 -0
  72. package/dist/tasks/client/clientTasks.js +87 -0
  73. package/dist/tasks/client/clientTasks.js.map +1 -0
  74. package/dist/tasks/dataset/datasetTasks.d.ts +13 -0
  75. package/dist/tasks/dataset/datasetTasks.d.ts.map +1 -0
  76. package/dist/tasks/dataset/datasetTasks.js +19 -0
  77. package/dist/tasks/dataset/datasetTasks.js.map +1 -0
  78. package/dist/tasks/dataset/datasetTasksUtils.d.ts +3 -0
  79. package/dist/tasks/dataset/datasetTasksUtils.d.ts.map +1 -0
  80. package/dist/tasks/dataset/datasetTasksUtils.js +34 -0
  81. package/dist/tasks/dataset/datasetTasksUtils.js.map +1 -0
  82. package/dist/tasks/detection/decodePayload.d.ts +3 -0
  83. package/dist/tasks/detection/decodePayload.d.ts.map +1 -0
  84. package/dist/tasks/detection/decodePayload.js +302 -0
  85. package/dist/tasks/detection/decodePayload.js.map +1 -0
  86. package/dist/tasks/detection/getBotScore.d.ts +2 -0
  87. package/dist/tasks/detection/getBotScore.d.ts.map +1 -0
  88. package/dist/tasks/detection/getBotScore.js +17 -0
  89. package/dist/tasks/detection/getBotScore.js.map +1 -0
  90. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts +29 -0
  91. package/dist/tasks/imgCaptcha/imgCaptchaTasks.d.ts.map +1 -0
  92. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js +242 -0
  93. package/dist/tasks/imgCaptcha/imgCaptchaTasks.js.map +1 -0
  94. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts +7 -0
  95. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.d.ts.map +1 -0
  96. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js +18 -0
  97. package/dist/tasks/imgCaptcha/imgCaptchaTasksUtils.js.map +1 -0
  98. package/dist/tasks/index.d.ts +2 -0
  99. package/dist/tasks/index.d.ts.map +1 -0
  100. package/dist/tasks/index.js +2 -0
  101. package/dist/tasks/index.js.map +1 -0
  102. package/dist/tasks/powCaptcha/powTasks.d.ts +13 -0
  103. package/dist/tasks/powCaptcha/powTasks.d.ts.map +1 -0
  104. package/dist/tasks/powCaptcha/powTasks.js +84 -0
  105. package/dist/tasks/powCaptcha/powTasks.js.map +1 -0
  106. package/dist/tasks/powCaptcha/powTasksUtils.d.ts +3 -0
  107. package/dist/tasks/powCaptcha/powTasksUtils.d.ts.map +1 -0
  108. package/dist/tasks/powCaptcha/powTasksUtils.js +22 -0
  109. package/dist/tasks/powCaptcha/powTasksUtils.js.map +1 -0
  110. package/dist/tasks/tasks.d.ts +22 -0
  111. package/dist/tasks/tasks.d.ts.map +1 -0
  112. package/dist/tasks/tasks.js +24 -0
  113. package/dist/tasks/tasks.js.map +1 -0
  114. package/dist/tests/accounts.d.ts +12 -0
  115. package/dist/tests/accounts.d.ts.map +1 -0
  116. package/dist/tests/accounts.js +35 -0
  117. package/dist/tests/accounts.js.map +1 -0
  118. package/dist/tests/contract/helpers.test.d.ts +6 -0
  119. package/dist/tests/contract/helpers.test.d.ts.map +1 -0
  120. package/dist/tests/contract/helpers.test.js +54 -0
  121. package/dist/tests/contract/helpers.test.js.map +1 -0
  122. package/dist/tests/dataUtils/DatabaseAccounts.d.ts +35 -0
  123. package/dist/tests/dataUtils/DatabaseAccounts.d.ts.map +1 -0
  124. package/dist/tests/dataUtils/DatabaseAccounts.js +84 -0
  125. package/dist/tests/dataUtils/DatabaseAccounts.js.map +1 -0
  126. package/dist/tests/dataUtils/DatabasePopulator.d.ts +73 -0
  127. package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +1 -0
  128. package/dist/tests/dataUtils/DatabasePopulator.js +326 -0
  129. package/dist/tests/dataUtils/DatabasePopulator.js.map +1 -0
  130. package/dist/tests/dataUtils/dapp-example-contract/dapp.json +648 -0
  131. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +4 -0
  132. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +1 -0
  133. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +27 -0
  134. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +1 -0
  135. package/dist/tests/dataUtils/funds.d.ts +9 -0
  136. package/dist/tests/dataUtils/funds.d.ts.map +1 -0
  137. package/dist/tests/dataUtils/funds.js +105 -0
  138. package/dist/tests/dataUtils/funds.js.map +1 -0
  139. package/dist/tests/dataUtils/populateDatabase.d.ts +16 -0
  140. package/dist/tests/dataUtils/populateDatabase.d.ts.map +1 -0
  141. package/dist/tests/dataUtils/populateDatabase.js +72 -0
  142. package/dist/tests/dataUtils/populateDatabase.js.map +1 -0
  143. package/dist/tests/getUser.d.ts +4 -0
  144. package/dist/tests/getUser.d.ts.map +1 -0
  145. package/dist/tests/getUser.js +18 -0
  146. package/dist/tests/getUser.js.map +1 -0
  147. package/dist/tests/index.d.ts +2 -0
  148. package/dist/tests/index.d.ts.map +1 -0
  149. package/dist/tests/index.js +2 -0
  150. package/dist/tests/index.js.map +1 -0
  151. package/dist/tests/integration/imgCaptcha.integration.test.d.ts +2 -0
  152. package/dist/tests/integration/imgCaptcha.integration.test.d.ts.map +1 -0
  153. package/dist/tests/integration/imgCaptcha.integration.test.js +137 -0
  154. package/dist/tests/integration/imgCaptcha.integration.test.js.map +1 -0
  155. package/dist/tests/integration/imgCaptcha.test.d.ts +2 -0
  156. package/dist/tests/integration/imgCaptcha.test.d.ts.map +1 -0
  157. package/dist/tests/integration/imgCaptcha.test.js +103 -0
  158. package/dist/tests/integration/imgCaptcha.test.js.map +1 -0
  159. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts +32 -0
  160. package/dist/tests/integration/mocks/solvedTestCaptchas.d.ts.map +1 -0
  161. package/dist/tests/integration/mocks/solvedTestCaptchas.js +1046 -0
  162. package/dist/tests/integration/mocks/solvedTestCaptchas.js.map +1 -0
  163. package/dist/tests/integration/powCaptcha.integration.test.d.ts +2 -0
  164. package/dist/tests/integration/powCaptcha.integration.test.d.ts.map +1 -0
  165. package/dist/tests/integration/powCaptcha.integration.test.js +222 -0
  166. package/dist/tests/integration/powCaptcha.integration.test.js.map +1 -0
  167. package/dist/tests/integration/powCaptcha.test.d.ts +2 -0
  168. package/dist/tests/integration/powCaptcha.test.d.ts.map +1 -0
  169. package/dist/tests/integration/powCaptcha.test.js +133 -0
  170. package/dist/tests/integration/powCaptcha.test.js.map +1 -0
  171. package/dist/tests/integration/registerSitekey.d.ts +2 -0
  172. package/dist/tests/integration/registerSitekey.d.ts.map +1 -0
  173. package/dist/tests/integration/registerSitekey.js +28 -0
  174. package/dist/tests/integration/registerSitekey.js.map +1 -0
  175. package/dist/tests/tasks/tasks.test.d.ts +6 -0
  176. package/dist/tests/tasks/tasks.test.d.ts.map +1 -0
  177. package/dist/tests/tasks/tasks.test.js +636 -0
  178. package/dist/tests/tasks/tasks.test.js.map +1 -0
  179. package/dist/tests/unit/api/authMiddleware.test.d.ts +2 -0
  180. package/dist/tests/unit/api/authMiddleware.test.d.ts.map +1 -0
  181. package/dist/tests/unit/api/authMiddleware.test.js +87 -0
  182. package/dist/tests/unit/api/authMiddleware.test.js.map +1 -0
  183. package/dist/tests/unit/api/authMiddleware.unit.test.d.ts +2 -0
  184. package/dist/tests/unit/api/authMiddleware.unit.test.d.ts.map +1 -0
  185. package/dist/tests/unit/api/authMiddleware.unit.test.js +108 -0
  186. package/dist/tests/unit/api/authMiddleware.unit.test.js.map +1 -0
  187. package/dist/tests/unit/api/captchaScheduler.test.d.ts +2 -0
  188. package/dist/tests/unit/api/captchaScheduler.test.d.ts.map +1 -0
  189. package/dist/tests/unit/api/captchaScheduler.test.js +47 -0
  190. package/dist/tests/unit/api/captchaScheduler.test.js.map +1 -0
  191. package/dist/tests/unit/api/errorHandler.test.d.ts +2 -0
  192. package/dist/tests/unit/api/errorHandler.test.d.ts.map +1 -0
  193. package/dist/tests/unit/api/errorHandler.test.js +65 -0
  194. package/dist/tests/unit/api/errorHandler.test.js.map +1 -0
  195. package/dist/tests/unit/api/errorHandler.unit.test.d.ts +2 -0
  196. package/dist/tests/unit/api/errorHandler.unit.test.d.ts.map +1 -0
  197. package/dist/tests/unit/api/errorHandler.unit.test.js +100 -0
  198. package/dist/tests/unit/api/errorHandler.unit.test.js.map +1 -0
  199. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts +2 -0
  200. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.d.ts.map +1 -0
  201. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js +63 -0
  202. package/dist/tests/unit/schedulers/captchaScheduler.unit.test.js.map +1 -0
  203. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts +2 -0
  204. package/dist/tests/unit/tasks/client/clientTasks.unit.test.d.ts.map +1 -0
  205. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js +172 -0
  206. package/dist/tests/unit/tasks/client/clientTasks.unit.test.js.map +1 -0
  207. package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts +2 -0
  208. package/dist/tests/unit/tasks/dataset/datasetTasks.test.d.ts.map +1 -0
  209. package/dist/tests/unit/tasks/dataset/datasetTasks.test.js +82 -0
  210. package/dist/tests/unit/tasks/dataset/datasetTasks.test.js.map +1 -0
  211. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts +2 -0
  212. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.d.ts.map +1 -0
  213. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js +86 -0
  214. package/dist/tests/unit/tasks/dataset/datasetTasks.unit.test.js.map +1 -0
  215. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts +2 -0
  216. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.d.ts.map +1 -0
  217. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js +75 -0
  218. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.test.js.map +1 -0
  219. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts +2 -0
  220. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.d.ts.map +1 -0
  221. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js +75 -0
  222. package/dist/tests/unit/tasks/dataset/datasetTasksUtils.unit.test.js.map +1 -0
  223. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts +2 -0
  224. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.d.ts.map +1 -0
  225. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js +245 -0
  226. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.test.js.map +1 -0
  227. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts +2 -0
  228. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.d.ts.map +1 -0
  229. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js +266 -0
  230. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasks.unit.test.js.map +1 -0
  231. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts +2 -0
  232. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.d.ts.map +1 -0
  233. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js +45 -0
  234. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.test.js.map +1 -0
  235. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts +2 -0
  236. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.d.ts.map +1 -0
  237. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js +46 -0
  238. package/dist/tests/unit/tasks/imgCaptcha/imgCaptchaTasksUtils.unit.test.js.map +1 -0
  239. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts +2 -0
  240. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.d.ts.map +1 -0
  241. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js +121 -0
  242. package/dist/tests/unit/tasks/powCaptcha/powTasks.test.js.map +1 -0
  243. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts +2 -0
  244. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.d.ts.map +1 -0
  245. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js +209 -0
  246. package/dist/tests/unit/tasks/powCaptcha/powTasks.unit.test.js.map +1 -0
  247. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts +2 -0
  248. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.d.ts.map +1 -0
  249. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js +94 -0
  250. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.test.js.map +1 -0
  251. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts +2 -0
  252. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.d.ts.map +1 -0
  253. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js +65 -0
  254. package/dist/tests/unit/tasks/powCaptcha/powTasksUtils.unit.test.js.map +1 -0
  255. package/dist/tests/util.test.d.ts +2 -0
  256. package/dist/tests/util.test.d.ts.map +1 -0
  257. package/dist/tests/util.test.js +23 -0
  258. package/dist/tests/util.test.js.map +1 -0
  259. package/dist/util.d.ts +6 -0
  260. package/dist/util.d.ts.map +1 -0
  261. package/dist/util.js +34 -0
  262. package/dist/util.js.map +1 -0
  263. package/package.json +14 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solvedTestCaptchas.js","sourceRoot":"","sources":["../../../../src/tests/integration/mocks/solvedTestCaptchas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=powCaptcha.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powCaptcha.integration.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,222 @@
1
+ import { sha256 } from "@noble/hashes/sha256";
2
+ import { u8aToHex } from "@polkadot/util/u8a";
3
+ import { generateMnemonic, getPairAsync } from "@prosopo/contract";
4
+ import { ApiParams, ApiPaths, } from "@prosopo/types";
5
+ import fetch from "node-fetch";
6
+ import { beforeAll, describe, expect, it } from "vitest";
7
+ import { dummyDappAccount, dummyUserAccount, } from "./mocks/solvedTestCaptchas.js";
8
+ import { registerSiteKey } from "./registerSitekey.js";
9
+ const baseUrl = "http://localhost:9229";
10
+ const getPowCaptchaChallengePath = ApiPaths.GetPowCaptchaChallenge;
11
+ const dappAccount = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
12
+ const userAccount = "5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty";
13
+ const bufferToHex = (buffer) => Array.from(buffer)
14
+ .map((byte) => byte.toString(16).padStart(2, "0"))
15
+ .join("");
16
+ const solvePoW = (data, difficulty) => {
17
+ let nonce = 0;
18
+ const prefix = "0".repeat(difficulty);
19
+ while (true) {
20
+ const message = new TextEncoder().encode(nonce + data);
21
+ const hashHex = bufferToHex(sha256(message));
22
+ if (hashHex.startsWith(prefix)) {
23
+ return nonce;
24
+ }
25
+ nonce += 1;
26
+ }
27
+ };
28
+ const failPoW = (data, difficulty) => {
29
+ let nonce = 0;
30
+ const prefix = "0".repeat(difficulty);
31
+ while (true) {
32
+ const message = new TextEncoder().encode(nonce + data);
33
+ const hashHex = bufferToHex(sha256(message));
34
+ if (!hashHex.startsWith(prefix)) {
35
+ return nonce;
36
+ }
37
+ nonce += 1;
38
+ }
39
+ };
40
+ describe("PoW Integration Tests", () => {
41
+ describe("GetPowCaptchaChallenge", () => {
42
+ beforeAll(async () => {
43
+ await registerSiteKey(dappAccount);
44
+ });
45
+ it("should supply a PoW challenge to a Dapp User", async () => {
46
+ const origin = "http://localhost";
47
+ const body = {
48
+ user: userAccount,
49
+ dapp: dappAccount,
50
+ };
51
+ const response = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
52
+ method: "POST",
53
+ headers: {
54
+ Connection: "close",
55
+ "Content-Type": "application/json",
56
+ Origin: origin,
57
+ },
58
+ body: JSON.stringify(body),
59
+ });
60
+ expect(response.status).toBe(200);
61
+ const data = await response.json();
62
+ console.log("\n ---- \n data \n ---- \n", data);
63
+ expect(data).toHaveProperty("challenge");
64
+ expect(data).toHaveProperty("difficulty");
65
+ expect(data).toHaveProperty("signature");
66
+ });
67
+ it("should return an error if origin header is not provided", async () => {
68
+ const response = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
69
+ method: "POST",
70
+ headers: {
71
+ Connection: "close",
72
+ "Content-Type": "application/json",
73
+ },
74
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
75
+ });
76
+ expect(response.status).toBe(400);
77
+ });
78
+ });
79
+ describe("SubmitPowCaptchaSolution", () => {
80
+ it("should verify a correctly completed PoW captcha as true", async () => {
81
+ const userPair = await getPairAsync(dummyUserAccount.seed, undefined, "sr25519", 42);
82
+ const dappPair = await getPairAsync(dummyDappAccount.seed, undefined, "sr25519", 42);
83
+ const dappAccount = dappPair.address;
84
+ await registerSiteKey(dappAccount);
85
+ const origin = "http://localhost";
86
+ const requestBody = {
87
+ user: userPair.address,
88
+ dapp: dappAccount,
89
+ };
90
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
91
+ method: "POST",
92
+ headers: {
93
+ Connection: "close",
94
+ "Content-Type": "application/json",
95
+ Origin: origin,
96
+ },
97
+ body: JSON.stringify(requestBody),
98
+ });
99
+ const challengeBody = (await captchaRes.json());
100
+ const challenge = challengeBody.challenge;
101
+ const difficulty = challengeBody.difficulty;
102
+ const signature = challengeBody.signature;
103
+ const nonce = solvePoW(challenge, difficulty);
104
+ const verifiedTimeout = 120000;
105
+ const submitBody = {
106
+ challenge,
107
+ difficulty,
108
+ signature: {
109
+ [ApiParams.provider]: signature[ApiParams.provider],
110
+ [ApiParams.user]: {
111
+ [ApiParams.timestamp]: u8aToHex(userPair.sign(challengeBody[ApiParams.timestamp].toString())),
112
+ },
113
+ },
114
+ nonce,
115
+ verifiedTimeout,
116
+ user: userPair.address,
117
+ dapp: dappAccount,
118
+ };
119
+ const response = await fetch(`${baseUrl}${ApiPaths.SubmitPowCaptchaSolution}`, {
120
+ method: "POST",
121
+ headers: {
122
+ Connection: "close",
123
+ "Content-Type": "application/json",
124
+ Origin: origin,
125
+ },
126
+ body: JSON.stringify(submitBody),
127
+ });
128
+ expect(response.status).toBe(200);
129
+ const data = (await response.json());
130
+ expect(data).toHaveProperty("verified");
131
+ expect(data.verified).toBe(true);
132
+ });
133
+ it("should return false for incorrectly completed PoW captcha", async () => {
134
+ const userPair = await getPairAsync(dummyUserAccount.seed, undefined, "sr25519", 42);
135
+ const userAccount = userPair.address;
136
+ const origin = "http://localhost";
137
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
138
+ method: "POST",
139
+ headers: {
140
+ Connection: "close",
141
+ "Content-Type": "application/json",
142
+ Origin: origin,
143
+ },
144
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
145
+ });
146
+ const challengeBody = (await captchaRes.json());
147
+ const challenge = challengeBody.challenge;
148
+ const difficulty = challengeBody.difficulty;
149
+ const signature = challengeBody.signature;
150
+ const nonce = failPoW(challenge, difficulty);
151
+ const verifiedTimeout = 120000;
152
+ const dapp = "5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw";
153
+ await registerSiteKey(dapp);
154
+ const body = {
155
+ challenge,
156
+ difficulty,
157
+ [ApiParams.signature]: {
158
+ [ApiParams.provider]: signature[ApiParams.provider],
159
+ [ApiParams.user]: {
160
+ [ApiParams.timestamp]: u8aToHex(userPair.sign(challengeBody[ApiParams.timestamp].toString())),
161
+ },
162
+ },
163
+ nonce,
164
+ verifiedTimeout,
165
+ user: userPair.address,
166
+ dapp,
167
+ };
168
+ const response = await fetch(`${baseUrl}${ApiPaths.SubmitPowCaptchaSolution}`, {
169
+ method: "POST",
170
+ headers: {
171
+ Connection: "close",
172
+ "Content-Type": "application/json",
173
+ },
174
+ body: JSON.stringify(body),
175
+ });
176
+ expect(response.status).toBe(200);
177
+ const data = (await response.json());
178
+ expect(data).toHaveProperty("verified");
179
+ expect(data.verified).toBe(false);
180
+ });
181
+ it("should return an error for an unregistered site key", async () => {
182
+ const [_mnemonic, unregisteredAccount] = await generateMnemonic();
183
+ const userPair = await getPairAsync(dummyUserAccount.seed, undefined, "sr25519", 42);
184
+ const userAccount = userPair.address;
185
+ const origin = "http://localhost";
186
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
187
+ method: "POST",
188
+ headers: {
189
+ Connection: "close",
190
+ "Content-Type": "application/json",
191
+ Origin: origin,
192
+ },
193
+ body: JSON.stringify({
194
+ user: userAccount,
195
+ dapp: unregisteredAccount,
196
+ }),
197
+ });
198
+ const data = (await captchaRes.json());
199
+ expect(data).toHaveProperty("error");
200
+ expect(data.error?.message).toBe("Site key not registered");
201
+ });
202
+ });
203
+ it("should return an error for an invalid site key", async () => {
204
+ const userPair = await getPairAsync(dummyUserAccount.seed, undefined, "sr25519", 42);
205
+ const userAccount = userPair.address;
206
+ const origin = "http://localhost";
207
+ const invalidSiteKey = "junk";
208
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
209
+ method: "POST",
210
+ headers: {
211
+ Connection: "close",
212
+ "Content-Type": "application/json",
213
+ Origin: origin,
214
+ },
215
+ body: JSON.stringify({ user: userAccount, dapp: invalidSiteKey }),
216
+ });
217
+ const challengeBody = (await captchaRes.json());
218
+ expect(challengeBody).toHaveProperty("error");
219
+ expect(challengeBody.error?.message).toBe("Invalid site key");
220
+ });
221
+ });
222
+ //# sourceMappingURL=powCaptcha.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powCaptcha.integration.test.js","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.integration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=powCaptcha.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powCaptcha.test.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import fetch from 'node-fetch';
3
+ import { ApiPaths } from '@prosopo/types';
4
+ import { sha256 } from '@noble/hashes/sha256';
5
+ const baseUrl = 'http://localhost:9229';
6
+ const getPowCaptchaChallengePath = ApiPaths.GetPowCaptchaChallenge;
7
+ const bufferToHex = (buffer) => Array.from(buffer)
8
+ .map((byte) => byte.toString(16).padStart(2, '0'))
9
+ .join('');
10
+ const solvePoW = (data, difficulty) => {
11
+ let nonce = 0;
12
+ const prefix = '0'.repeat(difficulty);
13
+ while (true) {
14
+ const message = new TextEncoder().encode(nonce + data);
15
+ const hashHex = bufferToHex(sha256(message));
16
+ if (hashHex.startsWith(prefix)) {
17
+ return nonce;
18
+ }
19
+ nonce += 1;
20
+ }
21
+ };
22
+ const failPoW = (data, difficulty) => {
23
+ let nonce = 0;
24
+ const prefix = '0'.repeat(difficulty);
25
+ while (true) {
26
+ const message = new TextEncoder().encode(nonce + data);
27
+ const hashHex = bufferToHex(sha256(message));
28
+ if (!hashHex.startsWith(prefix)) {
29
+ return nonce;
30
+ }
31
+ nonce += 1;
32
+ }
33
+ };
34
+ describe('PoW Integration Tests', () => {
35
+ describe('GetPowCaptchaChallenge', () => {
36
+ it('should supply a PoW challenge to a Dapp User', async () => {
37
+ const userAccount = 'userAddress';
38
+ const dappAccount = 'dappAddress';
39
+ const origin = 'http://localhost';
40
+ const response = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
41
+ method: 'POST',
42
+ headers: {
43
+ 'Content-Type': 'application/json',
44
+ Origin: origin,
45
+ },
46
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
47
+ });
48
+ expect(response.status).toBe(200);
49
+ const data = await response.json();
50
+ expect(data).toHaveProperty('challenge');
51
+ expect(data).toHaveProperty('difficulty');
52
+ expect(data).toHaveProperty('signature');
53
+ });
54
+ it('should return an error if origin header is not provided', async () => {
55
+ const userAccount = 'userAddress';
56
+ const dappAccount = 'dappAddress';
57
+ const response = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
58
+ method: 'POST',
59
+ headers: {
60
+ 'Content-Type': 'application/json',
61
+ },
62
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
63
+ });
64
+ expect(response.status).toBe(400);
65
+ });
66
+ });
67
+ describe('SubmitPowCaptchaSolution', () => {
68
+ it('should verify a correctly completed PoW captcha as true', async () => {
69
+ const userAccount = 'userAddress';
70
+ const dappAccount = 'dappAddress';
71
+ const origin = 'http://localhost';
72
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
73
+ method: 'POST',
74
+ headers: {
75
+ 'Content-Type': 'application/json',
76
+ Origin: origin,
77
+ },
78
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
79
+ });
80
+ const challengeBody = (await captchaRes.json());
81
+ const challenge = challengeBody.challenge;
82
+ const difficulty = challengeBody.difficulty;
83
+ const signature = challengeBody.signature;
84
+ const nonce = solvePoW(challenge, difficulty);
85
+ const verifiedTimeout = 120000;
86
+ const user = 'aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx';
87
+ const dapp = '5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw';
88
+ const response = await fetch(`${baseUrl}${ApiPaths.SubmitPowCaptchaSolution}`, {
89
+ method: 'POST',
90
+ headers: {
91
+ 'Content-Type': 'application/json',
92
+ },
93
+ body: JSON.stringify({ challenge, difficulty, signature, nonce, verifiedTimeout, user, dapp }),
94
+ });
95
+ expect(response.status).toBe(200);
96
+ const data = (await response.json());
97
+ expect(data).toHaveProperty('verified');
98
+ expect(data.verified).toBe(true);
99
+ });
100
+ it('should return false for incorrectly completed PoW captcha', async () => {
101
+ const userAccount = 'userAddress';
102
+ const dappAccount = 'dappAddress';
103
+ const origin = 'http://localhost';
104
+ const captchaRes = await fetch(`${baseUrl}${getPowCaptchaChallengePath}`, {
105
+ method: 'POST',
106
+ headers: {
107
+ 'Content-Type': 'application/json',
108
+ Origin: origin,
109
+ },
110
+ body: JSON.stringify({ user: userAccount, dapp: dappAccount }),
111
+ });
112
+ const challengeBody = (await captchaRes.json());
113
+ const challenge = challengeBody.challenge;
114
+ const difficulty = challengeBody.difficulty;
115
+ const signature = challengeBody.signature;
116
+ const nonce = failPoW(challenge, difficulty);
117
+ const verifiedTimeout = 120000;
118
+ const user = 'aZZW9CeVFStJw3si91CXBqaEsGR1sk6h1bBEecJ4EBaSgsx';
119
+ const dapp = '5C7bfXYwachNuvmasEFtWi9BMS41uBvo6KpYHVSQmad4nWzw';
120
+ const response = await fetch(`${baseUrl}${ApiPaths.SubmitPowCaptchaSolution}`, {
121
+ method: 'POST',
122
+ headers: {
123
+ 'Content-Type': 'application/json',
124
+ },
125
+ body: JSON.stringify({ challenge, difficulty, signature, nonce, verifiedTimeout, user, dapp }),
126
+ });
127
+ expect(response.status).toBe(400);
128
+ const data = response.statusText;
129
+ expect(data).toBe('"You answered one or more captchas incorrectly. Please try again"');
130
+ });
131
+ });
132
+ });
133
+ //# sourceMappingURL=powCaptcha.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"powCaptcha.test.js","sourceRoot":"","sources":["../../../src/tests/integration/powCaptcha.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const registerSiteKey: (siteKey: string) => Promise<void>;
2
+ //# sourceMappingURL=registerSitekey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerSitekey.d.ts","sourceRoot":"","sources":["../../../src/tests/integration/registerSitekey.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,eAAe,YAAmB,MAAM,KAAG,OAAO,CAAC,IAAI,CA4BnE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { ProviderDatabase } from "@prosopo/database";
2
+ export const registerSiteKey = async (siteKey) => {
3
+ try {
4
+ const username = process.env.PROSOPO_DATABASE_USERNAME || "root";
5
+ const pw = process.env.PROSOPO_DATABASE_PASSWORD || "root";
6
+ const host = process.env.PROSOPO_DATABASE_HOST || "localhost";
7
+ const port = process.env.PROSOPO_DATABASE_PORT || 27017;
8
+ const db = new ProviderDatabase(`mongodb://${username}:${pw}@${host}:${port}`, process.env.PROSOPO_DATABASE_NAME || "prosopo", process.env.PROSOPO_DATABASE_AUTH_SOURCE || "admin");
9
+ await db.connect();
10
+ console.log("Registering site key", siteKey);
11
+ await db.updateClientRecords([
12
+ {
13
+ account: siteKey,
14
+ settings: {
15
+ captchaType: "pow",
16
+ domains: ["example.com"],
17
+ frictionlessThreshold: 0.5,
18
+ powDifficulty: 4,
19
+ },
20
+ },
21
+ ]);
22
+ await db.connection?.close();
23
+ }
24
+ catch (err) {
25
+ throw new Error(`Failed to register site key: ${err}`);
26
+ }
27
+ };
28
+ //# sourceMappingURL=registerSitekey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerSitekey.js","sourceRoot":"","sources":["../../../src/tests/integration/registerSitekey.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;IACvE,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC;QACjE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC;QAC3D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,WAAW,CAAC;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,KAAK,CAAC;QACxD,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAC9B,aAAa,QAAQ,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,EAAE,EAC7C,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS,EAC9C,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,OAAO,CACnD,CAAC;QACF,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,EAAE,CAAC,mBAAmB,CAAC;YAC5B;gBACC,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE;oBACT,WAAW,EAAE,KAAK;oBAClB,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,qBAAqB,EAAE,GAAG;oBAC1B,aAAa,EAAE,CAAC;iBAChB;aACe;SACjB,CAAC,CAAC;QACH,MAAM,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;AACF,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ViteTestContext } from '@prosopo/env';
2
+ declare module 'vitest' {
3
+ interface TestContext extends ViteTestContext {
4
+ }
5
+ }
6
+ //# sourceMappingURL=tasks.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tasks.test.d.ts","sourceRoot":"","sources":["../../../src/tests/tasks/tasks.test.ts"],"names":[],"mappings":"AAkCA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AA2C9C,OAAO,QAAQ,QAAQ,CAAC;IAEpB,UAAiB,WAAY,SAAQ,eAAe;KAAG;CAC1D"}