@maci-protocol/coordinator 0.0.0-ci.52e6f25 → 0.0.0-ci.53702dc

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 (208) hide show
  1. package/README.md +18 -0
  2. package/build/hardhat.config.cjs +6 -3
  3. package/build/hardhat.config.cjs.map +1 -1
  4. package/build/hardhat.config.d.cts +6 -4
  5. package/build/scripts/generateKeypair.js +2 -2
  6. package/build/scripts/generateKeypair.js.map +1 -1
  7. package/build/tests/constants.d.ts +3 -3
  8. package/build/tests/constants.d.ts.map +1 -1
  9. package/build/tests/constants.js +5 -3
  10. package/build/tests/constants.js.map +1 -1
  11. package/build/tests/e2e.deploy.test.js +45 -53
  12. package/build/tests/e2e.deploy.test.js.map +1 -1
  13. package/build/tests/e2e.redis.test.d.ts +2 -0
  14. package/build/tests/e2e.redis.test.d.ts.map +1 -0
  15. package/build/tests/e2e.redis.test.js +118 -0
  16. package/build/tests/e2e.redis.test.js.map +1 -0
  17. package/build/tests/utils.d.ts +1 -1
  18. package/build/tests/utils.d.ts.map +1 -1
  19. package/build/tests/utils.js +5 -3
  20. package/build/tests/utils.js.map +1 -1
  21. package/build/ts/app.module.d.ts.map +1 -1
  22. package/build/ts/app.module.js +6 -0
  23. package/build/ts/app.module.js.map +1 -1
  24. package/build/ts/common/__tests__/common.test.js +43 -41
  25. package/build/ts/common/__tests__/common.test.js.map +1 -1
  26. package/build/ts/common/accountAbstraction.d.ts +5 -5
  27. package/build/ts/common/accountAbstraction.d.ts.map +1 -1
  28. package/build/ts/common/accountAbstraction.js +11 -9
  29. package/build/ts/common/accountAbstraction.js.map +1 -1
  30. package/build/ts/common/chain.d.ts +12 -6
  31. package/build/ts/common/chain.d.ts.map +1 -1
  32. package/build/ts/common/chain.js +19 -17
  33. package/build/ts/common/chain.js.map +1 -1
  34. package/build/ts/common/coordinatorKeypair.d.ts +7 -0
  35. package/build/ts/common/coordinatorKeypair.d.ts.map +1 -0
  36. package/build/ts/common/coordinatorKeypair.js +14 -0
  37. package/build/ts/common/coordinatorKeypair.js.map +1 -0
  38. package/build/ts/common/errors.d.ts +16 -12
  39. package/build/ts/common/errors.d.ts.map +1 -1
  40. package/build/ts/common/errors.js +16 -12
  41. package/build/ts/common/errors.js.map +1 -1
  42. package/build/ts/common/index.d.ts +0 -1
  43. package/build/ts/common/index.d.ts.map +1 -1
  44. package/build/ts/common/index.js +0 -1
  45. package/build/ts/common/index.js.map +1 -1
  46. package/build/ts/common/networks.d.ts +2 -21
  47. package/build/ts/common/networks.d.ts.map +1 -1
  48. package/build/ts/common/networks.js +39 -48
  49. package/build/ts/common/networks.js.map +1 -1
  50. package/build/ts/deployer/__tests__/deployer.controller.test.js +23 -25
  51. package/build/ts/deployer/__tests__/deployer.controller.test.js.map +1 -1
  52. package/build/ts/deployer/__tests__/deployer.service.test.js +184 -80
  53. package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
  54. package/build/ts/deployer/__tests__/utils.d.ts +10 -14
  55. package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
  56. package/build/ts/deployer/__tests__/utils.js +14 -16
  57. package/build/ts/deployer/__tests__/utils.js.map +1 -1
  58. package/build/ts/deployer/deployer.service.d.ts +17 -8
  59. package/build/ts/deployer/deployer.service.d.ts.map +1 -1
  60. package/build/ts/deployer/deployer.service.js +221 -56
  61. package/build/ts/deployer/deployer.service.js.map +1 -1
  62. package/build/ts/deployer/dto.d.ts +3 -3
  63. package/build/ts/deployer/dto.d.ts.map +1 -1
  64. package/build/ts/deployer/dto.js +5 -5
  65. package/build/ts/deployer/dto.js.map +1 -1
  66. package/build/ts/deployer/types.d.ts +37 -30
  67. package/build/ts/deployer/types.d.ts.map +1 -1
  68. package/build/ts/file/__tests__/file.service.test.js +9 -9
  69. package/build/ts/file/__tests__/file.service.test.js.map +1 -1
  70. package/build/ts/file/file.service.d.ts +2 -2
  71. package/build/ts/file/file.service.d.ts.map +1 -1
  72. package/build/ts/file/file.service.js +9 -8
  73. package/build/ts/file/file.service.js.map +1 -1
  74. package/build/ts/file/types.d.ts +2 -2
  75. package/build/ts/file/types.d.ts.map +1 -1
  76. package/build/ts/health/__tests__/health.controller.test.d.ts +2 -0
  77. package/build/ts/health/__tests__/health.controller.test.d.ts.map +1 -0
  78. package/build/ts/health/__tests__/health.controller.test.js +52 -0
  79. package/build/ts/health/__tests__/health.controller.test.js.map +1 -0
  80. package/build/ts/health/__tests__/health.service.test.d.ts +2 -0
  81. package/build/ts/health/__tests__/health.service.test.d.ts.map +1 -0
  82. package/build/ts/health/__tests__/health.service.test.js +101 -0
  83. package/build/ts/health/__tests__/health.service.test.js.map +1 -0
  84. package/build/ts/health/health.controller.d.ts +16 -0
  85. package/build/ts/health/health.controller.d.ts.map +1 -0
  86. package/build/ts/health/health.controller.js +43 -0
  87. package/build/ts/health/health.controller.js.map +1 -0
  88. package/build/ts/health/health.module.d.ts +3 -0
  89. package/build/ts/health/health.module.d.ts.map +1 -0
  90. package/build/ts/health/health.module.js +22 -0
  91. package/build/ts/health/health.module.js.map +1 -0
  92. package/build/ts/health/health.service.d.ts +42 -0
  93. package/build/ts/health/health.service.d.ts.map +1 -0
  94. package/build/ts/health/health.service.js +176 -0
  95. package/build/ts/health/health.service.js.map +1 -0
  96. package/build/ts/health/types.d.ts +87 -0
  97. package/build/ts/health/types.d.ts.map +1 -0
  98. package/build/ts/health/types.js +2 -0
  99. package/build/ts/health/types.js.map +1 -0
  100. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts +11 -0
  101. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.d.ts.map +1 -0
  102. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js +12 -0
  103. package/build/ts/jest/__mocks__/@openzeppelin/merkle-tree.js.map +1 -0
  104. package/build/ts/proof/__tests__/proof.controller.test.js +3 -5
  105. package/build/ts/proof/__tests__/proof.controller.test.js.map +1 -1
  106. package/build/ts/proof/__tests__/proof.gateway.test.js +2 -4
  107. package/build/ts/proof/__tests__/proof.gateway.test.js.map +1 -1
  108. package/build/ts/proof/__tests__/proof.service.test.js +27 -73
  109. package/build/ts/proof/__tests__/proof.service.test.js.map +1 -1
  110. package/build/ts/proof/dto.d.ts +4 -9
  111. package/build/ts/proof/dto.d.ts.map +1 -1
  112. package/build/ts/proof/dto.js +8 -24
  113. package/build/ts/proof/dto.js.map +1 -1
  114. package/build/ts/proof/proof.controller.d.ts.map +1 -1
  115. package/build/ts/proof/proof.controller.js +1 -4
  116. package/build/ts/proof/proof.controller.js.map +1 -1
  117. package/build/ts/proof/proof.module.d.ts.map +1 -1
  118. package/build/ts/proof/proof.module.js +1 -0
  119. package/build/ts/proof/proof.module.js.map +1 -1
  120. package/build/ts/proof/proof.service.d.ts +2 -4
  121. package/build/ts/proof/proof.service.d.ts.map +1 -1
  122. package/build/ts/proof/proof.service.js +22 -24
  123. package/build/ts/proof/proof.service.js.map +1 -1
  124. package/build/ts/proof/types.d.ts +5 -9
  125. package/build/ts/proof/types.d.ts.map +1 -1
  126. package/build/ts/proof/types.js.map +1 -1
  127. package/build/ts/redis/__tests__/redis.service.test.d.ts +2 -0
  128. package/build/ts/redis/__tests__/redis.service.test.d.ts.map +1 -0
  129. package/build/ts/redis/__tests__/redis.service.test.js +148 -0
  130. package/build/ts/redis/__tests__/redis.service.test.js.map +1 -0
  131. package/build/ts/redis/redis.module.d.ts +3 -0
  132. package/build/ts/redis/redis.module.d.ts.map +1 -0
  133. package/build/ts/redis/redis.module.js +18 -0
  134. package/build/ts/redis/redis.module.js.map +1 -0
  135. package/build/ts/redis/redis.service.d.ts +53 -0
  136. package/build/ts/redis/redis.service.d.ts.map +1 -0
  137. package/build/ts/redis/redis.service.js +99 -0
  138. package/build/ts/redis/redis.service.js.map +1 -0
  139. package/build/ts/redis/types.d.ts +66 -0
  140. package/build/ts/redis/types.d.ts.map +1 -0
  141. package/build/ts/redis/types.js +2 -0
  142. package/build/ts/redis/types.js.map +1 -0
  143. package/build/ts/redis/utils.d.ts +20 -0
  144. package/build/ts/redis/utils.d.ts.map +1 -0
  145. package/build/ts/redis/utils.js +27 -0
  146. package/build/ts/redis/utils.js.map +1 -0
  147. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
  148. package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
  149. package/build/ts/scheduler/__tests__/scheduler.controller.test.js +62 -0
  150. package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
  151. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
  152. package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
  153. package/build/ts/scheduler/__tests__/scheduler.service.test.js +369 -0
  154. package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
  155. package/build/ts/scheduler/dto.d.ts +41 -0
  156. package/build/ts/scheduler/dto.d.ts.map +1 -0
  157. package/build/ts/scheduler/dto.js +115 -0
  158. package/build/ts/scheduler/dto.js.map +1 -0
  159. package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
  160. package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
  161. package/build/ts/scheduler/scheduler.controller.js +111 -0
  162. package/build/ts/scheduler/scheduler.controller.js.map +1 -0
  163. package/build/ts/scheduler/scheduler.module.d.ts +3 -0
  164. package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
  165. package/build/ts/scheduler/scheduler.module.js +24 -0
  166. package/build/ts/scheduler/scheduler.module.js.map +1 -0
  167. package/build/ts/scheduler/scheduler.service.d.ts +71 -0
  168. package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
  169. package/build/ts/scheduler/scheduler.service.js +297 -0
  170. package/build/ts/scheduler/scheduler.service.js.map +1 -0
  171. package/build/ts/scheduler/types.d.ts +65 -0
  172. package/build/ts/scheduler/types.d.ts.map +1 -0
  173. package/build/ts/scheduler/types.js +2 -0
  174. package/build/ts/scheduler/types.js.map +1 -0
  175. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js +2 -2
  176. package/build/ts/sessionKeys/__tests__/sessionKeys.controller.test.js.map +1 -1
  177. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js +34 -19
  178. package/build/ts/sessionKeys/__tests__/sessionKeys.service.test.js.map +1 -1
  179. package/build/ts/sessionKeys/__tests__/utils.d.ts +1 -1
  180. package/build/ts/sessionKeys/__tests__/utils.d.ts.map +1 -1
  181. package/build/ts/sessionKeys/__tests__/utils.js +7 -6
  182. package/build/ts/sessionKeys/__tests__/utils.js.map +1 -1
  183. package/build/ts/sessionKeys/sessionKeys.service.d.ts +4 -3
  184. package/build/ts/sessionKeys/sessionKeys.service.d.ts.map +1 -1
  185. package/build/ts/sessionKeys/sessionKeys.service.js +1 -2
  186. package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
  187. package/build/ts/subgraph/__tests__/subgraph.controller.test.js +2 -2
  188. package/build/ts/subgraph/__tests__/subgraph.controller.test.js.map +1 -1
  189. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js +2 -2
  190. package/build/ts/subgraph/__tests__/subgraph.gateway.test.js.map +1 -1
  191. package/build/ts/subgraph/__tests__/subgraph.service.test.js +5 -5
  192. package/build/ts/subgraph/__tests__/subgraph.service.test.js.map +1 -1
  193. package/build/ts/subgraph/dto.d.ts +2 -2
  194. package/build/ts/subgraph/dto.d.ts.map +1 -1
  195. package/build/ts/subgraph/dto.js +3 -3
  196. package/build/ts/subgraph/dto.js.map +1 -1
  197. package/build/ts/subgraph/subgraph.service.d.ts +4 -0
  198. package/build/ts/subgraph/subgraph.service.d.ts.map +1 -1
  199. package/build/ts/subgraph/subgraph.service.js +23 -10
  200. package/build/ts/subgraph/subgraph.service.js.map +1 -1
  201. package/build/ts/subgraph/types.d.ts +2 -2
  202. package/build/ts/subgraph/types.d.ts.map +1 -1
  203. package/build/tsconfig.build.tsbuildinfo +1 -1
  204. package/package.json +41 -34
  205. package/build/tests/e2e.aa.test.d.ts +0 -2
  206. package/build/tests/e2e.aa.test.d.ts.map +0 -1
  207. package/build/tests/e2e.aa.test.js +0 -98
  208. package/build/tests/e2e.aa.test.js.map +0 -1
