@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,264 @@
1
+ import { accountAddress, accountContract, accountMnemonic } from '../accounts.js';
2
+ import { BN, stringToU8a } from '@polkadot/util';
3
+ import { ContractDeployer, ProsopoContractError, wrapQuery } from '@prosopo/contract';
4
+ import { DappPayee, Payee } from '@prosopo/captcha-contract';
5
+ import { ProsopoEnvError, getPair } from '@prosopo/common';
6
+ import { Tasks } from '../../tasks/index.js';
7
+ import { sendFunds as _sendFunds, getSendAmount, getStakeAmount } from './funds.js';
8
+ import { captchaData } from '../data/captchas.js';
9
+ import { createType } from '@polkadot/types';
10
+ import { get } from '@prosopo/util';
11
+ import { mnemonicGenerate, randomAsHex } from '@polkadot/util-crypto';
12
+ const urlBase = 'http://localhost:';
13
+ const PROVIDER_FEE = 10;
14
+ const PROVIDER_PAYEE = Payee.dapp;
15
+ export var IDatabasePopulatorMethodNames;
16
+ (function (IDatabasePopulatorMethodNames) {
17
+ IDatabasePopulatorMethodNames["registerProvider"] = "registerProvider";
18
+ IDatabasePopulatorMethodNames["registerProviderWithStake"] = "registerProviderWithStake";
19
+ IDatabasePopulatorMethodNames["registerProviderWithStakeAndDataset"] = "registerProviderWithStakeAndDataset";
20
+ IDatabasePopulatorMethodNames["registerDapp"] = "registerDapp";
21
+ IDatabasePopulatorMethodNames["registerDappWithStake"] = "registerDappWithStake";
22
+ IDatabasePopulatorMethodNames["registerDappUser"] = "registerDappUser";
23
+ })(IDatabasePopulatorMethodNames || (IDatabasePopulatorMethodNames = {}));
24
+ export class IDatabasePopulatorMethods {
25
+ }
26
+ class DatabasePopulator {
27
+ constructor(env, dappAbiMetadata, dappWasm) {
28
+ this._registeredProviders = [];
29
+ this._registeredProvidersWithStake = [];
30
+ this._registeredProvidersWithStakeAndDataset = [];
31
+ this._registeredDapps = [];
32
+ this._registeredDappsWithStake = [];
33
+ this._registeredDappUsers = [];
34
+ this.providerStakeDefault = 0;
35
+ this.stakeAmount = 0;
36
+ this.sendAmount = 0;
37
+ this.mockEnv = env;
38
+ this.dappAbiMetadata = dappAbiMetadata;
39
+ this.dappWasm = dappWasm;
40
+ this._isReady = this.mockEnv.isReady().then(() => {
41
+ try {
42
+ const tasks = new Tasks(this.mockEnv);
43
+ const promiseStakeDefault = wrapQuery(tasks.contract.query.getProviderStakeThreshold, tasks.contract.query)();
44
+ return promiseStakeDefault.then((res) => {
45
+ this.providerStakeDefault = new BN(res.toNumber());
46
+ this.stakeAmount = getStakeAmount(env, this.providerStakeDefault);
47
+ this.sendAmount = getSendAmount(env, this.stakeAmount);
48
+ });
49
+ }
50
+ catch (e) {
51
+ throw new Error(String(e));
52
+ }
53
+ });
54
+ }
55
+ get providers() {
56
+ return this._registeredProviders;
57
+ }
58
+ set providers(accounts) {
59
+ this._registeredProviders = accounts;
60
+ }
61
+ get providersWithStake() {
62
+ return this._registeredProvidersWithStake;
63
+ }
64
+ set providersWithStake(accounts) {
65
+ this._registeredProvidersWithStake = accounts;
66
+ }
67
+ get providersWithStakeAndDataset() {
68
+ return this._registeredProvidersWithStakeAndDataset;
69
+ }
70
+ set providersWithStakeAndDataset(accounts) {
71
+ this._registeredProvidersWithStakeAndDataset = accounts;
72
+ }
73
+ get dapps() {
74
+ return this._registeredDapps;
75
+ }
76
+ set dapps(accounts) {
77
+ this._registeredDapps = accounts;
78
+ }
79
+ get dappsWithStake() {
80
+ return this._registeredDappsWithStake;
81
+ }
82
+ set dappsWithStake(accounts) {
83
+ this._registeredDappsWithStake = accounts;
84
+ }
85
+ get dappUsers() {
86
+ return this._registeredDappUsers;
87
+ }
88
+ set dappUsers(accounts) {
89
+ this._registeredDappUsers = accounts;
90
+ }
91
+ isReady() {
92
+ return this._isReady;
93
+ }
94
+ createAccount() {
95
+ const account = this.createAccountAndAddToKeyring();
96
+ if (!account) {
97
+ throw new ProsopoEnvError('DEVELOPER.CREATE_ACCOUNT_FAILED');
98
+ }
99
+ return account;
100
+ }
101
+ createAccountAndAddToKeyring() {
102
+ const mnemonic = mnemonicGenerate();
103
+ const account = this.mockEnv.keyring.addFromMnemonic(mnemonic);
104
+ const { address } = account;
105
+ return [mnemonic, address];
106
+ }
107
+ sendFunds(account, payee, amount) {
108
+ const address = typeof account === 'string' ? account : accountAddress(account);
109
+ return _sendFunds(this.mockEnv, address, payee.toString(), amount);
110
+ }
111
+ async changeSigner(account) {
112
+ const mnemonic = typeof account === 'string' ? account : accountMnemonic(account);
113
+ if (!this.mockEnv.contractInterface) {
114
+ throw new ProsopoEnvError('DEVELOPER.NO_MOCK_ENV');
115
+ }
116
+ const ss58Format = 42;
117
+ const pairType = 'sr25519';
118
+ const pair = await getPair(pairType, ss58Format, mnemonic);
119
+ return this.mockEnv.changeSigner(pair);
120
+ }
121
+ async registerProvider(fund, url, noPush) {
122
+ try {
123
+ const urlString = url || urlBase + randomAsHex().slice(0, 8);
124
+ const _url = Array.from(stringToU8a(urlString));
125
+ const account = this.createAccount();
126
+ this.mockEnv.logger.debug('Registering provider', '`', accountAddress(account), '`', 'with service origin', urlString);
127
+ if (fund) {
128
+ await this.sendFunds(accountAddress(account), 'Provider', this.sendAmount);
129
+ }
130
+ await this.changeSigner(accountMnemonic(account));
131
+ const tasks = new Tasks(this.mockEnv);
132
+ // const providerMaxFee = await tasks.contractApi.getProviderMaxFee()
133
+ //
134
+ // console.log(providerMaxFee)
135
+ // process.exit()
136
+ await tasks.contract.tx.providerRegister(_url, PROVIDER_FEE, PROVIDER_PAYEE);
137
+ const provider = (await tasks.contract.query.getProvider(accountAddress(account))).value.unwrap().unwrap();
138
+ //console.log('Registered provider', provider)
139
+ if (!noPush) {
140
+ this._registeredProviders.push(account);
141
+ }
142
+ return account;
143
+ }
144
+ catch (e) {
145
+ throw this.createError(e, this.registerProvider.name);
146
+ }
147
+ }
148
+ async updateProvider(account, url) {
149
+ try {
150
+ await this.changeSigner(account);
151
+ const tasks = new Tasks(this.mockEnv);
152
+ await tasks.contract.tx.providerUpdate(Array.from(stringToU8a(url)), createType(this.mockEnv.getContractInterface().abi.registry, 'Balance', PROVIDER_FEE), PROVIDER_PAYEE, { value: this.stakeAmount });
153
+ //const provider = await tasks.contractApi.getProviderDetails(accountAddress(account))
154
+ //console.log('provider', provider)
155
+ }
156
+ catch (e) {
157
+ throw this.createError(e, this.updateProvider.name);
158
+ }
159
+ }
160
+ async registerProviderWithStake(fund) {
161
+ try {
162
+ const url = urlBase + randomAsHex().slice(0, 8);
163
+ const account = await this.registerProvider(fund, url, true);
164
+ await this.updateProvider(account, url);
165
+ this._registeredProvidersWithStake.push(account);
166
+ return account;
167
+ }
168
+ catch (e) {
169
+ throw this.createError(e, this.registerProviderWithStake.name);
170
+ }
171
+ }
172
+ async addDataset(account, datasetJSON) {
173
+ try {
174
+ await this.changeSigner(account);
175
+ const tasks = new Tasks(this.mockEnv);
176
+ await tasks.providerSetDatasetFromFile(datasetJSON);
177
+ }
178
+ catch (e) {
179
+ throw this.createError(e, this.addDataset.name);
180
+ }
181
+ }
182
+ async registerProviderWithStakeAndDataset(fund) {
183
+ try {
184
+ const url = urlBase + randomAsHex().slice(0, 8);
185
+ const account = await this.registerProvider(fund, url, true);
186
+ await this.updateProvider(account, url);
187
+ const datasetJSON = JSON.parse(JSON.stringify(captchaData));
188
+ await this.addDataset(account, datasetJSON);
189
+ this._registeredProvidersWithStakeAndDataset.push(account);
190
+ return account;
191
+ }
192
+ catch (e) {
193
+ throw this.createError(e, this.registerProviderWithStakeAndDataset.name);
194
+ }
195
+ }
196
+ async registerDapp(fund, url, noPush) {
197
+ try {
198
+ const account = this.createAccount();
199
+ this.mockEnv.logger.debug('Sending funds to `', accountAddress(account), '`');
200
+ if (fund) {
201
+ await this.sendFunds(accountAddress(account), 'Dapp', this.sendAmount);
202
+ }
203
+ this.mockEnv.logger.debug('Changing signer to `', accountAddress(account), '`');
204
+ await this.changeSigner(accountMnemonic(account));
205
+ this.mockEnv.logger.debug('Pair address`', this.mockEnv.pair.address, '`');
206
+ const tasks = new Tasks(this.mockEnv);
207
+ const dappParams = ['1000000000000000000', 1000, this.mockEnv.getContractInterface().address, 65, 1000000];
208
+ const deployer = new ContractDeployer(this.mockEnv.getApi(), this.dappAbiMetadata, this.dappWasm, this.mockEnv.pair, dappParams, 0, 0, randomAsHex(), this.mockEnv.config.logLevel);
209
+ const deployResult = await deployer.deploy();
210
+ const instantiateEvent = deployResult.events.find((event) => event.event.section === 'contracts' && event.event.method === 'Instantiated');
211
+ const contractAddress = String(get(instantiateEvent?.event.data, 'contract'));
212
+ account.push(contractAddress);
213
+ this.mockEnv.logger.debug('Dapp contract address', contractAddress);
214
+ const queryResult = await tasks.contract.query.dappRegister(contractAddress, DappPayee.dapp);
215
+ const error = queryResult.value.err || queryResult.value.ok?.err;
216
+ if (error) {
217
+ throw new ProsopoContractError(error);
218
+ }
219
+ await tasks.contract.tx.dappRegister(contractAddress, DappPayee.dapp);
220
+ const dapp = await tasks.contract.query.getDapp(contractAddress);
221
+ this.mockEnv.logger.debug('Dapp registered', dapp.value.unwrap().unwrap());
222
+ if (!noPush) {
223
+ this._registeredDapps.push(account);
224
+ }
225
+ return account;
226
+ }
227
+ catch (e) {
228
+ throw this.createError(e, this.registerDapp.name);
229
+ }
230
+ }
231
+ async dappFund(account) {
232
+ await this.changeSigner(account);
233
+ const tasks = new Tasks(this.mockEnv);
234
+ await tasks.contract.tx.dappFund(accountContract(account), { value: this.stakeAmount });
235
+ }
236
+ async registerDappWithStake(fund) {
237
+ try {
238
+ const url = urlBase + randomAsHex().slice(0, 8);
239
+ const account = await this.registerDapp(fund, url, true);
240
+ await this.dappFund(account);
241
+ this._registeredDappsWithStake.push(account);
242
+ return account;
243
+ }
244
+ catch (e) {
245
+ throw new Error(String(e));
246
+ }
247
+ }
248
+ async registerDappUser(fund) {
249
+ const account = this.createAccount();
250
+ if (fund) {
251
+ await this.sendFunds(accountAddress(account), 'DappUser', this.sendAmount);
252
+ }
253
+ this._registeredDappUsers.push(account);
254
+ return account;
255
+ }
256
+ createError(err, functionName) {
257
+ const e = {
258
+ error: err,
259
+ };
260
+ return new ProsopoEnvError('DEVELOPER.CREATE_ACCOUNT_FAILED', functionName, undefined, e);
261
+ }
262
+ }
263
+ export default DatabasePopulator;
264
+ //# sourceMappingURL=DatabasePopulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatabasePopulator.js","sourceRoot":"","sources":["../../../src/tests/dataUtils/DatabasePopulator.ts"],"names":[],"mappings":"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"}