@maci-protocol/testing 0.0.0-ci.1e276ed

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 (81) hide show
  1. package/CHANGELOG.md +262 -0
  2. package/LICENSE +22 -0
  3. package/README.md +16 -0
  4. package/build/hardhat.config.d.ts +5 -0
  5. package/build/hardhat.config.d.ts.map +1 -0
  6. package/build/hardhat.config.js +37 -0
  7. package/build/hardhat.config.js.map +1 -0
  8. package/build/ts/__tests__/e2e.nonQv.test.d.ts +2 -0
  9. package/build/ts/__tests__/e2e.nonQv.test.d.ts.map +1 -0
  10. package/build/ts/__tests__/e2e.nonQv.test.js +208 -0
  11. package/build/ts/__tests__/e2e.nonQv.test.js.map +1 -0
  12. package/build/ts/__tests__/e2e.test.d.ts +2 -0
  13. package/build/ts/__tests__/e2e.test.d.ts.map +1 -0
  14. package/build/ts/__tests__/e2e.test.js +1588 -0
  15. package/build/ts/__tests__/e2e.test.js.map +1 -0
  16. package/build/ts/__tests__/integration.test.d.ts +2 -0
  17. package/build/ts/__tests__/integration.test.d.ts.map +1 -0
  18. package/build/ts/__tests__/integration.test.js +288 -0
  19. package/build/ts/__tests__/integration.test.js.map +1 -0
  20. package/build/ts/__tests__/keyChange.test.d.ts +2 -0
  21. package/build/ts/__tests__/keyChange.test.d.ts.map +1 -0
  22. package/build/ts/__tests__/keyChange.test.js +444 -0
  23. package/build/ts/__tests__/keyChange.test.js.map +1 -0
  24. package/build/ts/__tests__/maci-keys.test.d.ts +2 -0
  25. package/build/ts/__tests__/maci-keys.test.d.ts.map +1 -0
  26. package/build/ts/__tests__/maci-keys.test.js +78 -0
  27. package/build/ts/__tests__/maci-keys.test.js.map +1 -0
  28. package/build/ts/__tests__/unit/fundWallet.test.d.ts +2 -0
  29. package/build/ts/__tests__/unit/fundWallet.test.d.ts.map +1 -0
  30. package/build/ts/__tests__/unit/fundWallet.test.js +15 -0
  31. package/build/ts/__tests__/unit/fundWallet.test.js.map +1 -0
  32. package/build/ts/__tests__/unit/joinPoll.test.d.ts +2 -0
  33. package/build/ts/__tests__/unit/joinPoll.test.d.ts.map +1 -0
  34. package/build/ts/__tests__/unit/joinPoll.test.js +125 -0
  35. package/build/ts/__tests__/unit/joinPoll.test.js.map +1 -0
  36. package/build/ts/__tests__/unit/poll.test.d.ts +2 -0
  37. package/build/ts/__tests__/unit/poll.test.d.ts.map +1 -0
  38. package/build/ts/__tests__/unit/poll.test.js +89 -0
  39. package/build/ts/__tests__/unit/poll.test.js.map +1 -0
  40. package/build/ts/__tests__/unit/publish.test.d.ts +2 -0
  41. package/build/ts/__tests__/unit/publish.test.d.ts.map +1 -0
  42. package/build/ts/__tests__/unit/publish.test.js +129 -0
  43. package/build/ts/__tests__/unit/publish.test.js.map +1 -0
  44. package/build/ts/__tests__/unit/signup.test.d.ts +2 -0
  45. package/build/ts/__tests__/unit/signup.test.d.ts.map +1 -0
  46. package/build/ts/__tests__/unit/signup.test.js +63 -0
  47. package/build/ts/__tests__/unit/signup.test.js.map +1 -0
  48. package/build/ts/__tests__/unit/timeTravel.test.d.ts +2 -0
  49. package/build/ts/__tests__/unit/timeTravel.test.d.ts.map +1 -0
  50. package/build/ts/__tests__/unit/timeTravel.test.js +14 -0
  51. package/build/ts/__tests__/unit/timeTravel.test.js.map +1 -0
  52. package/build/ts/__tests__/unit/utils.test.d.ts +2 -0
  53. package/build/ts/__tests__/unit/utils.test.d.ts.map +1 -0
  54. package/build/ts/__tests__/unit/utils.test.js +36 -0
  55. package/build/ts/__tests__/unit/utils.test.js.map +1 -0
  56. package/build/ts/constants.d.ts +83 -0
  57. package/build/ts/constants.d.ts.map +1 -0
  58. package/build/ts/constants.js +156 -0
  59. package/build/ts/constants.js.map +1 -0
  60. package/build/ts/index.d.ts +4 -0
  61. package/build/ts/index.d.ts.map +1 -0
  62. package/build/ts/index.js +23 -0
  63. package/build/ts/index.js.map +1 -0
  64. package/build/ts/testingClass.d.ts +43 -0
  65. package/build/ts/testingClass.d.ts.map +1 -0
  66. package/build/ts/testingClass.js +139 -0
  67. package/build/ts/testingClass.js.map +1 -0
  68. package/build/ts/types.d.ts +100 -0
  69. package/build/ts/types.d.ts.map +1 -0
  70. package/build/ts/types.js +3 -0
  71. package/build/ts/types.js.map +1 -0
  72. package/build/ts/user.d.ts +31 -0
  73. package/build/ts/user.d.ts.map +1 -0
  74. package/build/ts/user.js +37 -0
  75. package/build/ts/user.js.map +1 -0
  76. package/build/ts/utils.d.ts +70 -0
  77. package/build/ts/utils.d.ts.map +1 -0
  78. package/build/ts/utils.js +192 -0
  79. package/build/ts/utils.js.map +1 -0
  80. package/build/tsconfig.tsbuildinfo +1 -0
  81. package/package.json +53 -0
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
4
+ const sdk_1 = require("@maci-protocol/sdk");
5
+ const chai_1 = require("chai");
6
+ const constants_1 = require("../../constants");
7
+ describe("joinPoll", function test() {
8
+ let signer;
9
+ let maciAddresses;
10
+ let initialVoiceCreditProxyContractAddress;
11
+ let verifierContractAddress;
12
+ const user = new domainobjs_1.Keypair();
13
+ const userPrivateKey = user.privKey.serialize();
14
+ const userPublicKey = user.pubKey.serialize();
15
+ const mockStateIndex = 1n;
16
+ const mockPollId = 9000n;
17
+ this.timeout(900000);
18
+ // before all tests we deploy the vk registry contract and set the verifying keys
19
+ before(async () => {
20
+ signer = await (0, sdk_1.getDefaultSigner)();
21
+ const [signupPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
22
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
23
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
24
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
25
+ const [initialVoiceCreditProxy] = await (0, sdk_1.deployConstantInitialVoiceCreditProxy)({ amount: constants_1.DEFAULT_INITIAL_VOICE_CREDITS }, signer, undefined, true);
26
+ initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();
27
+ const verifier = await (0, sdk_1.deployVerifier)(signer, true);
28
+ verifierContractAddress = await verifier.getAddress();
29
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
30
+ // we deploy the vk registry contract
31
+ const vkRegistryAddress = await (0, sdk_1.deployVkRegistryContract)({ signer });
32
+ // we set the verifying keys
33
+ await (0, sdk_1.setVerifyingKeys)({ ...(await (0, constants_1.verifyingKeysArgs)(signer)), vkRegistryAddress });
34
+ // deploy the smart contracts
35
+ maciAddresses = await (0, sdk_1.deployMaci)({
36
+ ...constants_1.deployArgs,
37
+ signer,
38
+ signupPolicyAddress: signupPolicyContractAddress,
39
+ });
40
+ // signup the user
41
+ await (0, sdk_1.signup)({
42
+ maciAddress: maciAddresses.maciContractAddress,
43
+ maciPubKey: userPublicKey,
44
+ sgData: constants_1.DEFAULT_SG_DATA,
45
+ signer,
46
+ });
47
+ // deploy a poll contract
48
+ await (0, sdk_1.deployPoll)({
49
+ ...constants_1.deployPollArgs,
50
+ signer,
51
+ pollStartTimestamp: startDate,
52
+ pollEndTimestamp: startDate + constants_1.pollDuration,
53
+ relayers: [await signer.getAddress()],
54
+ maciAddress: maciAddresses.maciContractAddress,
55
+ verifierContractAddress,
56
+ vkRegistryContractAddress: vkRegistryAddress,
57
+ policyContractAddress: pollPolicyContractAddress,
58
+ initialVoiceCreditProxyContractAddress,
59
+ });
60
+ });
61
+ it("should allow to join the poll and return the user data", async () => {
62
+ const startBlock = await signer.provider?.getBlockNumber();
63
+ await (0, sdk_1.joinPoll)({
64
+ maciAddress: maciAddresses.maciContractAddress,
65
+ privateKey: userPrivateKey,
66
+ stateIndex: 1n,
67
+ signer,
68
+ pollId: 0n,
69
+ pollJoiningZkey: constants_1.pollJoiningTestZkeyPath,
70
+ useWasm: true,
71
+ pollWasm: constants_1.testPollJoiningWasmPath,
72
+ pollWitgen: constants_1.testPollJoiningWitnessPath,
73
+ rapidsnark: constants_1.testRapidsnarkPath,
74
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
75
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
76
+ });
77
+ const registeredUserData = await (0, sdk_1.getJoinedUserData)({
78
+ maciAddress: maciAddresses.maciContractAddress,
79
+ pollId: 0n,
80
+ pollPubKey: user.pubKey.serialize(),
81
+ signer,
82
+ startBlock: startBlock || 0,
83
+ });
84
+ (0, chai_1.expect)(registeredUserData.isJoined).to.eq(true);
85
+ (0, chai_1.expect)(BigInt(registeredUserData.pollStateIndex)).to.eq(1);
86
+ });
87
+ it("should throw error if poll does not exist", async () => {
88
+ await (0, chai_1.expect)((0, sdk_1.joinPoll)({
89
+ maciAddress: maciAddresses.maciContractAddress,
90
+ privateKey: userPrivateKey,
91
+ stateIndex: mockStateIndex,
92
+ signer,
93
+ pollId: mockPollId,
94
+ pollJoiningZkey: constants_1.pollJoiningTestZkeyPath,
95
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
96
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
97
+ })).eventually.rejectedWith("PollDoesNotExist(9000)");
98
+ });
99
+ it("should throw error if state index is invalid", async () => {
100
+ const keypair = new domainobjs_1.Keypair();
101
+ await (0, chai_1.expect)((0, sdk_1.joinPoll)({
102
+ maciAddress: maciAddresses.maciContractAddress,
103
+ privateKey: keypair.privKey.serialize(),
104
+ stateIndex: -1n,
105
+ signer,
106
+ pollId: 0n,
107
+ pollJoiningZkey: constants_1.pollJoiningTestZkeyPath,
108
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
109
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
110
+ })).eventually.rejectedWith("Invalid state index");
111
+ });
112
+ it("should throw error if current poll id is invalid", async () => {
113
+ await (0, chai_1.expect)((0, sdk_1.joinPoll)({
114
+ maciAddress: maciAddresses.maciContractAddress,
115
+ privateKey: userPrivateKey,
116
+ stateIndex: mockStateIndex,
117
+ signer,
118
+ pollId: -1n,
119
+ pollJoiningZkey: constants_1.pollJoiningTestZkeyPath,
120
+ sgDataArg: constants_1.DEFAULT_SG_DATA,
121
+ ivcpDataArg: constants_1.DEFAULT_IVCP_DATA,
122
+ })).eventually.rejectedWith("Invalid poll id");
123
+ });
124
+ });
125
+ //# sourceMappingURL=joinPoll.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joinPoll.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/joinPoll.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=poll.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/unit/poll.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdk_1 = require("@maci-protocol/sdk");
4
+ const chai_1 = require("chai");
5
+ const constants_1 = require("../../constants");
6
+ describe("poll", function test() {
7
+ this.timeout(900000);
8
+ let maciAddresses;
9
+ let initialVoiceCreditProxyContractAddress;
10
+ let verifierContractAddress;
11
+ let pollAddresses;
12
+ let signer;
13
+ // before all tests we deploy the vk registry contract and set the verifying keys
14
+ before(async () => {
15
+ signer = await (0, sdk_1.getDefaultSigner)();
16
+ const [signupPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
17
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
18
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
19
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
20
+ const [initialVoiceCreditProxy] = await (0, sdk_1.deployConstantInitialVoiceCreditProxy)({ amount: constants_1.DEFAULT_INITIAL_VOICE_CREDITS }, signer, undefined, true);
21
+ initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();
22
+ const verifier = await (0, sdk_1.deployVerifier)(signer, true);
23
+ verifierContractAddress = await verifier.getAddress();
24
+ // we deploy the vk registry contract
25
+ const vkRegistryAddress = await (0, sdk_1.deployVkRegistryContract)({ signer });
26
+ // we set the verifying keys
27
+ await (0, sdk_1.setVerifyingKeys)({ ...(await (0, constants_1.verifyingKeysArgs)(signer)), vkRegistryAddress });
28
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
29
+ // deploy the smart contracts
30
+ maciAddresses = await (0, sdk_1.deployMaci)({
31
+ ...constants_1.deployArgs,
32
+ signer,
33
+ signupPolicyAddress: signupPolicyContractAddress,
34
+ });
35
+ // deploy a poll contract
36
+ pollAddresses = await (0, sdk_1.deployPoll)({
37
+ ...constants_1.deployPollArgs,
38
+ signer,
39
+ pollStartTimestamp: startDate,
40
+ pollEndTimestamp: startDate + constants_1.pollDuration,
41
+ relayers: [await signer.getAddress()],
42
+ maciAddress: maciAddresses.maciContractAddress,
43
+ verifierContractAddress,
44
+ vkRegistryContractAddress: vkRegistryAddress,
45
+ policyContractAddress: pollPolicyContractAddress,
46
+ initialVoiceCreditProxyContractAddress,
47
+ });
48
+ });
49
+ describe("check deploy and get poll", () => {
50
+ it("should get current poll properly", async () => {
51
+ const pollData = await (0, sdk_1.getPoll)({
52
+ maciAddress: maciAddresses.maciContractAddress,
53
+ signer,
54
+ });
55
+ const samePollData = await (0, sdk_1.getPoll)({
56
+ maciAddress: maciAddresses.maciContractAddress,
57
+ pollId: pollData.id,
58
+ signer,
59
+ });
60
+ (0, chai_1.expect)(pollData.address).to.eq(pollAddresses.pollContractAddress);
61
+ (0, chai_1.expect)(pollData).to.deep.eq(samePollData);
62
+ });
63
+ it("should get finished poll properly", async () => {
64
+ const pollData = await (0, sdk_1.getPoll)({
65
+ maciAddress: maciAddresses.maciContractAddress,
66
+ provider: signer.provider,
67
+ });
68
+ await (0, sdk_1.timeTravel)({ seconds: constants_1.pollDuration, signer });
69
+ await (0, sdk_1.mergeSignups)({ pollId: BigInt(pollData.id), maciAddress: maciAddresses.maciContractAddress, signer });
70
+ const finishedPollData = await (0, sdk_1.getPoll)({
71
+ maciAddress: maciAddresses.maciContractAddress,
72
+ signer,
73
+ });
74
+ (0, chai_1.expect)(pollData.id).to.eq(finishedPollData.id);
75
+ (0, chai_1.expect)(pollData.address).to.eq(finishedPollData.address);
76
+ (0, chai_1.expect)(finishedPollData.isMerged).to.eq(true);
77
+ });
78
+ it("should throw error if there are no signer and provider", async () => {
79
+ await (0, chai_1.expect)((0, sdk_1.getPoll)({ maciAddress: maciAddresses.maciContractAddress, pollId: -1n })).eventually.rejectedWith("No signer and provider are provided");
80
+ });
81
+ it("should throw error if current poll id is invalid", async () => {
82
+ await (0, chai_1.expect)((0, sdk_1.getPoll)({ maciAddress: maciAddresses.maciContractAddress, pollId: -1n, signer })).eventually.rejectedWith("Invalid poll id -1");
83
+ });
84
+ it("should throw error if current poll is not deployed", async () => {
85
+ await (0, chai_1.expect)((0, sdk_1.getPoll)({ maciAddress: maciAddresses.maciContractAddress, pollId: 9000n, signer })).eventually.rejectedWith("MACI contract doesn't have any deployed poll 9000");
86
+ });
87
+ });
88
+ });
89
+ //# sourceMappingURL=poll.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"poll.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/poll.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=publish.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/unit/publish.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const crypto_1 = require("@maci-protocol/crypto");
4
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
5
+ const sdk_1 = require("@maci-protocol/sdk");
6
+ const chai_1 = require("chai");
7
+ const constants_1 = require("../../constants");
8
+ describe("publish", function test() {
9
+ this.timeout(900000);
10
+ let maciAddresses;
11
+ let initialVoiceCreditProxyContractAddress;
12
+ let verifierContractAddress;
13
+ let pollAddresses;
14
+ let signer;
15
+ const messages = [
16
+ {
17
+ stateIndex: 1n,
18
+ voteOptionIndex: 1n,
19
+ nonce: 1n,
20
+ newVoteWeight: 1n,
21
+ salt: 1n,
22
+ },
23
+ {
24
+ stateIndex: 1n,
25
+ voteOptionIndex: 2n,
26
+ nonce: 2n,
27
+ newVoteWeight: 1n,
28
+ },
29
+ ];
30
+ // before all tests we deploy the vk registry contract and set the verifying keys
31
+ before(async () => {
32
+ signer = await (0, sdk_1.getDefaultSigner)();
33
+ const [signupPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
34
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
35
+ const [pollPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
36
+ const pollPolicyContractAddress = await pollPolicy.getAddress();
37
+ const [initialVoiceCreditProxy] = await (0, sdk_1.deployConstantInitialVoiceCreditProxy)({ amount: constants_1.DEFAULT_INITIAL_VOICE_CREDITS }, signer, undefined, true);
38
+ initialVoiceCreditProxyContractAddress = await initialVoiceCreditProxy.getAddress();
39
+ const verifier = await (0, sdk_1.deployVerifier)(signer, true);
40
+ verifierContractAddress = await verifier.getAddress();
41
+ // we deploy the vk registry contract
42
+ const vkRegistryAddress = await (0, sdk_1.deployVkRegistryContract)({ signer });
43
+ // we set the verifying keys
44
+ await (0, sdk_1.setVerifyingKeys)({ ...(await (0, constants_1.verifyingKeysArgs)(signer)), vkRegistryAddress });
45
+ const startDate = await (0, sdk_1.getBlockTimestamp)(signer);
46
+ // deploy the smart contracts
47
+ maciAddresses = await (0, sdk_1.deployMaci)({
48
+ ...constants_1.deployArgs,
49
+ signer,
50
+ signupPolicyAddress: signupPolicyContractAddress,
51
+ });
52
+ // deploy a poll contract
53
+ pollAddresses = await (0, sdk_1.deployPoll)({
54
+ ...constants_1.deployPollArgs,
55
+ signer,
56
+ pollStartTimestamp: startDate,
57
+ pollEndTimestamp: startDate + constants_1.pollDuration,
58
+ relayers: [await signer.getAddress()],
59
+ maciAddress: maciAddresses.maciContractAddress,
60
+ verifierContractAddress,
61
+ vkRegistryContractAddress: vkRegistryAddress,
62
+ policyContractAddress: pollPolicyContractAddress,
63
+ initialVoiceCreditProxyContractAddress,
64
+ });
65
+ });
66
+ describe("publish batch messages", () => {
67
+ const user = new domainobjs_1.Keypair();
68
+ let defaultArgs;
69
+ before(async () => {
70
+ defaultArgs = {
71
+ maciAddress: maciAddresses.maciContractAddress,
72
+ publicKey: user.pubKey.serialize(),
73
+ privateKey: user.privKey.serialize(),
74
+ messages,
75
+ pollId: 0n,
76
+ signer,
77
+ };
78
+ await (0, sdk_1.signup)({
79
+ maciAddress: maciAddresses.maciContractAddress,
80
+ maciPubKey: user.pubKey.serialize(),
81
+ sgData: constants_1.DEFAULT_SG_DATA,
82
+ signer,
83
+ });
84
+ });
85
+ it("should publish messages properly", async () => {
86
+ const pollContract = sdk_1.Poll__factory.connect(pollAddresses.pollContractAddress, signer);
87
+ const initialNumMessages = await pollContract.numMessages();
88
+ const { hash, encryptedMessages, privateKeys } = await (0, sdk_1.publishBatch)(defaultArgs);
89
+ const numMessages = await pollContract.numMessages();
90
+ (0, chai_1.expect)(initialNumMessages).to.eq(1n);
91
+ (0, chai_1.expect)(hash).to.not.eq(null);
92
+ (0, chai_1.expect)(hash).to.not.eq(undefined);
93
+ (0, chai_1.expect)(numMessages).to.eq(BigInt(messages.length + 1));
94
+ (0, chai_1.expect)(privateKeys.length).to.eq(defaultArgs.messages.length);
95
+ (0, chai_1.expect)(encryptedMessages.length).to.eq(defaultArgs.messages.length);
96
+ });
97
+ it("should throw error if public key is invalid", async () => {
98
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({ ...defaultArgs, publicKey: "invalid" })).eventually.rejectedWith("Invalid MACI public key");
99
+ });
100
+ it("should throw error if private key is invalid", async () => {
101
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({ ...defaultArgs, privateKey: "invalid" })).eventually.rejectedWith("Invalid MACI private key");
102
+ });
103
+ it("should throw error if poll id is invalid", async () => {
104
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({ ...defaultArgs, pollId: -1n })).eventually.rejectedWith("Invalid poll id -1");
105
+ });
106
+ it("should throw error if current poll is not deployed", async () => {
107
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({ ...defaultArgs, pollId: 9000n })).eventually.rejectedWith("MACI contract doesn't have any deployed poll 9000");
108
+ });
109
+ it("should throw error if message is invalid", async () => {
110
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({
111
+ ...defaultArgs,
112
+ messages: [...messages, { ...messages[0], voteOptionIndex: -1n }],
113
+ })).eventually.rejectedWith("Invalid vote option index");
114
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({
115
+ ...defaultArgs,
116
+ messages: [...messages, { ...messages[0], stateIndex: 0n }],
117
+ })).eventually.rejectedWith("Invalid state index");
118
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({
119
+ ...defaultArgs,
120
+ messages: [...messages, { ...messages[0], nonce: -1n }],
121
+ })).eventually.rejectedWith("Invalid nonce");
122
+ await (0, chai_1.expect)((0, sdk_1.publishBatch)({
123
+ ...defaultArgs,
124
+ messages: [...messages, { ...messages[0], salt: crypto_1.SNARK_FIELD_SIZE + 1n }],
125
+ })).eventually.rejectedWith("Invalid salt");
126
+ });
127
+ });
128
+ });
129
+ //# sourceMappingURL=publish.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/publish.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=signup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/unit/signup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
4
+ const sdk_1 = require("@maci-protocol/sdk");
5
+ const chai_1 = require("chai");
6
+ const constants_1 = require("../../constants");
7
+ describe("signup", function test() {
8
+ this.timeout(900000);
9
+ let signer;
10
+ let maciAddresses;
11
+ const user = new domainobjs_1.Keypair();
12
+ // before all tests we deploy the vk registry contract and set the verifying keys
13
+ before(async () => {
14
+ signer = await (0, sdk_1.getDefaultSigner)();
15
+ const [signupPolicy] = await (0, sdk_1.deployFreeForAllSignUpPolicy)(signer, true);
16
+ const signupPolicyContractAddress = await signupPolicy.getAddress();
17
+ // we deploy the vk registry contract
18
+ const vkRegistryAddress = await (0, sdk_1.deployVkRegistryContract)({ signer });
19
+ // we set the verifying keys
20
+ await (0, sdk_1.setVerifyingKeys)({ ...(await (0, constants_1.verifyingKeysArgs)(signer)), vkRegistryAddress });
21
+ // deploy the smart contracts
22
+ maciAddresses = await (0, sdk_1.deployMaci)({
23
+ ...constants_1.deployArgs,
24
+ signer,
25
+ signupPolicyAddress: signupPolicyContractAddress,
26
+ });
27
+ });
28
+ it("should allow to signup and return the user data", async () => {
29
+ const startBlock = await signer.provider?.getBlockNumber();
30
+ const signUpData = await (0, sdk_1.signup)({
31
+ maciAddress: maciAddresses.maciContractAddress,
32
+ maciPubKey: user.pubKey.serialize(),
33
+ sgData: constants_1.DEFAULT_SG_DATA,
34
+ signer,
35
+ });
36
+ const registeredUserData = await (0, sdk_1.getSignedupUserData)({
37
+ maciAddress: maciAddresses.maciContractAddress,
38
+ startBlock,
39
+ maciPubKey: user.pubKey.serialize(),
40
+ signer,
41
+ });
42
+ (0, chai_1.expect)(registeredUserData.isRegistered).to.eq(true);
43
+ (0, chai_1.expect)(registeredUserData.stateIndex).to.eq(signUpData.stateIndex);
44
+ });
45
+ it("should not get the user data if the user is not registered", async () => {
46
+ const registeredUserData = await (0, sdk_1.getSignedupUserData)({
47
+ maciAddress: maciAddresses.maciContractAddress,
48
+ startBlock: await signer.provider?.getBlockNumber(),
49
+ maciPubKey: new domainobjs_1.Keypair().pubKey.serialize(),
50
+ signer,
51
+ });
52
+ (0, chai_1.expect)(registeredUserData.isRegistered).to.eq(false);
53
+ });
54
+ it("should start fetchig from block zero if the start block is not provided", async () => {
55
+ const registeredUserData = await (0, sdk_1.getSignedupUserData)({
56
+ maciAddress: maciAddresses.maciContractAddress,
57
+ maciPubKey: user.pubKey.serialize(),
58
+ signer,
59
+ });
60
+ (0, chai_1.expect)(registeredUserData.isRegistered).to.eq(true);
61
+ });
62
+ });
63
+ //# sourceMappingURL=signup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signup.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/signup.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=timeTravel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeTravel.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/unit/timeTravel.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const sdk_1 = require("@maci-protocol/sdk");
4
+ const chai_1 = require("chai");
5
+ describe("timeTravel", () => {
6
+ it("should work when given a valid integer number", async () => {
7
+ const signer = await (0, sdk_1.getDefaultSigner)();
8
+ const blockNumber = await signer.provider?.getBlock("latest");
9
+ await (0, sdk_1.timeTravel)({ seconds: 5, signer });
10
+ const blockNumberAfter = await signer.provider?.getBlock("latest");
11
+ (0, chai_1.expect)(blockNumberAfter.timestamp).to.be.gt(blockNumber.timestamp);
12
+ });
13
+ });
14
+ //# sourceMappingURL=timeTravel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeTravel.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/timeTravel.test.ts"],"names":[],"mappings":";;AAAA,4CAAkE;AAClE,+BAA8B;AAE9B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,MAAM,GAAG,MAAM,IAAA,sBAAgB,GAAE,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAE9D,MAAM,IAAA,gBAAU,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAEzC,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAA,aAAM,EAAC,gBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAY,CAAC,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../ts/__tests__/unit/utils.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const crypto_1 = require("@maci-protocol/crypto");
7
+ const domainobjs_1 = require("@maci-protocol/domainobjs");
8
+ const sdk_1 = require("@maci-protocol/sdk");
9
+ const chai_1 = require("chai");
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const path_1 = __importDefault(require("path"));
12
+ describe("utils", () => {
13
+ describe("vks", () => {
14
+ it("should return true for two equal VKs", async () => {
15
+ const vkPath = path_1.default.resolve(__dirname, "..", "data", "testVk.json");
16
+ const vk1 = domainobjs_1.VerifyingKey.fromJSON(await fs_1.default.promises.readFile(vkPath).then((res) => res.toString()));
17
+ (0, chai_1.expect)((0, sdk_1.compareVks)(vk1, vk1.asContractParam())).to.eq(true);
18
+ });
19
+ it("should return false for two unequal VKs", async () => {
20
+ const vkPath = path_1.default.resolve(__dirname, "..", "data", "testVk.json");
21
+ const vk1 = domainobjs_1.VerifyingKey.fromJSON(await fs_1.default.promises.readFile(vkPath).then((res) => res.toString()));
22
+ const vk2 = vk1.asContractParam();
23
+ vk2.alpha1.x = 9999n;
24
+ (0, chai_1.expect)((0, sdk_1.compareVks)(vk1, vk2)).to.eq(false);
25
+ });
26
+ });
27
+ describe("validateSalt", () => {
28
+ it("should return true for a valid salt", () => {
29
+ (0, chai_1.expect)((0, sdk_1.validateSalt)((0, crypto_1.genRandomSalt)())).to.eq(true);
30
+ });
31
+ it("should return false for an invalid salt", () => {
32
+ (0, chai_1.expect)((0, sdk_1.validateSalt)(crypto_1.SNARK_FIELD_SIZE)).to.eq(false);
33
+ });
34
+ });
35
+ });
36
+ //# sourceMappingURL=utils.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../ts/__tests__/unit/utils.test.ts"],"names":[],"mappings":";;;;;AAAA,kDAAwE;AACxE,0DAAyD;AACzD,4CAA8D;AAC9D,+BAA8B;AAE9B,4CAAoB;AACpB,gDAAwB;AAExB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,yBAAY,CAAC,QAAQ,CAAC,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpG,IAAA,aAAM,EAAC,IAAA,gBAAU,EAAC,GAAG,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,GAAG,GAAG,yBAAY,CAAC,QAAQ,CAAC,MAAM,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAEpG,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC;YACrB,IAAA,aAAM,EAAC,IAAA,gBAAU,EAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,IAAA,aAAM,EAAC,IAAA,kBAAY,EAAC,IAAA,sBAAa,GAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,IAAA,aAAM,EAAC,IAAA,kBAAY,EAAC,yBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}