package/README.md CHANGED
@@ -47,3 +47,21 @@ After deployment, subgraph url will be available in studio dashboard and you can
47
47
  ```
48
48
  https://api.studio.thegraph.com/.../{SUBGRAPH_NAME}/version/latest
49
49
  ```
50
+
51
+ ## Docker
52
+
53
+ Remember to run it from the monorepo root directory.
54
+
55
+ ```bash
56
+ # Build docker
57
+ docker compose -f apps/coordinator/docker-compose.yml build
58
+
59
+ # Run container detached
60
+ docker compose -f apps/coordinator/docker-compose.yml up -d
61
+
62
+ # Enter the container
63
+ docker compose -f apps/coordinator/docker-compose.yml exec coordinator-service /bin/sh
64
+
65
+ # Stop container
66
+ docker compose -f apps/coordinator/docker-compose.yml down
67
+ ```
@@ -7,9 +7,9 @@ dotenv.config();
7
7
  const parentDir = __dirname.includes("build") ? ".." : "";
8
8
  const TEST_MNEMONIC = "test test test test test test test test test test test junk";
9
9
  module.exports = {
10
- defaultNetwork: "sepolia",
10
+ defaultNetwork: "localhost",
11
11
  networks: {
12
- sepolia: {
12
+ localhost: {
13
13
  url: process.env.COORDINATOR_RPC_URL || "http://localhost:8545",
14
14
  accounts: {
15
15
  mnemonic: TEST_MNEMONIC,
@@ -17,10 +17,13 @@ module.exports = {
17
17
  initialIndex: 0,
18
18
  count: 20,
19
19
  },
20
- loggingEnabled: false,
21
20
  },
22
21
  hardhat: {
23
22
  loggingEnabled: false,
23
+ mining: {
24
+ auto: true,
25
+ interval: 200,
26
+ },
24
27
  },
25
28
  },
26
29
  solidity: {
@@ -1 +1 @@
1
- {"version":3,"file":"hardhat.config.cjs","sourceRoot":"","sources":["../hardhat.config.cjs"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,MAAM,aAAa,GAAG,6DAA6D,CAAC;AAEpF,MAAM,CAAC,OAAO,GAAG;IACf,cAAc,EAAE,SAAS;IACzB,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB;YAC/D,QAAQ,EAAE;gBACR,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,EAAE;aACV;YACD,cAAc,EAAE,KAAK;SACtB;QACD,OAAO,EAAE;YACP,cAAc,EAAE,KAAK;SACtB;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,CACnB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;QACD,SAAS,EAAE,IAAI,CAAC,OAAO,CACrB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"hardhat.config.cjs","sourceRoot":"","sources":["../hardhat.config.cjs"],"names":[],"mappings":";AAAA,uDAAuD;AACvD,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC1D,MAAM,aAAa,GAAG,6DAA6D,CAAC;AAEpF,MAAM,CAAC,OAAO,GAAG;IACf,cAAc,EAAE,WAAW;IAC3B,QAAQ,EAAE;QACR,SAAS,EAAE;YACT,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,uBAAuB;YAC/D,QAAQ,EAAE;gBACR,QAAQ,EAAE,aAAa;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,YAAY,EAAE,CAAC;gBACf,KAAK,EAAE,EAAE;aACV;SACF;QACD,OAAO,EAAE;YACP,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE;gBACN,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,GAAG;aACd;SACF;KACF;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;KAClB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,IAAI,CAAC,OAAO,CACnB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;QACD,SAAS,EAAE,IAAI,CAAC,OAAO,CACrB,SAAS,EACT,SAAS,EACT,mFAAmF,CACpF;KACF;CACF,CAAC"}
@@ -1,7 +1,7 @@
1
1
  declare const TEST_MNEMONIC: "test test test test test test test test test test test junk";
2
2
  export let defaultNetwork: string;
3
3
  export namespace networks {
4
- namespace sepolia {
4
+ namespace localhost {
5
5
  let url: string;
6
6
  namespace accounts {
7
7
  export { TEST_MNEMONIC as mnemonic };
@@ -9,11 +9,13 @@ export namespace networks {
9
9
  export let initialIndex: number;
10
10
  export let count: number;
11
11
  }
12
- let loggingEnabled: boolean;
13
12
  }
14
13
  namespace hardhat {
15
- let loggingEnabled_1: boolean;
16
- export { loggingEnabled_1 as loggingEnabled };
14
+ let loggingEnabled: boolean;
15
+ namespace mining {
16
+ let auto: boolean;
17
+ let interval: number;
18
+ }
17
19
  }
18
20
  }
19
21
  export namespace solidity {
@@ -17,8 +17,8 @@ export async function generateRsaKeypair() {
17
17
  const publicKey = keypair.publicKey.export({ type: "pkcs1", format: "pem" });
18
18
  const privateKey = keypair.privateKey.export({ type: "pkcs1", format: "pem" });
19
19
  await Promise.all([
20
- fs.promises.writeFile(path.resolve(process.env.COORDINATOR_PUBLIC_KEY_PATH), publicKey),
21
- fs.promises.writeFile(path.resolve(process.env.COORDINATOR_PRIVATE_KEY_PATH), privateKey),
20
+ fs.promises.writeFile(path.resolve(process.env.COORDINATOR_PUBLIC_KEY_PATH || "./public.key"), publicKey),
21
+ fs.promises.writeFile(path.resolve(process.env.COORDINATOR_PRIVATE_KEY_PATH || "./private.key"), privateKey),
22
22
  ]);
23
23
  }
24
24
  generateRsaKeypair();
@@ -1 +1 @@
1
- {"version":3,"file":"generateKeypair.js","sourceRoot":"","sources":["../../scripts/generateKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,yCAAyC;AACzC,iDAAiD;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,wCAAwC;AACxC,gDAAgD;AAEhD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1G,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE;QACzC,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/E,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,EAAE,SAAS,CAAC;QACxF,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA6B,CAAC,EAAE,UAAU,CAAC;KAC3F,CAAC,CAAC;AACL,CAAC;AAED,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"generateKeypair.js","sourceRoot":"","sources":["../../scripts/generateKeypair.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,yCAAyC;AACzC,iDAAiD;AACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,wCAAwC;AACxC,gDAAgD;AAEhD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1G,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE;QACzC,aAAa,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE/E,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,cAAc,CAAC,EAAE,SAAS,CAAC;QACzG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,eAAe,CAAC,EAAE,UAAU,CAAC;KAC7G,CAAC,CAAC;AACL,CAAC;AAED,kBAAkB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
- export declare const pollJoiningTestZkeyPath = "./zkeys/PollJoining_10_test/PollJoining_10_test.0.zkey";
2
- export declare const testPollJoiningWasmPath = "./zkeys/PollJoining_10_test/PollJoining_10_test_js/PollJoining_10_test.wasm";
3
- export declare const testPollJoiningWitnessPath = "./zkeys/PollJoining_10_test/PollJoining_10_test_cpp/PollJoining_10_test";
1
+ export declare const pollJoiningTestZkeyPath: string;
2
+ export declare const testPollJoiningWasmPath: string;
3
+ export declare const testPollJoiningWitnessPath: string;
4
4
  export declare const testRapidsnarkPath: string;
5
5
  export declare const zeroUint256Encoded: string;
6
6
  export declare const oneUint256Encoded: string;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,2DAA2D,CAAC;AAChG,eAAO,MAAM,uBAAuB,gFAAgF,CAAC;AACrH,eAAO,MAAM,0BAA0B,4EAA4E,CAAC;AACpH,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAEzE,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AACtF,eAAO,MAAM,iBAAiB,QAAsD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,uBAAuB,QAA+E,CAAC;AACpH,eAAO,MAAM,uBAAuB,QAGnC,CAAC;AACF,eAAO,MAAM,0BAA0B,QAGtC,CAAC;AACF,eAAO,MAAM,kBAAkB,QAAyC,CAAC;AAEzE,eAAO,MAAM,kBAAkB,QAAsD,CAAC;AACtF,eAAO,MAAM,iBAAiB,QAAsD,CAAC"}
@@ -1,8 +1,10 @@
1
1
  import { AbiCoder } from "ethers";
2
2
  import { homedir } from "os";
3
- export const pollJoiningTestZkeyPath = "./zkeys/PollJoining_10_test/PollJoining_10_test.0.zkey";
4
- export const testPollJoiningWasmPath = "./zkeys/PollJoining_10_test/PollJoining_10_test_js/PollJoining_10_test.wasm";
5
- export const testPollJoiningWitnessPath = "./zkeys/PollJoining_10_test/PollJoining_10_test_cpp/PollJoining_10_test";
3
+ import path from "path";
4
+ const root = path.resolve(__dirname, "../../..");
5
+ export const pollJoiningTestZkeyPath = path.resolve(root, "./zkeys/PollJoining_10_test/PollJoining_10_test.0.zkey");
6
+ export const testPollJoiningWasmPath = path.resolve(root, "./zkeys/PollJoining_10_test/PollJoining_10_test_js/PollJoining_10_test.wasm");
7
+ export const testPollJoiningWitnessPath = path.resolve(root, "./zkeys/PollJoining_10_test/PollJoining_10_test_cpp/PollJoining_10_test");
6
8
  export const testRapidsnarkPath = `${homedir()}/rapidsnark/build/prover`;
7
9
  export const zeroUint256Encoded = AbiCoder.defaultAbiCoder().encode(["uint256"], [0]);
8
10
  export const oneUint256Encoded = AbiCoder.defaultAbiCoder().encode(["uint256"], [1]);
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,CAAC,MAAM,uBAAuB,GAAG,wDAAwD,CAAC;AAChG,MAAM,CAAC,MAAM,uBAAuB,GAAG,6EAA6E,CAAC;AACrH,MAAM,CAAC,MAAM,0BAA0B,GAAG,yEAAyE,CAAC;AACpH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,OAAO,EAAE,0BAA0B,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../tests/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,wDAAwD,CAAC,CAAC;AACpH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC,OAAO,CACjD,IAAI,EACJ,6EAA6E,CAC9E,CAAC;AACF,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC,OAAO,CACpD,IAAI,EACJ,yEAAyE,CAC1E,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,OAAO,EAAE,0BAA0B,CAAC;AAEzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACtF,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Keypair } from "@maci-protocol/domainobjs";
2
- import { ContractStorage, joinPoll, signup, sleep } from "@maci-protocol/sdk";
2
+ import { isArm, joinPoll, signup, sleepUntil, ESupportedChains, ContractStorage } from "@maci-protocol/sdk";
3
3
  import { ValidationPipe } from "@nestjs/common";
4
4
  import { Test } from "@nestjs/testing";
5
5
  import dotenv from "dotenv";
@@ -7,20 +7,19 @@ import { io } from "socket.io-client";
7
7
  import { zeroAddress } from "viem";
8
8
  import path from "path";
9
9
  import { AppModule } from "../ts/app.module";
10
- import { ESupportedNetworks, getSigner } from "../ts/common";
11
- import { getPublicClient } from "../ts/common/accountAbstraction";
12
- import { coordinatorMACIKeypair, pollStartDateExtraSeconds, testMaciDeploymentConfig, testPollDeploymentConfig, } from "../ts/deployer/__tests__/utils";
10
+ import { getSigner } from "../ts/common";
11
+ import { pollDuration, pollStartDateExtraSeconds, testMaciDeploymentConfig, testPollDeploymentConfig, } from "../ts/deployer/__tests__/utils";
13
12
  import { DeployerModule } from "../ts/deployer/deployer.module";
14
13
  import { FileModule } from "../ts/file/file.module";
15
14
  import { ProofModule } from "../ts/proof/proof.module";
16
- import { getKernelAccount } from "../ts/sessionKeys/__tests__/utils";
17
15
  import { SessionKeysModule } from "../ts/sessionKeys/sessionKeys.module";
18
16
  import { pollJoiningTestZkeyPath, testPollJoiningWasmPath, testPollJoiningWitnessPath, testRapidsnarkPath, zeroUint256Encoded, } from "./constants";
19
- import { encryptWithCoordinatorRSAPublicKey, getAuthorizationHeader, rechargeGasIfNeeded } from "./utils";
17
+ import { getAuthorizationHeader } from "./utils";
20
18
  dotenv.config();
21
19
  jest.setTimeout(700000); // Sets timeout to 700 seconds
22
- const TEST_URL = "http://localhost:3000/v1";
23
- const CHAIN = ESupportedNetworks.OPTIMISM_SEPOLIA;
20
+ const PORT = process.env.COORDINATOR_PORT || 3000;
21
+ const TEST_URL = `http://localhost:${PORT}/v1`;
22
+ const CHAIN = ESupportedChains.Localhost;
24
23
  const REGEX_SUBGRAPH = /^https:\/\/api\.studio\.thegraph\.com\/query\/\d+\/maci-subgraph\/v0\.0\.\d+$/;
25
24
  const NUM_USERS = 1;
26
25
  const VOTE_OPTIONS = {
@@ -30,29 +29,23 @@ const VOTE_OPTIONS = {
30
29
  describe("E2E Deployment Tests", () => {
31
30
  let signer;
32
31
  let encryptedHeader;
33
- let sessionKeyAddress;
34
32
  let app;
35
33
  let socket;
36
- const publicClient = getPublicClient(CHAIN);
37
34
  let maciAddress;
35
+ let maciCreatedAt;
38
36
  let pollId;
39
- const pollDuration = 60;
40
37
  // set up coordinator address
41
38
  beforeAll(async () => {
42
- signer = getSigner(CHAIN);
39
+ signer = await getSigner(CHAIN);
43
40
  encryptedHeader = await getAuthorizationHeader(signer);
44
41
  process.env.COORDINATOR_ADDRESSES = await signer.getAddress();
45
- await rechargeGasIfNeeded(process.env.COORDINATOR_ADDRESSES, "0.007", "0.007");
46
- });
47
- // set up NestJS app
48
- beforeAll(async () => {
49
42
  const moduleFixture = await Test.createTestingModule({
50
43
  imports: [AppModule, FileModule, DeployerModule, ProofModule, SessionKeysModule],
51
44
  }).compile();
52
45
  app = moduleFixture.createNestApplication();
53
46
  app.useGlobalPipes(new ValidationPipe({ transform: true }));
54
47
  await app.init();
55
- await app.listen(3000);
48
+ await app.listen(PORT);
56
49
  });
57
50
  afterAll(async () => {
58
51
  await app.close();
@@ -78,7 +71,14 @@ describe("E2E Deployment Tests", () => {
78
71
  afterEach(() => {
79
72
  socket.disconnect();
80
73
  });
81
- // run tests
74
+ test("should return true in the health check", async () => {
75
+ const response = await fetch(`${TEST_URL}/health/check`, { method: "GET" });
76
+ const body = (await response.json());
77
+ expect(response.status).toBe(200);
78
+ expect(body.rapidsnark.rapidsnarkIsExecutable).toBe(true);
79
+ expect(body.zkeysDirectory.zkeysDirectoryExists).toBe(true);
80
+ expect(body.coordinatorWalletFunds.fundsInNetworks[0].address).not.toBe(zeroAddress);
81
+ });
82
82
  test("should retrieve RSA public key", async () => {
83
83
  const response = await fetch(`${TEST_URL}/proof/publicKey`, {
84
84
  method: "GET",
@@ -86,7 +86,6 @@ describe("E2E Deployment Tests", () => {
86
86
  const body = (await response.json());
87
87
  expect(response.status).toBe(200);
88
88
  expect(body.publicKey).toBeDefined();
89
- // this RSA should be used in the encrypted auth header and the encrypted coordinator maci private key
90
89
  });
91
90
  test("should retrieve the session key address", async () => {
92
91
  const response = await fetch(`${TEST_URL}/session-keys/generate`, {
@@ -98,20 +97,8 @@ describe("E2E Deployment Tests", () => {
98
97
  const body = (await response.json());
99
98
  expect(response.status).toBe(200);
100
99
  expect(body.sessionKeyAddress).not.toBe(zeroAddress);
101
- // save them for next tests
102
- sessionKeyAddress = body.sessionKeyAddress;
103
- const sessionKeyAccount = await getKernelAccount(sessionKeyAddress);
104
- await rechargeGasIfNeeded(sessionKeyAccount.address, "0.03", "0.03");
105
100
  });
106
101
  test("should deploy MACI correctly", async () => {
107
- const config = testMaciDeploymentConfig;
108
- config.VerifyingKeysRegistry.args.stateTreeDepth = config.VerifyingKeysRegistry.args.stateTreeDepth.toString();
109
- config.VerifyingKeysRegistry.args.pollStateTreeDepth =
110
- config.VerifyingKeysRegistry.args.pollStateTreeDepth.toString();
111
- config.VerifyingKeysRegistry.args.tallyProcessingStateTreeDepth =
112
- config.VerifyingKeysRegistry.args.tallyProcessingStateTreeDepth.toString();
113
- config.VerifyingKeysRegistry.args.voteOptionTreeDepth =
114
- config.VerifyingKeysRegistry.args.voteOptionTreeDepth.toString();
115
102
  const response = await fetch(`${TEST_URL}/deploy/maci`, {
116
103
  method: "POST",
117
104
  headers: {
@@ -120,21 +107,22 @@ describe("E2E Deployment Tests", () => {
120
107
  },
121
108
  body: JSON.stringify({
122
109
  chain: CHAIN,
123
- config,
110
+ config: testMaciDeploymentConfig,
124
111
  }),
125
112
  });
126
113
  const body = (await response.json());
127
114
  expect(response.status).toBe(201);
128
115
  expect(body.address).not.toBe(zeroAddress);
129
116
  // save them for next tests
117
+ const blockNumber = await signer.provider.getBlockNumber();
118
+ maciCreatedAt = BigInt(blockNumber);
130
119
  maciAddress = body.address;
131
120
  });
132
121
  test("should deploy a poll correctly", async () => {
133
- const config = testPollDeploymentConfig;
134
- config.voteOptions = config.voteOptions.toString();
122
+ testPollDeploymentConfig.voteOptions = testPollDeploymentConfig.voteOptions.toString();
135
123
  const startDate = Math.floor(Date.now() / 1000) + pollStartDateExtraSeconds;
136
- config.startDate = startDate;
137
- config.endDate = startDate + pollDuration;
124
+ testPollDeploymentConfig.startDate = startDate;
125
+ testPollDeploymentConfig.endDate = startDate + pollDuration;
138
126
  const response = await fetch(`${TEST_URL}/deploy/poll`, {
139
127
  method: "POST",
140
128
  headers: {
@@ -143,7 +131,7 @@ describe("E2E Deployment Tests", () => {
143
131
  },
144
132
  body: JSON.stringify({
145
133
  chain: CHAIN,
146
- config,
134
+ config: testPollDeploymentConfig,
147
135
  }),
148
136
  });
149
137
  const body = (await response.json());
@@ -153,7 +141,7 @@ describe("E2E Deployment Tests", () => {
153
141
  pollId = BigInt(body.pollId);
154
142
  });
155
143
  test("should allow voting on a poll", async () => {
156
- await sleep(pollStartDateExtraSeconds * 1000);
144
+ await sleepUntil(testPollDeploymentConfig.startDate * 1000);
157
145
  for (let i = 0; i < NUM_USERS; i += 1) {
158
146
  const keypairUser = new Keypair();
159
147
  const userPublicKey = keypairUser.publicKey.serialize();
@@ -173,12 +161,11 @@ describe("E2E Deployment Tests", () => {
173
161
  await joinPoll({
174
162
  maciAddress,
175
163
  privateKey: userPrivateKey,
176
- stateIndex: 1n,
177
164
  pollId: BigInt(pollId),
178
165
  pollJoiningZkey: pollJoiningTestZkeyPath,
179
166
  useWasm: true,
180
167
  pollWasm: testPollJoiningWasmPath,
181
- pollWitgen: testPollJoiningWitnessPath,
168
+ pollWitnessGenerator: testPollJoiningWitnessPath,
182
169
  rapidsnark: testRapidsnarkPath,
183
170
  sgDataArg: zeroUint256Encoded,
184
171
  ivcpDataArg: zeroUint256Encoded,
@@ -187,7 +174,6 @@ describe("E2E Deployment Tests", () => {
187
174
  }
188
175
  });
189
176
  test("should deploy a subgraph correctly", async () => {
190
- const blockNumber = await publicClient.getBlockNumber();
191
177
  const response = await fetch(`${TEST_URL}/subgraph/deploy`, {
192
178
  method: "POST",
193
179
  headers: {
@@ -196,20 +182,28 @@ describe("E2E Deployment Tests", () => {
196
182
  },
197
183
  body: JSON.stringify({
198
184
  maciContractAddress: maciAddress,
199
- startBlock: Number(blockNumber),
200
- network: CHAIN,
185
+ startBlock: Number(maciCreatedAt),
186
+ network: ESupportedChains.OptimismSepolia,
201
187
  name: process.env.SUBGRAPH_NAME,
202
- tag: `v0.0.${blockNumber}`, // different versions per test using block number
188
+ tag: `v0.0.${maciCreatedAt}`, // different versions per test using block number
203
189
  }),
204
190
  });
205
- const body = (await response.json());
191
+ const body = await response.json();
192
+ if (response.status === 400) {
193
+ const errorMessage = body.message;
194
+ if (errorMessage.includes("api.thegraph.com | 502: Bad gateway")) {
195
+ // eslint-disable-next-line no-console
196
+ console.info("It looks like there was a problem with The Graph endpoint. We are passing this test.");
197
+ return;
198
+ }
199
+ }
206
200
  const { url } = body;
207
201
  expect(response.status).toBe(201);
208
- expect(body.url).toBeDefined();
202
+ expect(url).toBeDefined();
209
203
  expect(REGEX_SUBGRAPH.test(url)).toBe(true);
210
204
  });
211
205
  test("should merge correctly", async () => {
212
- await sleep(pollDuration * 2000);
206
+ await sleepUntil((testPollDeploymentConfig.endDate + 5) * 1000); // 5 seconds of grace time after the poll end date
213
207
  const response = await fetch(`${TEST_URL}/proof/merge`, {
214
208
  method: "POST",
215
209
  headers: {
@@ -225,8 +219,7 @@ describe("E2E Deployment Tests", () => {
225
219
  expect(response.status).toBe(201);
226
220
  });
227
221
  test("should generate proofs correctly", async () => {
228
- const blockNumber = await publicClient.getBlockNumber();
229
- const encryptedCoordinatorPrivateKey = await encryptWithCoordinatorRSAPublicKey(coordinatorMACIKeypair.privateKey.serialize());
222
+ const useWasm = isArm(); // Use WASM on ARM devices, otherwise use rapidsnark
230
223
  const response = await fetch(`${TEST_URL}/proof/generate`, {
231
224
  method: "POST",
232
225
  headers: {
@@ -237,11 +230,10 @@ describe("E2E Deployment Tests", () => {
237
230
  poll: Number(pollId),
238
231
  maciContractAddress: maciAddress,
239
232
  mode: testPollDeploymentConfig.mode,
240
- encryptedCoordinatorPrivateKey,
241
- startBlock: Number(blockNumber) - 100,
242
- endBlock: Number(blockNumber) + 100,
243
- blocksPerBatch: 20,
233
+ startBlock: Number(maciCreatedAt),
234
+ blocksPerBatch: 500,
244
235
  chain: CHAIN,
236
+ useWasm,
245
237
  }),
246
238
  });
247
239
  const body = (await response.json());
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.deploy.test.js","sourceRoot":"","sources":["../../tests/e2e.deploy.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=e2e.redis.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.redis.test.d.ts","sourceRoot":"","sources":["../../tests/e2e.redis.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { EMode, ESupportedChains } from "@maci-protocol/sdk";
2
+ import { createClient } from "@redis/client";
3
+ import dotenv from "dotenv";
4
+ import { RedisService } from "../ts/redis/redis.service";
5
+ import { getPollKeyFromObject } from "../ts/redis/utils";
6
+ const REDIS__GET_ALL_PREFIX = "*-test";
7
+ const scheduledPoll = {
8
+ maciAddress: "0xb83074Ac11fc569AC12F1b7D0C0a6809c3dc355b",
9
+ pollId: "5",
10
+ mode: EMode.NON_QV,
11
+ chain: ESupportedChains.Sepolia,
12
+ endDate: 1752534000,
13
+ deploymentBlockNumber: 1,
14
+ merged: false,
15
+ proofsGenerated: false,
16
+ };
17
+ dotenv.config();
18
+ describe("RedisService", () => {
19
+ let redisClient;
20
+ let service;
21
+ beforeAll(async () => {
22
+ redisClient = createClient({
23
+ url: `redis://${process.env.COORDINATOR_REDIS_HOST}:${process.env.COORDINATOR_REDIS_PORT}`,
24
+ disableOfflineQueue: true,
25
+ });
26
+ await redisClient.connect();
27
+ service = new RedisService();
28
+ await service.onModuleInit();
29
+ });
30
+ afterEach(async () => {
31
+ // Clean up after each test
32
+ const keys = await redisClient.keys(REDIS__GET_ALL_PREFIX);
33
+ await Promise.all(keys.map((key) => redisClient.del(key)));
34
+ });
35
+ afterAll(async () => {
36
+ await redisClient.quit();
37
+ });
38
+ test("should connect to Redis without issues", () => {
39
+ expect(service.isOpen()).toBe(true);
40
+ });
41
+ test("should set and get a value, and parse it as IScheduledPoll", async () => {
42
+ const key = getPollKeyFromObject(scheduledPoll, true);
43
+ const value = JSON.stringify(scheduledPoll);
44
+ await service.set(key, value);
45
+ const stored = await service.get(key);
46
+ expect(stored).not.toBeNull();
47
+ const parsed = JSON.parse(stored);
48
+ expect(parsed).toEqual(scheduledPoll);
49
+ });
50
+ test("should return null when non-existent key is requested", async () => {
51
+ const nonExistentKey = "non-existent-key";
52
+ const result = await service.get(nonExistentKey);
53
+ expect(result).toBeNull();
54
+ });
55
+ test("should set and get multiple values", async () => {
56
+ const pollOne = { ...scheduledPoll };
57
+ pollOne.pollId = "1";
58
+ const pollKeyOne = getPollKeyFromObject(pollOne, true);
59
+ await service.set(pollKeyOne, JSON.stringify(pollOne));
60
+ const pollTwo = { ...scheduledPoll };
61
+ pollTwo.pollId = "2";
62
+ const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
63
+ await service.set(pollKeyTwo, JSON.stringify(pollTwo));
64
+ const pollThree = { ...scheduledPoll };
65
+ pollThree.pollId = "3";
66
+ const pollKeyThree = getPollKeyFromObject(pollThree, true);
67
+ await service.set(pollKeyThree, JSON.stringify(pollThree));
68
+ const [storedPollOne, storedPollTwo, storedPollThree] = await Promise.all([
69
+ service.get(pollKeyOne),
70
+ service.get(pollKeyTwo),
71
+ service.get(pollKeyThree),
72
+ ]);
73
+ expect(pollOne).toEqual(JSON.parse(storedPollOne || "{}"));
74
+ expect(pollTwo).toEqual(JSON.parse(storedPollTwo || "{}"));
75
+ expect(pollThree).toEqual(JSON.parse(storedPollThree || "{}"));
76
+ });
77
+ test("should retrieve all values using getAll", async () => {
78
+ const pollOne = { ...scheduledPoll };
79
+ pollOne.pollId = "1";
80
+ const pollKeyOne = getPollKeyFromObject(pollOne, true);
81
+ await service.set(pollKeyOne, JSON.stringify(pollOne));
82
+ const pollTwo = { ...scheduledPoll };
83
+ pollTwo.pollId = "2";
84
+ const pollKeyTwo = getPollKeyFromObject(pollTwo, true);
85
+ await service.set(pollKeyTwo, JSON.stringify(pollTwo));
86
+ const pollThree = { ...scheduledPoll };
87
+ pollThree.pollId = "3";
88
+ const pollKeyThree = getPollKeyFromObject(pollThree, true);
89
+ await service.set(pollKeyThree, JSON.stringify(pollThree));
90
+ const all = await service.getAll(REDIS__GET_ALL_PREFIX);
91
+ expect(all.length).toBe(3);
92
+ });
93
+ test("should delete a value and return one as confirmation", async () => {
94
+ const key = "delete-me";
95
+ await service.set(key, '{"bye":"now"}');
96
+ const deleted = await service.delete(key);
97
+ const value = await service.get(key);
98
+ expect(deleted).toBe(1);
99
+ expect(value).toBeNull();
100
+ });
101
+ test("should not throw and return zero when deleting non-existent value", async () => {
102
+ const key = "non-existent-key";
103
+ const deleted = await service.delete(key);
104
+ expect(deleted).toBe(0);
105
+ });
106
+ test("should update a value using set with same key", async () => {
107
+ const key = getPollKeyFromObject(scheduledPoll, true);
108
+ const valuePoll = JSON.stringify(scheduledPoll);
109
+ await service.set(key, valuePoll);
110
+ const updatedPoll = { ...scheduledPoll, endDate: 1 };
111
+ const updatedPollValue = JSON.stringify(updatedPoll);
112
+ await service.set(key, updatedPollValue);
113
+ const stored = await service.get(key);
114
+ const parsed = JSON.parse(stored);
115
+ expect(parsed.endDate).toBe(updatedPoll.endDate);
116
+ });
117
+ });
118
+ //# sourceMappingURL=e2e.redis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2e.redis.test.js","sourceRoot":"","sources":["../../tests/e2e.redis.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Signer } from "ethers";
2
- import { Hex } from "viem";
2
+ import { type Hex } from "viem";
3
3
  /**
4
4
  * Encrypt a message using the coordinator's public key
5
5
  * @param message to encrypt
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,GAAG,EAAoB,MAAM,MAAM,CAAC;AAY9E;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAK3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAgBd,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAmC,KAAK,GAAG,EAAoB,MAAM,MAAM,CAAC;AAYnF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,GAAU,SAAS,MAAM,KAAG,OAAO,CAAC,MAAM,CAIxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAK3E,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,GAAG,EACZ,qBAAqB,MAAM,EAC3B,oBAAoB,MAAM,KACzB,OAAO,CAAC,IAAI,CAoBd,CAAC"}
@@ -1,11 +1,12 @@
1
+ import { ESupportedChains } from "@maci-protocol/sdk";
1
2
  import dotenv from "dotenv";
2
3
  import { getBytes, hashMessage } from "ethers";
3
4
  import { createWalletClient, formatEther, http, parseEther } from "viem";
4
5
  import { privateKeyToAccount } from "viem/accounts";
5
6
  import { optimismSepolia } from "viem/chains";
6
7
  import fs from "fs";
7
- import { ESupportedNetworks } from "../ts/common";
8
8
  import { getPublicClient } from "../ts/common/accountAbstraction";
9
+ import { getWallet } from "../ts/common/chain";
9
10
  import { CryptoService } from "../ts/crypto/crypto.service";
10
11
  dotenv.config();
11
12
  /**
@@ -34,11 +35,12 @@ export const getAuthorizationHeader = async (signer) => {
34
35
  * @param sessionKeyAddress
35
36
  */
36
37
  export const rechargeGasIfNeeded = async (address, minimumValueOfEther, valueToSendOfEther) => {
37
- const publicClient = getPublicClient(ESupportedNetworks.OPTIMISM_SEPOLIA);
38
+ const publicClient = await getPublicClient(ESupportedChains.Localhost);
38
39
  const balance = await publicClient.getBalance({ address });
39
40
  const balanceAsEther = formatEther(balance);
40
41
  if (balanceAsEther <= minimumValueOfEther) {
41
- const testAccount = privateKeyToAccount(process.env.TEST_PRIVATE_KEY);
42
+ const wallet = getWallet();
43
+ const testAccount = privateKeyToAccount(wallet.privateKey);
42
44
  const walletClient = createWalletClient({
43
45
  chain: optimismSepolia,
44
46
  transport: http(),
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAO,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAC3F,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,CAAC;IACvF,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAC9E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACrF,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAY,EACZ,mBAA2B,EAC3B,kBAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAC1E,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAwB,CAAC,CAAC;QAC9E,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../tests/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAe,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAY,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,KAAK,EAAE,OAAe,EAAmB,EAAE;IAC3F,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA4B,CAAC,CAAC;IACvF,OAAO,aAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,MAAc,EAAmB,EAAE;IAC9E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,kCAAkC,CAAC,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC,CAAC;IACrF,OAAO,UAAU,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EACtC,OAAY,EACZ,mBAA2B,EAC3B,kBAA0B,EACX,EAAE;IACjB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,cAAc,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAiB,CAAC,CAAC;QAElE,MAAM,YAAY,GAAG,kBAAkB,CAAC;YACtC,KAAK,EAAE,eAAe;YACtB,SAAS,EAAE,IAAI,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,YAAY,CAAC,eAAe,CAAC;YACjC,OAAO,EAAE,WAAW;YACpB,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,UAAU,CAAC,kBAAkB,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}