@maci-protocol/coordinator 0.0.0-ci.153b117 → 0.0.0-ci.17c3dcd
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/build/tests/e2e.redis.test.js +12 -7
- package/build/tests/e2e.redis.test.js.map +1 -1
- package/build/ts/app.module.d.ts.map +1 -1
- package/build/ts/app.module.js +2 -0
- package/build/ts/app.module.js.map +1 -1
- package/build/ts/common/errors.d.ts +15 -11
- package/build/ts/common/errors.d.ts.map +1 -1
- package/build/ts/common/errors.js +15 -11
- package/build/ts/common/errors.js.map +1 -1
- package/build/ts/deployer/__tests__/deployer.service.test.js +18 -4
- package/build/ts/deployer/__tests__/deployer.service.test.js.map +1 -1
- package/build/ts/deployer/__tests__/utils.d.ts.map +1 -1
- package/build/ts/deployer/__tests__/utils.js +2 -1
- package/build/ts/deployer/__tests__/utils.js.map +1 -1
- package/build/ts/deployer/deployer.service.d.ts +13 -2
- package/build/ts/deployer/deployer.service.d.ts.map +1 -1
- package/build/ts/deployer/deployer.service.js +34 -5
- package/build/ts/deployer/deployer.service.js.map +1 -1
- package/build/ts/deployer/types.d.ts +2 -1
- package/build/ts/deployer/types.d.ts.map +1 -1
- package/build/ts/file/file.service.d.ts.map +1 -1
- package/build/ts/file/file.service.js +2 -1
- package/build/ts/file/file.service.js.map +1 -1
- package/build/ts/redis/__tests__/redis.service.test.js +24 -3
- package/build/ts/redis/__tests__/redis.service.test.js.map +1 -1
- package/build/ts/redis/types.d.ts +17 -20
- package/build/ts/redis/types.d.ts.map +1 -1
- package/build/ts/redis/utils.d.ts +2 -2
- package/build/ts/redis/utils.d.ts.map +1 -1
- package/build/ts/redis/utils.js +4 -1
- package/build/ts/redis/utils.js.map +1 -1
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js +63 -0
- package/build/ts/scheduler/__tests__/scheduler.controller.test.js.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts +2 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.d.ts.map +1 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js +264 -0
- package/build/ts/scheduler/__tests__/scheduler.service.test.js.map +1 -0
- package/build/ts/scheduler/dto.d.ts +42 -0
- package/build/ts/scheduler/dto.d.ts.map +1 -0
- package/build/ts/scheduler/dto.js +116 -0
- package/build/ts/scheduler/dto.js.map +1 -0
- package/build/ts/scheduler/scheduler.controller.d.ts +32 -0
- package/build/ts/scheduler/scheduler.controller.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.controller.js +111 -0
- package/build/ts/scheduler/scheduler.controller.js.map +1 -0
- package/build/ts/scheduler/scheduler.module.d.ts +3 -0
- package/build/ts/scheduler/scheduler.module.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.module.js +23 -0
- package/build/ts/scheduler/scheduler.module.js.map +1 -0
- package/build/ts/scheduler/scheduler.service.d.ts +63 -0
- package/build/ts/scheduler/scheduler.service.d.ts.map +1 -0
- package/build/ts/scheduler/scheduler.service.js +239 -0
- package/build/ts/scheduler/scheduler.service.js.map +1 -0
- package/build/ts/scheduler/types.d.ts +61 -0
- package/build/ts/scheduler/types.d.ts.map +1 -0
- package/build/ts/scheduler/types.js +2 -0
- package/build/ts/scheduler/types.js.map +1 -0
- package/build/ts/sessionKeys/sessionKeys.service.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +18 -17
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EMode } from "@maci-protocol/sdk";
|
|
1
2
|
import { createClient } from "@redis/client";
|
|
2
3
|
import { ESupportedNetworks } from "../../common";
|
|
3
4
|
import { RedisService } from "../redis.service";
|
|
@@ -6,9 +7,10 @@ const REDIS__GET_ALL_PREFIX = "*-test";
|
|
|
6
7
|
const scheduledPoll = {
|
|
7
8
|
maciAddress: "0xb83074Ac11fc569AC12F1b7D0C0a6809c3dc355b",
|
|
8
9
|
pollId: "5",
|
|
9
|
-
mode:
|
|
10
|
+
mode: EMode.NON_QV,
|
|
10
11
|
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
11
12
|
endDate: 1752534000,
|
|
13
|
+
deploymentBlockNumber: 1,
|
|
12
14
|
merged: false,
|
|
13
15
|
proofsGenerated: false,
|
|
14
16
|
};
|
|
@@ -116,9 +118,28 @@ describe("RedisService", () => {
|
|
|
116
118
|
const deleted = await service.delete(key);
|
|
117
119
|
expect(deleted).toBe(0);
|
|
118
120
|
});
|
|
121
|
+
it("should update a value using set with same key", async () => {
|
|
122
|
+
const key = getPollKeyFromObject(scheduledPoll, true);
|
|
123
|
+
const valuePoll = JSON.stringify(scheduledPoll);
|
|
124
|
+
await service.set(key, valuePoll);
|
|
125
|
+
const updatedPoll = { ...scheduledPoll, endDate: 1 };
|
|
126
|
+
const updatedPollValue = JSON.stringify(updatedPoll);
|
|
127
|
+
await service.set(key, updatedPollValue);
|
|
128
|
+
mockRedisClient.get.mockResolvedValueOnce(updatedPollValue);
|
|
129
|
+
const stored = await service.get(key);
|
|
130
|
+
const parsed = JSON.parse(stored);
|
|
131
|
+
expect(parsed.endDate).toBe(updatedPoll.endDate);
|
|
132
|
+
});
|
|
119
133
|
it("should return production key name when test is not specified", () => {
|
|
120
|
-
const
|
|
121
|
-
|
|
134
|
+
const originalEnv = process.env.NODE_ENV;
|
|
135
|
+
process.env.NODE_ENV = "production";
|
|
136
|
+
try {
|
|
137
|
+
const key = getPollKeyFromObject(scheduledPoll, false);
|
|
138
|
+
expect(key).toBe(`${scheduledPoll.chain}-${scheduledPoll.maciAddress}-poll-${scheduledPoll.pollId}`);
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
process.env.NODE_ENV = originalEnv;
|
|
142
|
+
}
|
|
122
143
|
});
|
|
123
144
|
it("should return test key name when test is specified", () => {
|
|
124
145
|
const key = getPollKeyFromObject(scheduledPoll, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redis.service.test.js","sourceRoot":"","sources":["../../../../ts/redis/__tests__/redis.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkC,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,qBAAqB,GAAG,QAAQ,CAAC;AAEvC,MAAM,aAAa,GAAmB;IACpC,WAAW,EAAE,4CAA4C;IACzD,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"redis.service.test.js","sourceRoot":"","sources":["../../../../ts/redis/__tests__/redis.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { ESupportedNetworks } from "../common";
|
|
2
2
|
import type { EMode } from "@maci-protocol/sdk";
|
|
3
3
|
/**
|
|
4
|
-
* Interface
|
|
4
|
+
* Interface of the minimal properties to identify a scheduled poll
|
|
5
5
|
*/
|
|
6
|
-
export interface
|
|
6
|
+
export interface IIdentityScheduledPoll {
|
|
7
7
|
/**
|
|
8
8
|
* Maci contract address
|
|
9
9
|
*/
|
|
@@ -12,16 +12,25 @@ export interface IScheduledPoll {
|
|
|
12
12
|
* Poll id (unique identifier)
|
|
13
13
|
*/
|
|
14
14
|
pollId: string;
|
|
15
|
-
/**
|
|
16
|
-
* Voting mode
|
|
17
|
-
*/
|
|
18
|
-
mode: EMode;
|
|
19
15
|
/**
|
|
20
16
|
* Chain in which the poll is deployed
|
|
21
17
|
*/
|
|
22
18
|
chain: ESupportedNetworks;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Interface for scheduled polls stored in Redis
|
|
22
|
+
*/
|
|
23
|
+
export interface IScheduledPoll extends IIdentityScheduledPoll {
|
|
23
24
|
/**
|
|
24
|
-
*
|
|
25
|
+
* Deployment block number
|
|
26
|
+
*/
|
|
27
|
+
deploymentBlockNumber: number;
|
|
28
|
+
/**
|
|
29
|
+
* Voting mode
|
|
30
|
+
*/
|
|
31
|
+
mode: EMode;
|
|
32
|
+
/**
|
|
33
|
+
* End date in seconds
|
|
25
34
|
*/
|
|
26
35
|
endDate: number;
|
|
27
36
|
/**
|
|
@@ -36,19 +45,7 @@ export interface IScheduledPoll {
|
|
|
36
45
|
/**
|
|
37
46
|
* getPollKeyForRedis parameters
|
|
38
47
|
*/
|
|
39
|
-
export interface IGetPollKeyForRedisParams {
|
|
40
|
-
/**
|
|
41
|
-
* Chain in which the poll is deployed
|
|
42
|
-
*/
|
|
43
|
-
chain: ESupportedNetworks;
|
|
44
|
-
/**
|
|
45
|
-
* Maci contract address
|
|
46
|
-
*/
|
|
47
|
-
maciAddress: string;
|
|
48
|
-
/**
|
|
49
|
-
* Poll id (unique identifier)
|
|
50
|
-
*/
|
|
51
|
-
pollId: string;
|
|
48
|
+
export interface IGetPollKeyForRedisParams extends IIdentityScheduledPoll {
|
|
52
49
|
/**
|
|
53
50
|
* Test environment flag (optional)
|
|
54
51
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/redis/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../ts/redis/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,sBAAsB;IAC5D;;OAEG;IACH,qBAAqB,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,IAAI,EAAE,KAAK,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,sBAAsB;IACvE;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { IGetPollKeyForRedisParams,
|
|
1
|
+
import type { IGetPollKeyForRedisParams, IIdentityScheduledPoll } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Generates a Redis key for a poll based on its attributes
|
|
4
4
|
*
|
|
@@ -16,5 +16,5 @@ export declare const getPollKeyForRedis: ({ chain, maciAddress, pollId, test }:
|
|
|
16
16
|
* @param test - Optional flag to indicate if this is a test environment
|
|
17
17
|
* @returns key for Redis
|
|
18
18
|
*/
|
|
19
|
-
export declare const getPollKeyFromObject: (scheduledPoll:
|
|
19
|
+
export declare const getPollKeyFromObject: (scheduledPoll: IIdentityScheduledPoll, test?: boolean) => string;
|
|
20
20
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjF;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,GAAI,sCAA8C,yBAAyB,KAAG,MAG5G,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,eAAe,sBAAsB,EAAE,OAAO,OAAO,KAAG,MAMzF,CAAC"}
|
package/build/ts/redis/utils.js
CHANGED
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
* @param test - Optional flag to indicate if this is a test environment
|
|
8
8
|
* @returns key for Redis
|
|
9
9
|
*/
|
|
10
|
-
export const getPollKeyForRedis = ({ chain, maciAddress, pollId, test = false }) =>
|
|
10
|
+
export const getPollKeyForRedis = ({ chain, maciAddress, pollId, test = false }) => {
|
|
11
|
+
const isTest = test || process.env.NODE_ENV === "test";
|
|
12
|
+
return `${chain}-${maciAddress}-poll-${pollId}${isTest ? `-test` : ""}`;
|
|
13
|
+
};
|
|
11
14
|
/**
|
|
12
15
|
* Generates a Redis key for a poll object
|
|
13
16
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAA6B,EAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../ts/redis/utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAA6B,EAAU,EAAE;IACpH,MAAM,MAAM,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC;IACvD,OAAO,GAAG,KAAK,IAAI,WAAW,SAAS,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAC1E,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,aAAqC,EAAE,IAAc,EAAU,EAAE,CACpG,kBAAkB,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC,KAAK;IAC1B,WAAW,EAAE,aAAa,CAAC,WAAW;IACtC,MAAM,EAAE,aAAa,CAAC,MAAM;IAC5B,IAAI;CACL,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.controller.test.d.ts","sourceRoot":"","sources":["../../../../ts/scheduler/__tests__/scheduler.controller.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { EMode } from "@maci-protocol/sdk";
|
|
2
|
+
import { HttpException, HttpStatus } from "@nestjs/common";
|
|
3
|
+
import { ESupportedNetworks } from "../../common";
|
|
4
|
+
import { SchedulerController } from "../scheduler.controller";
|
|
5
|
+
const scheduledPoll = {
|
|
6
|
+
maciAddress: "0x0",
|
|
7
|
+
pollId: 5,
|
|
8
|
+
mode: EMode.NON_QV,
|
|
9
|
+
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
10
|
+
deploymentBlockNumber: 1,
|
|
11
|
+
};
|
|
12
|
+
const identityScheduledPoll = {
|
|
13
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
14
|
+
pollId: scheduledPoll.pollId,
|
|
15
|
+
chain: scheduledPoll.chain,
|
|
16
|
+
};
|
|
17
|
+
describe("SchedulerController", () => {
|
|
18
|
+
let service;
|
|
19
|
+
let controller;
|
|
20
|
+
beforeEach(() => {
|
|
21
|
+
service = {
|
|
22
|
+
registerPoll: jest.fn().mockResolvedValue({ isScheduled: true }),
|
|
23
|
+
isPollScheduled: jest.fn().mockResolvedValue({ isScheduled: true }),
|
|
24
|
+
deleteScheduledPoll: jest.fn().mockResolvedValue({ isScheduled: false }),
|
|
25
|
+
};
|
|
26
|
+
controller = new SchedulerController(service);
|
|
27
|
+
});
|
|
28
|
+
describe("register", () => {
|
|
29
|
+
it("should register a poll for finalization", async () => {
|
|
30
|
+
const { isScheduled } = await controller.register(scheduledPoll);
|
|
31
|
+
expect(isScheduled).toBe(true);
|
|
32
|
+
});
|
|
33
|
+
it("should throw an error if registration fails", async () => {
|
|
34
|
+
const errorMessage = "Registration failed";
|
|
35
|
+
service.registerPoll.mockRejectedValueOnce(new Error(errorMessage));
|
|
36
|
+
await expect(controller.register(scheduledPoll)).rejects.toThrow(new HttpException(errorMessage, HttpStatus.BAD_REQUEST));
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
describe("status", () => {
|
|
40
|
+
it("should return scheduled poll status", async () => {
|
|
41
|
+
const { isScheduled } = await controller.status(identityScheduledPoll);
|
|
42
|
+
expect(isScheduled).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
it("should throw an error if checking status fails", async () => {
|
|
45
|
+
const errorMessage = "checking status failed";
|
|
46
|
+
service.isPollScheduled.mockRejectedValueOnce(new Error(errorMessage));
|
|
47
|
+
await expect(controller.status(scheduledPoll)).rejects.toThrow(new HttpException(errorMessage, HttpStatus.BAD_REQUEST));
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe("delete", () => {
|
|
51
|
+
it("should delete a scheduled poll", async () => {
|
|
52
|
+
await controller.register(scheduledPoll);
|
|
53
|
+
const { isScheduled } = await controller.delete(identityScheduledPoll);
|
|
54
|
+
expect(isScheduled).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
it("should throw an error if checking status fails", async () => {
|
|
57
|
+
const errorMessage = "Delete failed";
|
|
58
|
+
service.deleteScheduledPoll.mockRejectedValueOnce(new Error(errorMessage));
|
|
59
|
+
await expect(controller.delete(scheduledPoll)).rejects.toThrow(new HttpException(errorMessage, HttpStatus.BAD_REQUEST));
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
//# sourceMappingURL=scheduler.controller.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.controller.test.js","sourceRoot":"","sources":["../../../../ts/scheduler/__tests__/scheduler.controller.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.service.test.d.ts","sourceRoot":"","sources":["../../../../ts/scheduler/__tests__/scheduler.service.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import { EMode, getPoll, isTallied } from "@maci-protocol/sdk";
|
|
2
|
+
import { SchedulerRegistry } from "@nestjs/schedule";
|
|
3
|
+
import { ErrorCodes, ESupportedNetworks } from "../../common";
|
|
4
|
+
import { FileService } from "../../file/file.service";
|
|
5
|
+
import { getPollKeyFromObject } from "../../redis/utils";
|
|
6
|
+
import { SessionKeysService } from "../../sessionKeys/sessionKeys.service";
|
|
7
|
+
import { SchedulerService } from "../scheduler.service";
|
|
8
|
+
const scheduledPoll = {
|
|
9
|
+
maciAddress: "0x0",
|
|
10
|
+
pollId: "5",
|
|
11
|
+
mode: EMode.NON_QV,
|
|
12
|
+
chain: ESupportedNetworks.OPTIMISM_SEPOLIA,
|
|
13
|
+
endDate: 1752534000,
|
|
14
|
+
deploymentBlockNumber: 1,
|
|
15
|
+
merged: false,
|
|
16
|
+
proofsGenerated: false,
|
|
17
|
+
};
|
|
18
|
+
jest.mock("@maci-protocol/sdk", () => ({
|
|
19
|
+
...jest.requireActual("@maci-protocol/sdk"),
|
|
20
|
+
getPoll: jest.fn().mockResolvedValue({
|
|
21
|
+
address: "0x123",
|
|
22
|
+
endDate: 1752534000,
|
|
23
|
+
isMerged: false,
|
|
24
|
+
}),
|
|
25
|
+
isTallied: jest.fn().mockResolvedValue(false),
|
|
26
|
+
}));
|
|
27
|
+
describe("SchedulerService", () => {
|
|
28
|
+
let fileService;
|
|
29
|
+
let sessionKeysService;
|
|
30
|
+
let redisService;
|
|
31
|
+
let schedulerRegistry;
|
|
32
|
+
let service;
|
|
33
|
+
beforeAll(async () => {
|
|
34
|
+
fileService = new FileService();
|
|
35
|
+
sessionKeysService = new SessionKeysService(fileService);
|
|
36
|
+
// Mock RedisService methods as needed
|
|
37
|
+
redisService = {
|
|
38
|
+
get: jest.fn().mockResolvedValue(JSON.stringify(scheduledPoll)),
|
|
39
|
+
set: jest.fn(),
|
|
40
|
+
delete: jest.fn(),
|
|
41
|
+
getAll: jest.fn().mockResolvedValue([]),
|
|
42
|
+
};
|
|
43
|
+
schedulerRegistry = new SchedulerRegistry();
|
|
44
|
+
service = new SchedulerService(sessionKeysService, redisService, schedulerRegistry);
|
|
45
|
+
await service.onModuleInit();
|
|
46
|
+
});
|
|
47
|
+
afterAll(() => {
|
|
48
|
+
jest.clearAllMocks();
|
|
49
|
+
});
|
|
50
|
+
afterEach(() => {
|
|
51
|
+
jest.clearAllMocks();
|
|
52
|
+
const timeouts = schedulerRegistry.getTimeouts();
|
|
53
|
+
// Clear all timeouts in the mock scheduler registry
|
|
54
|
+
timeouts.forEach((timeout) => {
|
|
55
|
+
if (timeout.includes("-test")) {
|
|
56
|
+
schedulerRegistry.deleteTimeout(timeout);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe(`isPollScheduled`, () => {
|
|
61
|
+
it("should return true if poll is saved, scheduled and not tallied", async () => {
|
|
62
|
+
await service.registerPoll(scheduledPoll);
|
|
63
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
64
|
+
expect(isPollScheduled.isScheduled).toBe(true);
|
|
65
|
+
});
|
|
66
|
+
it("should return false if poll is not saved", async () => {
|
|
67
|
+
redisService.get.mockResolvedValueOnce(null);
|
|
68
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
69
|
+
expect(isPollScheduled.isScheduled).toBe(false);
|
|
70
|
+
});
|
|
71
|
+
it("should return false if poll is saved and timeout not scheduled", async () => {
|
|
72
|
+
await service.registerPoll(scheduledPoll);
|
|
73
|
+
schedulerRegistry.deleteTimeout(getPollKeyFromObject(scheduledPoll));
|
|
74
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
75
|
+
expect(isPollScheduled.isScheduled).toBe(false);
|
|
76
|
+
});
|
|
77
|
+
it("should return false if poll is scheduled but not saved", async () => {
|
|
78
|
+
redisService.get.mockResolvedValueOnce(null);
|
|
79
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
80
|
+
expect(isPollScheduled.isScheduled).toBe(false);
|
|
81
|
+
});
|
|
82
|
+
it("should throw an error if poll is already tallied", async () => {
|
|
83
|
+
await service.registerPoll(scheduledPoll);
|
|
84
|
+
getPoll.mockResolvedValueOnce({
|
|
85
|
+
isMerged: true,
|
|
86
|
+
});
|
|
87
|
+
isTallied.mockResolvedValueOnce(true);
|
|
88
|
+
await expect(service.isPollScheduled(scheduledPoll)).rejects.toThrow(ErrorCodes.POLL_ALREADY_TALLIED.toString());
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
describe("getPollFinalizationData", () => {
|
|
92
|
+
it("should return the end date and tallied status of a poll", async () => {
|
|
93
|
+
getPoll.mockResolvedValueOnce({
|
|
94
|
+
isMerged: false,
|
|
95
|
+
endDate: scheduledPoll.endDate,
|
|
96
|
+
});
|
|
97
|
+
isTallied.mockResolvedValueOnce(false);
|
|
98
|
+
const { endDate, isPollTallied } = await service.getPollFinalizationData({
|
|
99
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
100
|
+
pollId: scheduledPoll.pollId,
|
|
101
|
+
chain: scheduledPoll.chain,
|
|
102
|
+
});
|
|
103
|
+
expect(endDate).toBe(scheduledPoll.endDate);
|
|
104
|
+
expect(isPollTallied).toBe(false);
|
|
105
|
+
});
|
|
106
|
+
it("should return isPollTallied as false if poll is not merged and is not tallied", async () => {
|
|
107
|
+
getPoll.mockResolvedValueOnce({
|
|
108
|
+
isMerged: false,
|
|
109
|
+
});
|
|
110
|
+
isTallied.mockResolvedValueOnce(false);
|
|
111
|
+
const { isPollTallied } = await service.getPollFinalizationData({
|
|
112
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
113
|
+
pollId: scheduledPoll.pollId,
|
|
114
|
+
chain: scheduledPoll.chain,
|
|
115
|
+
});
|
|
116
|
+
expect(isPollTallied).toBe(false);
|
|
117
|
+
});
|
|
118
|
+
it("should return isPollTallied as false if poll is merged and is not tallied", async () => {
|
|
119
|
+
getPoll.mockResolvedValueOnce({
|
|
120
|
+
isMerged: true,
|
|
121
|
+
});
|
|
122
|
+
isTallied.mockResolvedValueOnce(false);
|
|
123
|
+
const { isPollTallied } = await service.getPollFinalizationData({
|
|
124
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
125
|
+
pollId: scheduledPoll.pollId,
|
|
126
|
+
chain: scheduledPoll.chain,
|
|
127
|
+
});
|
|
128
|
+
expect(isPollTallied).toBe(false);
|
|
129
|
+
});
|
|
130
|
+
it("should return isPollTallied as false if poll is not merged and is tallied (it is impossible)", async () => {
|
|
131
|
+
getPoll.mockResolvedValueOnce({
|
|
132
|
+
isMerged: false,
|
|
133
|
+
});
|
|
134
|
+
isTallied.mockResolvedValueOnce(true);
|
|
135
|
+
const { isPollTallied } = await service.getPollFinalizationData({
|
|
136
|
+
maciAddress: scheduledPoll.maciAddress,
|
|
137
|
+
pollId: scheduledPoll.pollId,
|
|
138
|
+
chain: scheduledPoll.chain,
|
|
139
|
+
});
|
|
140
|
+
expect(isPollTallied).toBe(false);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
describe("registerPoll", () => {
|
|
144
|
+
it("should register a poll for finalization", async () => {
|
|
145
|
+
const { isScheduled } = await service.registerPoll(scheduledPoll);
|
|
146
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
147
|
+
const isPollTimeoutScheduled = schedulerRegistry.doesExist("timeout", getPollKeyFromObject(scheduledPoll));
|
|
148
|
+
expect(isScheduled).toBe(true);
|
|
149
|
+
expect(isPollScheduled.isScheduled).toBe(true);
|
|
150
|
+
expect(isPollTimeoutScheduled).toBe(true);
|
|
151
|
+
});
|
|
152
|
+
it("should register 2 polls and schedule their finalization", async () => {
|
|
153
|
+
const pollOne = { ...scheduledPoll, pollId: "1" };
|
|
154
|
+
const pollTwo = { ...scheduledPoll, pollId: "2" };
|
|
155
|
+
const { isScheduled: isScheduledOne } = await service.registerPoll(pollOne);
|
|
156
|
+
const { isScheduled: isScheduledTwo } = await service.registerPoll(pollTwo);
|
|
157
|
+
const [isPollScheduledOne, isPollScheduledTwo] = await Promise.all([
|
|
158
|
+
service.isPollScheduled(pollOne),
|
|
159
|
+
service.isPollScheduled(pollTwo),
|
|
160
|
+
]);
|
|
161
|
+
const isPollOneTimeoutScheduled = schedulerRegistry.doesExist("timeout", getPollKeyFromObject(pollOne));
|
|
162
|
+
const isPollTwoTimeoutScheduled = schedulerRegistry.doesExist("timeout", getPollKeyFromObject(pollTwo));
|
|
163
|
+
expect(isScheduledOne).toBe(true);
|
|
164
|
+
expect(isScheduledTwo).toBe(true);
|
|
165
|
+
expect(isPollScheduledOne.isScheduled).toBe(true);
|
|
166
|
+
expect(isPollScheduledTwo.isScheduled).toBe(true);
|
|
167
|
+
expect(isPollOneTimeoutScheduled).toBe(true);
|
|
168
|
+
expect(isPollTwoTimeoutScheduled).toBe(true);
|
|
169
|
+
});
|
|
170
|
+
it("should schedule finalization after the poll has ended", async () => {
|
|
171
|
+
const endedPoll = { ...scheduledPoll, endDate: 1 };
|
|
172
|
+
const { isScheduled } = await service.registerPoll(endedPoll);
|
|
173
|
+
const isPollScheduled = await service.isPollScheduled(endedPoll);
|
|
174
|
+
const isPollTimeoutScheduled = schedulerRegistry.doesExist("timeout", getPollKeyFromObject(endedPoll));
|
|
175
|
+
expect(isScheduled).toBe(true);
|
|
176
|
+
expect(isPollScheduled.isScheduled).toBe(true);
|
|
177
|
+
expect(isPollTimeoutScheduled).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
it("should throw an error if poll is already tallied", async () => {
|
|
180
|
+
getPoll.mockResolvedValueOnce({
|
|
181
|
+
isMerged: true,
|
|
182
|
+
});
|
|
183
|
+
isTallied.mockResolvedValueOnce(true);
|
|
184
|
+
await expect(service.registerPoll(scheduledPoll)).rejects.toThrow(ErrorCodes.POLL_ALREADY_TALLIED.toString());
|
|
185
|
+
});
|
|
186
|
+
it("should throw an error if poll is already scheduled", async () => {
|
|
187
|
+
await service.registerPoll(scheduledPoll);
|
|
188
|
+
await expect(service.registerPoll(scheduledPoll)).rejects.toThrow(ErrorCodes.POLL_ALREADY_SCHEDULED.toString());
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
describe("deleteScheduledPoll", () => {
|
|
192
|
+
it("should delete a scheduled poll", async () => {
|
|
193
|
+
await service.registerPoll(scheduledPoll);
|
|
194
|
+
const isPollScheduled = await service.isPollScheduled(scheduledPoll);
|
|
195
|
+
const { isScheduled } = await service.deleteScheduledPoll(scheduledPoll);
|
|
196
|
+
const isPollDeleted = await service.isPollScheduled(scheduledPoll);
|
|
197
|
+
expect(isPollScheduled.isScheduled).toBe(true);
|
|
198
|
+
expect(isScheduled).toBe(false);
|
|
199
|
+
expect(isPollDeleted.isScheduled).toBe(false);
|
|
200
|
+
});
|
|
201
|
+
it("should return isPollScheduled as false if poll was not scheduled", async () => {
|
|
202
|
+
const { isScheduled } = await service.deleteScheduledPoll(scheduledPoll);
|
|
203
|
+
expect(isScheduled).toBe(false);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
describe("restoreTimeouts", () => {
|
|
207
|
+
const polls = [
|
|
208
|
+
{ ...scheduledPoll, pollId: "1" },
|
|
209
|
+
{ ...scheduledPoll, pollId: "2" },
|
|
210
|
+
{ ...scheduledPoll, pollId: "3" },
|
|
211
|
+
];
|
|
212
|
+
beforeEach(async () => {
|
|
213
|
+
await Promise.all([
|
|
214
|
+
service.registerPoll(polls[0]),
|
|
215
|
+
service.registerPoll(polls[1]),
|
|
216
|
+
service.registerPoll(polls[2]),
|
|
217
|
+
]);
|
|
218
|
+
schedulerRegistry.deleteTimeout(getPollKeyFromObject(polls[0]));
|
|
219
|
+
schedulerRegistry.deleteTimeout(getPollKeyFromObject(polls[1]));
|
|
220
|
+
schedulerRegistry.deleteTimeout(getPollKeyFromObject(polls[2]));
|
|
221
|
+
redisService.getAll.mockResolvedValue(polls.map((poll) => getPollKeyFromObject(poll)));
|
|
222
|
+
redisService.get.mockImplementation((key) => {
|
|
223
|
+
const poll = polls.find((p) => getPollKeyFromObject(p) === key);
|
|
224
|
+
const result = poll ? JSON.stringify(poll) : null;
|
|
225
|
+
return Promise.resolve(result);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
afterEach(() => {
|
|
229
|
+
jest.clearAllMocks();
|
|
230
|
+
getPoll.mockReset().mockResolvedValue({
|
|
231
|
+
address: "0x123",
|
|
232
|
+
endDate: 1752534000,
|
|
233
|
+
isMerged: false,
|
|
234
|
+
});
|
|
235
|
+
isTallied.mockReset().mockResolvedValue(false);
|
|
236
|
+
});
|
|
237
|
+
it("should restore scheduled polls from Redis", async () => {
|
|
238
|
+
await service.onModuleInit();
|
|
239
|
+
const timeouts = schedulerRegistry.getTimeouts();
|
|
240
|
+
timeouts.forEach((timeout, i) => {
|
|
241
|
+
expect(timeout).toBe(getPollKeyFromObject(polls[i]));
|
|
242
|
+
});
|
|
243
|
+
expect(timeouts.length).toBe(polls.length);
|
|
244
|
+
});
|
|
245
|
+
it("should not restore timeouts for tallied polls", async () => {
|
|
246
|
+
getPoll.mockImplementation(({ pollId }) => Promise.resolve({ isMerged: pollId === 2n }));
|
|
247
|
+
isTallied.mockImplementation(({ pollId }) => Promise.resolve(pollId === "2"));
|
|
248
|
+
await service.onModuleInit();
|
|
249
|
+
const timeouts = schedulerRegistry.getTimeouts();
|
|
250
|
+
expect(timeouts.length).toBe(polls.length - 1);
|
|
251
|
+
});
|
|
252
|
+
it("should not throw if Redis returns null for a key and should delete register", async () => {
|
|
253
|
+
redisService.get.mockImplementation((key) => {
|
|
254
|
+
const poll = polls.find((p) => getPollKeyFromObject(p) === key && key !== getPollKeyFromObject(polls[1])); // null to simulate missing poll 2 key
|
|
255
|
+
const result = poll ? JSON.stringify(poll) : null;
|
|
256
|
+
return Promise.resolve(result);
|
|
257
|
+
});
|
|
258
|
+
await service.onModuleInit();
|
|
259
|
+
const timeouts = schedulerRegistry.getTimeouts();
|
|
260
|
+
expect(timeouts.length).toBe(polls.length - 1);
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
//# sourceMappingURL=scheduler.service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.service.test.js","sourceRoot":"","sources":["../../../../ts/scheduler/__tests__/scheduler.service.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { EMode } from "@maci-protocol/sdk";
|
|
2
|
+
import type { Hex } from "viem";
|
|
3
|
+
import { ESupportedNetworks } from "../common";
|
|
4
|
+
/**
|
|
5
|
+
* Data transfer object for scheduled poll
|
|
6
|
+
*/
|
|
7
|
+
export declare class IdentityScheduledPollDto {
|
|
8
|
+
/**
|
|
9
|
+
* MACI contract address
|
|
10
|
+
*/
|
|
11
|
+
maciAddress: Hex;
|
|
12
|
+
/**
|
|
13
|
+
* Poll id
|
|
14
|
+
*/
|
|
15
|
+
pollId: number;
|
|
16
|
+
/**
|
|
17
|
+
* Chain Name
|
|
18
|
+
*/
|
|
19
|
+
chain: ESupportedNetworks;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Data transfer object for registering a poll for finalization
|
|
23
|
+
*/
|
|
24
|
+
export declare class SchedulePollWithSignerDto extends IdentityScheduledPollDto {
|
|
25
|
+
/**
|
|
26
|
+
* Deployment block number
|
|
27
|
+
*/
|
|
28
|
+
deploymentBlockNumber: number;
|
|
29
|
+
/**
|
|
30
|
+
* Voting mode
|
|
31
|
+
*/
|
|
32
|
+
mode: EMode;
|
|
33
|
+
/**
|
|
34
|
+
* Session key address for Account Abstraction signer
|
|
35
|
+
*/
|
|
36
|
+
sessionKeyAddress?: Hex;
|
|
37
|
+
/**
|
|
38
|
+
* Approval for Account Abstraction signer
|
|
39
|
+
*/
|
|
40
|
+
approval?: string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../../ts/scheduler/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C;;GAEG;AACH,qBAAa,wBAAwB;IACnC;;OAEG;IAMH,WAAW,EAAG,GAAG,CAAC;IAElB;;OAEG;IAQH,MAAM,EAAG,MAAM,CAAC;IAEhB;;OAEG;IAMH,KAAK,EAAG,kBAAkB,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,wBAAwB;IACrE;;OAEG;IAOH,qBAAqB,EAAG,MAAM,CAAC;IAE/B;;OAEG;IAOH,IAAI,EAAG,KAAK,CAAC;IAEb;;OAEG;IAQH,iBAAiB,CAAC,EAAE,GAAG,CAAC;IAExB;;OAEG;IAQH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|