@prosopo/provider 0.2.5 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/contracts/captcha/dist/contract-info/captcha.cjs +2 -2
  2. package/dist/tests/accounts.d.ts +11 -0
  3. package/dist/tests/accounts.d.ts.map +1 -0
  4. package/dist/tests/accounts.js +47 -0
  5. package/dist/tests/accounts.js.map +1 -0
  6. package/dist/tests/batch/commitments.test.d.ts +6 -0
  7. package/dist/tests/batch/commitments.test.d.ts.map +1 -0
  8. package/dist/tests/batch/commitments.test.js +217 -0
  9. package/dist/tests/batch/commitments.test.js.map +1 -0
  10. package/dist/tests/contract/helpers.test.d.ts +6 -0
  11. package/dist/tests/contract/helpers.test.d.ts.map +1 -0
  12. package/dist/tests/contract/helpers.test.js +58 -0
  13. package/dist/tests/contract/helpers.test.js.map +1 -0
  14. package/dist/tests/data/captchas.d.ts +37 -0
  15. package/dist/tests/data/captchas.d.ts.map +1 -0
  16. package/dist/tests/data/captchas.js +902 -0
  17. package/dist/tests/data/captchas.js.map +1 -0
  18. package/dist/tests/data/captchas1.json +53 -0
  19. package/dist/tests/data/captchas2.json +69 -0
  20. package/dist/tests/data/captchas3.json +54 -0
  21. package/dist/tests/data/captchas4.json +53 -0
  22. package/dist/tests/dataUtils/DatabaseAccounts.d.ts +35 -0
  23. package/dist/tests/dataUtils/DatabaseAccounts.d.ts.map +1 -0
  24. package/dist/tests/dataUtils/DatabaseAccounts.js +85 -0
  25. package/dist/tests/dataUtils/DatabaseAccounts.js.map +1 -0
  26. package/dist/tests/dataUtils/DatabasePopulator.d.ts +66 -0
  27. package/dist/tests/dataUtils/DatabasePopulator.d.ts.map +1 -0
  28. package/dist/tests/dataUtils/DatabasePopulator.js +264 -0
  29. package/dist/tests/dataUtils/DatabasePopulator.js.map +1 -0
  30. package/dist/tests/dataUtils/dapp-example-contract/dapp.json +648 -0
  31. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts +4 -0
  32. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.d.ts.map +1 -0
  33. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js +41 -0
  34. package/dist/tests/dataUtils/dapp-example-contract/loadFiles.js.map +1 -0
  35. package/dist/tests/dataUtils/funds.d.ts +23 -0
  36. package/dist/tests/dataUtils/funds.d.ts.map +1 -0
  37. package/dist/tests/dataUtils/funds.js +102 -0
  38. package/dist/tests/dataUtils/funds.js.map +1 -0
  39. package/dist/tests/dataUtils/populateDatabase.d.ts +15 -0
  40. package/dist/tests/dataUtils/populateDatabase.d.ts.map +1 -0
  41. package/dist/tests/dataUtils/populateDatabase.js +76 -0
  42. package/dist/tests/dataUtils/populateDatabase.js.map +1 -0
  43. package/dist/tests/getUser.d.ts +5 -0
  44. package/dist/tests/getUser.d.ts.map +1 -0
  45. package/dist/tests/getUser.js +18 -0
  46. package/dist/tests/getUser.js.map +1 -0
  47. package/dist/tests/tasks/tasks.test.d.ts +7 -0
  48. package/dist/tests/tasks/tasks.test.d.ts.map +1 -0
  49. package/dist/tests/tasks/tasks.test.js +719 -0
  50. package/dist/tests/tasks/tasks.test.js.map +1 -0
  51. package/dist/tests/util.test.d.ts +2 -0
  52. package/dist/tests/util.test.d.ts.map +1 -0
  53. package/dist/tests/util.test.js +51 -0
  54. package/dist/tests/util.test.js.map +1 -0
  55. package/package.json +10 -10
@@ -0,0 +1,11 @@
1
+ import { IDappAccount, IProviderAccount } from '@prosopo/types';
2
+ import { ProviderEnvironment } from '@prosopo/types-env';
3
+ import { Tasks } from '../index.js';
4
+ export declare const accountMnemonic: (account: Account) => string;
5
+ export declare const accountAddress: (account: Account) => string;
6
+ export declare const accountContract: (account: Account) => string;
7
+ export type Account = [mnemonic: string, address: string, contractAddress?: string];
8
+ export declare const PROVIDER: IProviderAccount;
9
+ export declare const DAPP: IDappAccount;
10
+ export declare function getSignedTasks(env: ProviderEnvironment, account: Account): Promise<Tasks>;
11
+ //# sourceMappingURL=accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAG/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAGnC,eAAO,MAAM,eAAe,8BAAmC,CAAA;AAC/D,eAAO,MAAM,cAAc,8BAAmC,CAAA;AAC9D,eAAO,MAAM,eAAe,wBAAgC,MAK3D,CAAA;AACD,MAAM,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,CAAC,CAAA;AAEnF,eAAO,MAAM,QAAQ,EAAE,gBAStB,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,YAIlB,CAAA;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAM/F"}
@@ -0,0 +1,47 @@
1
+ // Copyright 2021-2023 Prosopo (UK) Ltd.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { BN } from '@polkadot/util';
15
+ import { Payee } from '@prosopo/captcha-contract';
16
+ import { Tasks } from '../index.js';
17
+ import { getPair } from '@prosopo/common';
18
+ export const accountMnemonic = (account) => account[0];
19
+ export const accountAddress = (account) => account[1];
20
+ export const accountContract = function (account) {
21
+ if (account[2]) {
22
+ return account[2];
23
+ }
24
+ throw new Error(`Account ${account[1]} does not have a contract`);
25
+ };
26
+ export const PROVIDER = {
27
+ url: 'http://localhost:9229',
28
+ fee: 10,
29
+ payee: Payee.dapp,
30
+ stake: new BN(1000000000000000),
31
+ datasetFile: './data/captchas.json',
32
+ captchaDatasetId: '',
33
+ secret: '',
34
+ address: '',
35
+ };
36
+ export const DAPP = {
37
+ secret: '//Ferdie',
38
+ contractAccount: process.env.DAPP_SITE_KEY || '',
39
+ fundAmount: new BN(1000000000000000),
40
+ };
41
+ export async function getSignedTasks(env, account) {
42
+ const ss58Format = 42;
43
+ const pair = await getPair('sr25519', ss58Format, accountMnemonic(account));
44
+ await env.changeSigner(pair);
45
+ return new Tasks(env);
46
+ }
47
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/tests/accounts.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AACjC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAGnC,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEjD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC/D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,OAAgB;IACrD,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;KACpB;IACD,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAA;AACrE,CAAC,CAAA;AAGD,MAAM,CAAC,MAAM,QAAQ,GAAqB;IACtC,GAAG,EAAE,uBAAuB;IAC5B,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,KAAK,CAAC,IAAI;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC;IAC/B,WAAW,EAAE,sBAAsB;IACnC,gBAAgB,EAAE,EAAE;IACpB,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;CACd,CAAA;AAED,MAAM,CAAC,MAAM,IAAI,GAAiB;IAC9B,MAAM,EAAE,UAAU;IAClB,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE;IAChD,UAAU,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC;CACvC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAwB,EAAE,OAAgB;IAC3E,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,SAAwB,EAAE,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;IAE1F,MAAM,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IAC5B,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ViteTestContext } from '@prosopo/env';
2
+ declare module 'vitest' {
3
+ interface TestContext extends ViteTestContext {
4
+ }
5
+ }
6
+ //# sourceMappingURL=commitments.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitments.test.d.ts","sourceRoot":"","sources":["../../../src/tests/batch/commitments.test.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAoC9C,OAAO,QAAQ,QAAQ,CAAC;IAEpB,UAAiB,WAAY,SAAQ,eAAe;KAAG;CAC1D"}
@@ -0,0 +1,217 @@
1
+ // Copyright 2021-2023 Prosopo (UK) Ltd.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ import { AccountKey } from '../dataUtils/DatabaseAccounts.js';
15
+ import { BN, BN_THOUSAND, BN_TWO, bnMin, stringToHex } from '@polkadot/util';
16
+ import { BatchCommitmentsTask } from '../../batch/commitments.js';
17
+ import { ScheduledTaskNames } from '@prosopo/types';
18
+ import { CaptchaStatus } from '@prosopo/captcha-contract';
19
+ import { MockEnvironment } from '@prosopo/env';
20
+ import { ProsopoEnvError, getPair } from '@prosopo/common';
21
+ import { accountAddress, accountContract, accountMnemonic, getSignedTasks } from '../accounts.js';
22
+ import { afterEach, beforeEach, describe, expect, test } from 'vitest';
23
+ import { at } from '@prosopo/util';
24
+ import { getUser } from '../getUser.js';
25
+ import { randomAsHex } from '@polkadot/util-crypto';
26
+ import { sleep } from '../tasks/tasks.test.js';
27
+ import { testConfig } from '@prosopo/config';
28
+ import { wrapQuery } from '@prosopo/contract';
29
+ // Some chains incorrectly use these, i.e. it is set to values such as 0 or even 2
30
+ // Use a low minimum validity threshold to check these against
31
+ const THRESHOLD = BN_THOUSAND.div(BN_TWO);
32
+ const DEFAULT_TIME = new BN(6000);
33
+ const A_DAY = new BN(24 * 60 * 60 * 1000);
34
+ function calcInterval(api) {
35
+ return bnMin(A_DAY,
36
+ // Babe, e.g. Relay chains (Substrate defaults)
37
+ api.consts.babe?.expectedBlockTime ||
38
+ // POW, eg. Kulupu
39
+ api.consts.difficulty?.targetBlockTime ||
40
+ // Subspace
41
+ api.consts.subspace?.expectedBlockTime ||
42
+ // Check against threshold to determine value validity
43
+ (api.consts.timestamp?.minimumPeriod.gte(THRESHOLD)
44
+ ? // Default minimum period config
45
+ api.consts.timestamp.minimumPeriod.mul(BN_TWO)
46
+ : api.query.parachainSystem
47
+ ? // default guess for a parachain
48
+ DEFAULT_TIME.mul(BN_TWO)
49
+ : // default guess for others
50
+ DEFAULT_TIME));
51
+ }
52
+ describe('BATCH TESTS', function () {
53
+ beforeEach(async function (context) {
54
+ context.ss58Format = 42;
55
+ context.pairType = 'sr25519';
56
+ const alicePair = await getPair(context.pairType, context.ss58Format, '//Alice');
57
+ console.log(testConfig);
58
+ context.env = new MockEnvironment(alicePair, testConfig);
59
+ try {
60
+ await context.env.isReady();
61
+ }
62
+ catch (e) {
63
+ throw new ProsopoEnvError(e);
64
+ }
65
+ const promiseStakeDefault = wrapQuery(context.env.getContractInterface().query.getProviderStakeThreshold, context.env.getContractInterface().query)();
66
+ context.providerStakeThreshold = new BN((await promiseStakeDefault).toNumber());
67
+ });
68
+ afterEach(async ({ env }) => {
69
+ if (env && 'db' in env)
70
+ await env.db?.close();
71
+ });
72
+ const commitmentCount = 50;
73
+ test(`Batches ~${commitmentCount} commitments on-chain`, async ({ env, pairType, ss58Format }) => {
74
+ if (env.db) {
75
+ const providerAccount = await getUser(env, AccountKey.providersWithStakeAndDataset);
76
+ await env.changeSigner(await getPair(pairType, ss58Format, accountMnemonic(providerAccount)));
77
+ // contract API must be initialized with an account that has funds or the error StorageDepositLimitExhausted
78
+ // will be thrown when trying to batch commitments
79
+ const contractApi = await env.getContractApi();
80
+ // Remove any existing commitments and solutions from the db
81
+ // FIXME - deleting these can mess with other tests since they're all running asynchronously. The database
82
+ // instance *should* be separate for this batch file but issues have been seen in the past...
83
+ await env.db.tables?.commitment.deleteMany({});
84
+ await env.db.tables?.usersolution.deleteMany({});
85
+ // Get account nonce
86
+ const startNonce = await contractApi.api.call.accountNonceApi.accountNonce(accountAddress(providerAccount));
87
+ // Batcher must be created with the provider account as the pair on the contractApi, otherwise the batcher
88
+ // will fail with `ProviderDoesNotExist` error.
89
+ const batcher = new BatchCommitmentsTask(env.config.batchCommit, await env.getContractApi(), env.db, BigInt(startNonce.toNumber()), env.logger);
90
+ const providerTasks = await getSignedTasks(env, providerAccount);
91
+ const providerDetails = (await providerTasks.contract.query.getProvider(accountAddress(providerAccount))).value
92
+ .unwrap()
93
+ .unwrap();
94
+ const dappAccount = await getUser(env, AccountKey.dappsWithStake);
95
+ const randomCaptchasResult = await providerTasks.db.getRandomCaptcha(false, providerDetails.datasetId);
96
+ if (randomCaptchasResult) {
97
+ const unsolvedCaptcha = at(randomCaptchasResult, 0);
98
+ const solution = [
99
+ at(unsolvedCaptcha.items, 0).hash || '',
100
+ at(unsolvedCaptcha.items, 2).hash || '',
101
+ at(unsolvedCaptcha.items, 3).hash || '',
102
+ ];
103
+ const captchaSolution = { ...unsolvedCaptcha, solution, salt: randomAsHex() };
104
+ const commitmentIds = [];
105
+ // Store 10 commitments in the local db
106
+ const completedAt = (await env.getApi().rpc.chain.getBlock()).block.header.number.toNumber();
107
+ const requestedAt = completedAt - 1;
108
+ const requestHash = 'requestHash';
109
+ for (let count = 0; count < commitmentCount; count++) {
110
+ // need to submit different commits under different user accounts to avoid the commitments being
111
+ // trimmed by the contract when the max number of commitments per user is reached (e.g. 10 per user)
112
+ const dappUser = await getUser(env, AccountKey.dappUsers, false);
113
+ // not the real commitment id, which would be calculated as the root of a merkle tree
114
+ const commitmentId = randomAsHex();
115
+ commitmentIds.push(commitmentId);
116
+ const status = count % 2 === 0 ? CaptchaStatus.approved : CaptchaStatus.disapproved;
117
+ const signer = env.keyring.addFromMnemonic(accountMnemonic(dappUser));
118
+ const userSignature = signer.sign(stringToHex(requestHash));
119
+ const commit = {
120
+ id: commitmentId,
121
+ userAccount: accountAddress(dappUser),
122
+ providerAccount: accountAddress(providerAccount),
123
+ datasetId: providerDetails.datasetId.toString(),
124
+ dappContract: accountContract(dappAccount),
125
+ status,
126
+ requestedAt,
127
+ completedAt,
128
+ userSignature: Array.from(userSignature),
129
+ processed: false,
130
+ batched: false,
131
+ };
132
+ await providerTasks.db.storeDappUserSolution([captchaSolution], commit);
133
+ if (status === CaptchaStatus.approved) {
134
+ await providerTasks.db.approveDappUserCommitment(commitmentId);
135
+ }
136
+ await sleep(10);
137
+ const userSolutions = await providerTasks.db.getDappUserSolutionById(commitmentId);
138
+ expect(userSolutions).to.be.not.empty;
139
+ const commitRecord = await providerTasks.db.getDappUserCommitmentById(commitmentId);
140
+ expect(commitRecord).to.be.not.empty;
141
+ }
142
+ // Try to get commitments that are ready to be batched
143
+ const commitmentsBeforeBatching = await batcher.getCommitments();
144
+ expect(commitmentsBeforeBatching.length).to.be.equal(commitmentCount);
145
+ // n/2 commitments should be approved and n/2 disapproved
146
+ expect(commitmentsBeforeBatching
147
+ .map((c) => +(c.status === CaptchaStatus.approved))
148
+ .reduce((prev, next) => prev + next)).to.equal(Math.round(commitmentCount / 2));
149
+ // Commit the commitments to the contract
150
+ await batcher.run();
151
+ // Get the batcher result from the db
152
+ // Records should look like this in the db
153
+ // [
154
+ // {
155
+ // _id: ObjectId("64008a2396cccd8e0b33f5b2"),
156
+ // taskId: '0xa0e53b407a4f2254cc7d9626aff02c2032cf4a48898772a650d9016d880147f0',
157
+ // processName: 'BatchCommitment',
158
+ // datetime: ISODate("2023-03-02T11:36:03.077Z"),
159
+ // status: 'Running',
160
+ // __v: 0
161
+ // },
162
+ // {
163
+ // _id: ObjectId("64008a2596cccd8e0b33f5b7"),
164
+ // taskId: '0xa0e53b407a4f2254cc7d9626aff02c2032cf4a48898772a650d9016d880147f0',
165
+ // processName: 'BatchCommitment',
166
+ // datetime: ISODate("2023-03-02T11:36:05.962Z"),
167
+ // status: 'Completed',
168
+ // result: {
169
+ // data: {
170
+ // commitmentIds: [
171
+ // '0x68b0425027636a9130fae67b6cad16a3686e0ce4afd7bc01ecc2504558cbde23',
172
+ // '0x38ed96eeb240c2c3b5dbb7d29fad276317b5a6bb30094ddf0b845585503dd830', ...
173
+ const batcherResult = await env.db.getLastScheduledTaskStatus(ScheduledTaskNames.BatchCommitment);
174
+ console.log('batcherResult', batcherResult);
175
+ if (!batcherResult ||
176
+ (batcherResult && !batcherResult.result) ||
177
+ (batcherResult && batcherResult.result && !batcherResult.result.data)) {
178
+ expect(true).to.be.false;
179
+ }
180
+ if (batcherResult && batcherResult.result && batcherResult.result.data) {
181
+ const processedCommitmentIds = batcherResult.result.data.commitmentIds;
182
+ const processedCommitments = commitmentsBeforeBatching.filter((commitment) => processedCommitmentIds.indexOf(commitment.id.toString()) > -1);
183
+ // Try to get unbatched commitments after batching
184
+ const commitmentsFromDbAfter = await env.db.getUnbatchedDappUserCommitments();
185
+ // Check that the number of batched commitments is equal to the number of commitments that were
186
+ // processed by the batcher
187
+ expect(commitmentsBeforeBatching.length - processedCommitments.length).to.equal(commitmentsFromDbAfter.length);
188
+ // We have to wait for batched commitments to become available on-chain
189
+ const waitTime = calcInterval(contractApi.api).toNumber() * 2;
190
+ env.logger.debug(`waiting ${waitTime}ms for commitments to be available on-chain`);
191
+ await sleep(waitTime);
192
+ // Check the commitments are in the contract
193
+ let count = 0;
194
+ for (const commitment of processedCommitments) {
195
+ const approved = count % 2 === 0 ? 'Approved' : 'Disapproved';
196
+ env.logger.debug(`Getting commitmentId ${commitment.id} from contract`);
197
+ const contractCommitment = (await contractApi.query.getCommit(commitment.id)).value
198
+ .unwrap()
199
+ .unwrap();
200
+ expect(contractCommitment).to.be.not.empty;
201
+ expect(contractCommitment.status).to.be.equal(approved);
202
+ count++;
203
+ }
204
+ // Check the last batch commitment time
205
+ const lastBatchCommit = await providerTasks.db.getLastScheduledTaskStatus(ScheduledTaskNames.BatchCommitment);
206
+ expect(lastBatchCommit).to.be.not.empty;
207
+ expect(lastBatchCommit.status).to.be.equal('Completed');
208
+ // Expect the last batch commitment time to be within the last 10 seconds
209
+ if (lastBatchCommit !== undefined) {
210
+ expect(+Date.now() - +lastBatchCommit?.datetime).to.be.lessThan(waitTime * 2);
211
+ }
212
+ }
213
+ }
214
+ }
215
+ }, 24000);
216
+ });
217
+ //# sourceMappingURL=commitments.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commitments.test.js","sourceRoot":"","sources":["../../../src/tests/batch/commitments.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { ViteTestContext } from '@prosopo/env';
2
+ declare module 'vitest' {
3
+ interface TestContext extends ViteTestContext {
4
+ }
5
+ }
6
+ //# sourceMappingURL=helpers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.test.d.ts","sourceRoot":"","sources":["../../../src/tests/contract/helpers.test.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAM9C,OAAO,QAAQ,QAAQ,CAAC;IAEpB,UAAiB,WAAY,SAAQ,eAAe;KAAG;CAC1D"}
@@ -0,0 +1,58 @@
1
+ import { BN, hexToU8a } from '@polkadot/util';
2
+ import { LogLevel, ProsopoEnvError, getLogger, getPair } from '@prosopo/common';
3
+ import { MockEnvironment } from '@prosopo/env';
4
+ import { TypeDefInfo } from '@polkadot/types-create';
5
+ import { afterEach, beforeEach, describe, expect, test } from 'vitest';
6
+ import { at } from '@prosopo/util';
7
+ import { encodeStringArgs, wrapQuery } from '@prosopo/contract';
8
+ import { testConfig } from '@prosopo/config';
9
+ describe('CONTRACT HELPERS', function () {
10
+ const log = getLogger(LogLevel.enum.info, 'TEST');
11
+ beforeEach(async function (context) {
12
+ context.ss58Format = 42;
13
+ context.pairType = 'sr25519';
14
+ const alicePair = await getPair(context.pairType, context.ss58Format, '//Alice');
15
+ console.log(testConfig);
16
+ context.env = new MockEnvironment(alicePair, testConfig);
17
+ try {
18
+ await context.env.isReady();
19
+ }
20
+ catch (e) {
21
+ // TODO fix error handling
22
+ throw new ProsopoEnvError(e);
23
+ }
24
+ const promiseStakeDefault = wrapQuery(context.env.getContractInterface().query.getProviderStakeThreshold, context.env.getContractInterface().query)();
25
+ context.providerStakeThreshold = new BN((await promiseStakeDefault).toNumber());
26
+ });
27
+ afterEach(async ({ env }) => {
28
+ if (env && 'db' in env)
29
+ await env.db?.close();
30
+ });
31
+ test('Properly encodes `Hash` arguments when passed unhashed', async function ({ env }) {
32
+ try {
33
+ log.info('env ready');
34
+ const args = ['https://localhost:9229'];
35
+ const methodObj = {
36
+ args: [{ type: { type: 'Hash', info: TypeDefInfo.UInt }, name: '' }],
37
+ docs: [],
38
+ fromU8a: function () {
39
+ return {};
40
+ },
41
+ identifier: '',
42
+ index: 0,
43
+ method: '',
44
+ path: [''],
45
+ selector: hexToU8a('0x42b45efa'),
46
+ toU8a: function () {
47
+ return {};
48
+ },
49
+ };
50
+ expect(at(encodeStringArgs(env.getContractInterface().abi, methodObj, args), 0).toString()).to.equal(hexToU8a('0x0000000000000000000068747470733a2f2f6c6f63616c686f73743a39323239').toString());
51
+ log.info('end of test');
52
+ }
53
+ catch (e) {
54
+ throw new Error(String(e));
55
+ }
56
+ });
57
+ });
58
+ //# sourceMappingURL=helpers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.test.js","sourceRoot":"","sources":["../../../src/tests/contract/helpers.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export declare const captchaData: {
2
+ datasetId: string;
3
+ captchas: ({
4
+ salt: string;
5
+ solution: number[];
6
+ timeLimit: number;
7
+ items: {
8
+ hash: string;
9
+ data: string;
10
+ type: string;
11
+ }[];
12
+ target: string;
13
+ } | {
14
+ salt: string;
15
+ solution: number[];
16
+ items: {
17
+ hash: string;
18
+ data: string;
19
+ type: string;
20
+ }[];
21
+ target: string;
22
+ timeLimit?: undefined;
23
+ } | {
24
+ salt: string;
25
+ items: {
26
+ hash: string;
27
+ data: string;
28
+ type: string;
29
+ }[];
30
+ target: string;
31
+ solution?: undefined;
32
+ timeLimit?: undefined;
33
+ })[];
34
+ format: string;
35
+ timeLimit: number;
36
+ };
37
+ //# sourceMappingURL=captchas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"captchas.d.ts","sourceRoot":"","sources":["../../../src/tests/data/captchas.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAu3BvB,CAAA"}