@cheqd/sdk 3.0.2-develop.1 → 3.0.2-develop.2

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 (56) hide show
  1. package/package.json +8 -2
  2. package/.github/ISSUE_TEMPLATE/bug-report.yml +0 -74
  3. package/.github/ISSUE_TEMPLATE/config.yml +0 -14
  4. package/.github/ISSUE_TEMPLATE/feature-request.yaml +0 -27
  5. package/.github/dependabot.yml +0 -43
  6. package/.github/linters/.commitlint.rules.cjs +0 -37
  7. package/.github/linters/.eslintrc.json +0 -18
  8. package/.github/linters/.markdown-lint.yml +0 -139
  9. package/.github/linters/mlc_config.json +0 -13
  10. package/.github/workflows/build.yml +0 -26
  11. package/.github/workflows/cleanup-actions.yml +0 -45
  12. package/.github/workflows/cleanup-cache-automatic.yml +0 -24
  13. package/.github/workflows/cleanup-cache-manual.yml +0 -21
  14. package/.github/workflows/codeql.yml +0 -40
  15. package/.github/workflows/dispatch.yml +0 -30
  16. package/.github/workflows/lint.yml +0 -51
  17. package/.github/workflows/pull-request.yml +0 -48
  18. package/.github/workflows/release.yml +0 -42
  19. package/.github/workflows/test.yml +0 -66
  20. package/.releaserc.json +0 -61
  21. package/CHANGELOG.md +0 -320
  22. package/CODE_OF_CONDUCT.md +0 -81
  23. package/NOTICE.md +0 -10
  24. package/SECURITY.md +0 -12
  25. package/docker/Dockerfile +0 -55
  26. package/docker/entrypoint.sh +0 -58
  27. package/docker/localnet/build-latest.env +0 -7
  28. package/docker/localnet/container-env/observer-0.env +0 -13
  29. package/docker/localnet/container-env/seed-0.env +0 -17
  30. package/docker/localnet/container-env/validator-0.env +0 -13
  31. package/docker/localnet/container-env/validator-1.env +0 -13
  32. package/docker/localnet/container-env/validator-2.env +0 -13
  33. package/docker/localnet/container-env/validator-3.env +0 -13
  34. package/docker/localnet/docker-compose.yml +0 -281
  35. package/docker/localnet/gen-network-config.sh +0 -259
  36. package/docker/localnet/import-keys.sh +0 -31
  37. package/jest.config.cjs +0 -20
  38. package/src/index.ts +0 -192
  39. package/src/modules/_.ts +0 -61
  40. package/src/modules/did.ts +0 -601
  41. package/src/modules/resource.ts +0 -247
  42. package/src/querier.ts +0 -36
  43. package/src/registry.ts +0 -13
  44. package/src/signer.ts +0 -297
  45. package/src/types.ts +0 -110
  46. package/src/utils.ts +0 -246
  47. package/tests/index.test.ts +0 -155
  48. package/tests/modules/did.test.ts +0 -985
  49. package/tests/modules/resource.test.ts +0 -991
  50. package/tests/signer.test.ts +0 -202
  51. package/tests/testutils.test.ts +0 -29
  52. package/tests/utils.test.ts +0 -77
  53. package/tsconfig.cjs.json +0 -8
  54. package/tsconfig.esm.json +0 -8
  55. package/tsconfig.json +0 -84
  56. package/tsconfig.types.json +0 -10
@@ -1,985 +0,0 @@
1
- import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"
2
- import { DeliverTxResponse } from "@cosmjs/stargate"
3
- import {
4
- fromString,
5
- toString
6
- } from 'uint8arrays'
7
- import { DIDModule } from "../../src"
8
- import { createDefaultCheqdRegistry } from "../../src/registry"
9
- import { CheqdSigningStargateClient } from "../../src/signer"
10
- import {
11
- DIDDocument,
12
- ISignInputs,
13
- MethodSpecificIdAlgo,
14
- VerificationMethods
15
- } from "../../src/types"
16
- import {
17
- createDidPayload,
18
- createDidVerificationMethod,
19
- createKeyPairBase64,
20
- createVerificationKeys
21
- } from "../../src/utils"
22
- import {
23
- localnet,
24
- faucet,
25
- containsAll
26
- } from "../testutils.test"
27
- import { CheqdQuerier } from '../../src/querier';
28
- import {
29
- setupDidExtension,
30
- DidExtension
31
- } from '../../src/modules/did';
32
- import { v4 } from "uuid"
33
-
34
- const defaultAsyncTxTimeout = 30000
35
-
36
- describe('DIDModule', () => {
37
- describe('constructor', () => {
38
- it('should instantiate standalone module', async () => {
39
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic)
40
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet)
41
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
42
- const didModule = new DIDModule(signer, querier)
43
- expect(didModule).toBeInstanceOf(DIDModule)
44
- })
45
- })
46
-
47
- describe('createDidDocTx', () => {
48
- it('should create a new multibase DID - case: Ed25519VerificationKey2020', async () => {
49
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
50
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
51
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
52
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
53
- const didModule = new DIDModule(signer, querier)
54
- const keyPair = createKeyPairBase64()
55
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
56
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
57
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
58
-
59
- const signInputs: ISignInputs[] = [
60
- {
61
- verificationMethodId: didPayload.verificationMethod![0].id,
62
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
63
- }
64
- ]
65
-
66
- const feePayer = (await wallet.getAccounts())[0].address
67
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
68
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
69
- signInputs,
70
- didPayload,
71
- feePayer,
72
- fee
73
- )
74
-
75
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
76
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
77
-
78
- expect(didTx.code).toBe(0)
79
- }, defaultAsyncTxTimeout)
80
-
81
- it('should create a new multibase DID - case: Ed25519VerificationKey2018', async () => {
82
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
83
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
84
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
85
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
86
- const didModule = new DIDModule(signer, querier)
87
- const keyPair = createKeyPairBase64()
88
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
89
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
90
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
91
-
92
- const signInputs: ISignInputs[] = [
93
- {
94
- verificationMethodId: didPayload.verificationMethod![0].id,
95
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
96
- }
97
- ]
98
- const feePayer = (await wallet.getAccounts())[0].address
99
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
100
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
101
- signInputs,
102
- didPayload,
103
- feePayer,
104
- fee
105
- )
106
-
107
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
108
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
109
-
110
- expect(didTx.code).toBe(0)
111
- }, defaultAsyncTxTimeout)
112
-
113
- it('should create a new multibase DID - case: JsonWebKey2020', async () => {
114
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
115
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
116
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
117
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
118
- const didModule = new DIDModule(signer, querier)
119
- const keyPair = createKeyPairBase64()
120
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
121
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
122
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
123
-
124
- const signInputs: ISignInputs[] = [
125
- {
126
- verificationMethodId: didPayload.verificationMethod![0].id,
127
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
128
- }
129
- ]
130
- const feePayer = (await wallet.getAccounts())[0].address
131
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
132
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
133
- signInputs,
134
- didPayload,
135
- feePayer,
136
- fee
137
- )
138
-
139
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
140
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
141
-
142
- expect(didTx.code).toBe(0)
143
- }, defaultAsyncTxTimeout)
144
-
145
- it('should create a new uuid DID - case: Ed25519VerificationKey2020', async () => {
146
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
147
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
148
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
149
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
150
- const didModule = new DIDModule(signer, querier)
151
- const keyPair = createKeyPairBase64()
152
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
153
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
154
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
155
- const signInputs: ISignInputs[] = [
156
- {
157
- verificationMethodId: didPayload.verificationMethod![0].id,
158
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
159
- }
160
- ]
161
- const feePayer = (await wallet.getAccounts())[0].address
162
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
163
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
164
- signInputs,
165
- didPayload,
166
- feePayer,
167
- fee
168
- )
169
-
170
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
171
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
172
-
173
- expect(didTx.code).toBe(0)
174
- }, defaultAsyncTxTimeout)
175
-
176
- it('should create a new uuid DID - case: Ed25519VerificationKey2018', async () => {
177
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
178
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
179
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
180
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
181
- const didModule = new DIDModule(signer, querier)
182
- const keyPair = createKeyPairBase64()
183
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
184
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
185
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
186
- const signInputs: ISignInputs[] = [
187
- {
188
- verificationMethodId: didPayload.verificationMethod![0].id,
189
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
190
- }
191
- ]
192
- const feePayer = (await wallet.getAccounts())[0].address
193
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
194
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
195
- signInputs,
196
- didPayload,
197
- feePayer,
198
- fee
199
- )
200
-
201
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
202
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
203
-
204
- expect(didTx.code).toBe(0)
205
- }, defaultAsyncTxTimeout)
206
-
207
- it('should create a new uuid DID - case: JsonWebKey2020', async () => {
208
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
209
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
210
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
211
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
212
- const didModule = new DIDModule(signer, querier)
213
- const keyPair = createKeyPairBase64()
214
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
215
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
216
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
217
- const signInputs: ISignInputs[] = [
218
- {
219
- verificationMethodId: didPayload.verificationMethod![0].id,
220
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
221
- }
222
- ]
223
- const feePayer = (await wallet.getAccounts())[0].address
224
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
225
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
226
- signInputs,
227
- didPayload,
228
- feePayer,
229
- fee
230
- )
231
-
232
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
233
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
234
-
235
- expect(didTx.code).toBe(0)
236
- }, defaultAsyncTxTimeout)
237
- })
238
-
239
- describe('updateDidDocTx', () => {
240
- it('should update a DID - case: Ed25519VerificationKey2020', async () => {
241
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
242
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
243
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
244
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
245
- const didModule = new DIDModule(signer, querier)
246
-
247
- const keyPair = createKeyPairBase64()
248
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
249
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
250
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
251
- const signInputs: ISignInputs[] = [
252
- {
253
- verificationMethodId: didPayload.verificationMethod![0].id,
254
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
255
- }
256
- ]
257
- const feePayer = (await wallet.getAccounts())[0].address
258
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
259
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
260
- signInputs,
261
- didPayload,
262
- feePayer,
263
- fee
264
- )
265
-
266
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
267
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
268
-
269
- expect(didTx.code).toBe(0)
270
-
271
- // update the did document
272
- const updateDidPayload = {
273
- '@context': didPayload?.['@context'],
274
- id: didPayload.id,
275
- controller: didPayload.controller,
276
- verificationMethod: didPayload.verificationMethod,
277
- authentication: didPayload.authentication,
278
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
279
- } as DIDDocument
280
-
281
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
282
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
283
- signInputs,
284
- updateDidPayload,
285
- feePayer,
286
- feeUpdate
287
- )
288
-
289
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
290
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
291
-
292
- expect(updateDidDocTx.code).toBe(0)
293
- }, defaultAsyncTxTimeout)
294
-
295
- it('should update a DID - case: Ed25519VerificationKey2018', async () => {
296
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
297
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
298
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
299
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
300
- const didModule = new DIDModule(signer, querier)
301
-
302
- const keyPair = createKeyPairBase64()
303
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
304
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
305
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
306
- const signInputs: ISignInputs[] = [
307
- {
308
- verificationMethodId: didPayload.verificationMethod![0].id,
309
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
310
- }
311
- ]
312
- const feePayer = (await wallet.getAccounts())[0].address
313
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
314
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
315
- signInputs,
316
- didPayload,
317
- feePayer,
318
- fee
319
- )
320
-
321
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
322
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
323
-
324
- expect(didTx.code).toBe(0)
325
-
326
- // update the did document
327
- const updateDidPayload = {
328
- '@context': didPayload?.['@context'],
329
- id: didPayload.id,
330
- controller: didPayload.controller,
331
- verificationMethod: didPayload.verificationMethod,
332
- authentication: didPayload.authentication,
333
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
334
- } as DIDDocument
335
-
336
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
337
-
338
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
339
- signInputs,
340
- updateDidPayload,
341
- feePayer,
342
- feeUpdate
343
- )
344
-
345
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
346
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
347
-
348
- expect(updateDidDocTx.code).toBe(0)
349
- }, defaultAsyncTxTimeout)
350
-
351
- it('should update a DID - case: JsonWebKey2020', async () => {
352
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
353
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
354
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
355
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
356
- const didModule = new DIDModule(signer, querier)
357
-
358
- const keyPair = createKeyPairBase64()
359
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
360
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
361
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
362
- const signInputs: ISignInputs[] = [
363
- {
364
- verificationMethodId: didPayload.verificationMethod![0].id,
365
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
366
- }
367
- ]
368
- const feePayer = (await wallet.getAccounts())[0].address
369
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
370
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
371
- signInputs,
372
- didPayload,
373
- feePayer,
374
- fee
375
- )
376
-
377
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
378
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
379
-
380
- expect(didTx.code).toBe(0)
381
-
382
- // update the did document
383
- const updateDidPayload = {
384
- '@context': didPayload?.['@context'],
385
- id: didPayload.id,
386
- controller: didPayload.controller,
387
- verificationMethod: didPayload.verificationMethod,
388
- authentication: didPayload.authentication,
389
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
390
- } as DIDDocument
391
-
392
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
393
-
394
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
395
- signInputs,
396
- updateDidPayload,
397
- feePayer,
398
- feeUpdate
399
- )
400
-
401
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
402
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
403
-
404
- expect(updateDidDocTx.code).toBe(0)
405
- }, defaultAsyncTxTimeout)
406
- })
407
-
408
- describe('deactivateDidDocTx', () => {
409
- it('should deactivate a DID - case: Ed25519VerificationKey2020', async () => {
410
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
411
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
412
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
413
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
414
- const didModule = new DIDModule(signer, querier)
415
-
416
- const keyPair = createKeyPairBase64()
417
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
418
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
419
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
420
- const signInputs: ISignInputs[] = [
421
- {
422
- verificationMethodId: didPayload.verificationMethod![0].id,
423
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
424
- }
425
- ]
426
- const feePayer = (await wallet.getAccounts())[0].address
427
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
428
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
429
- signInputs,
430
- didPayload,
431
- feePayer,
432
- fee
433
- )
434
-
435
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
436
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
437
-
438
- expect(didTx.code).toBe(0)
439
-
440
- // deactivate the did document
441
- const deactivateDidPayload = {
442
- id: didPayload.id,
443
- verificationMethod: didPayload.verificationMethod,
444
- } as DIDDocument
445
-
446
- const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
447
-
448
- const deactivateDidDocTx: DeliverTxResponse = await didModule.deactivateDidDocTx(
449
- signInputs,
450
- deactivateDidPayload,
451
- feePayer,
452
- feeDeactivate
453
- )
454
-
455
- console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
456
- console.warn(`DID Tx: ${JSON.stringify(deactivateDidDocTx)}`)
457
-
458
- expect(deactivateDidDocTx.code).toBe(0)
459
- }, defaultAsyncTxTimeout)
460
-
461
- it('should deactivate a DID - case: Ed25519VerificationKey2018', async () => {
462
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
463
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
464
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
465
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
466
- const didModule = new DIDModule(signer, querier)
467
-
468
- const keyPair = createKeyPairBase64()
469
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
470
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
471
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
472
- const signInputs: ISignInputs[] = [
473
- {
474
- verificationMethodId: didPayload.verificationMethod![0].id,
475
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
476
- }
477
- ]
478
- const feePayer = (await wallet.getAccounts())[0].address
479
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
480
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
481
- signInputs,
482
- didPayload,
483
- feePayer,
484
- fee
485
- )
486
-
487
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
488
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
489
-
490
- expect(didTx.code).toBe(0)
491
-
492
- // deactivate the did document
493
- const deactivateDidPayload = {
494
- id: didPayload.id,
495
- verificationMethod: didPayload.verificationMethod,
496
- } as DIDDocument
497
-
498
- const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
499
-
500
- const deactivateDidDocTx: DeliverTxResponse = await didModule.deactivateDidDocTx(
501
- signInputs,
502
- deactivateDidPayload,
503
- feePayer,
504
- feeDeactivate
505
- )
506
-
507
- console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
508
- console.warn(`DID Tx: ${JSON.stringify(deactivateDidDocTx)}`)
509
-
510
- expect(deactivateDidDocTx.code).toBe(0)
511
- }, defaultAsyncTxTimeout)
512
-
513
- it('should deactivate a DID - case: JsonWebKey2020', async () => {
514
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
515
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
516
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
517
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
518
- const didModule = new DIDModule(signer, querier)
519
-
520
- const keyPair = createKeyPairBase64()
521
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
522
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
523
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
524
- const signInputs: ISignInputs[] = [
525
- {
526
- verificationMethodId: didPayload.verificationMethod![0].id,
527
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
528
- }
529
- ]
530
- const feePayer = (await wallet.getAccounts())[0].address
531
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
532
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
533
- signInputs,
534
- didPayload,
535
- feePayer,
536
- fee
537
- )
538
-
539
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
540
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
541
-
542
- expect(didTx.code).toBe(0)
543
-
544
- // deactivate the did document
545
- const deactivateDidPayload = {
546
- id: didPayload.id,
547
- verificationMethod: didPayload.verificationMethod,
548
- } as DIDDocument
549
-
550
- const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
551
-
552
- const deactivateDidDocTx: DeliverTxResponse = await didModule.deactivateDidDocTx(
553
- signInputs,
554
- deactivateDidPayload,
555
- feePayer,
556
- feeDeactivate
557
- )
558
-
559
- console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
560
- console.warn(`DID Tx: ${JSON.stringify(deactivateDidDocTx)}`)
561
-
562
- expect(deactivateDidDocTx.code).toBe(0)
563
- }, defaultAsyncTxTimeout)
564
- })
565
-
566
- describe('queryDidDoc', () => {
567
- it('should query a DID document - case: Ed25519VerificationKey2020', async () => {
568
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
569
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
570
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
571
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
572
- const didModule = new DIDModule(signer, querier)
573
-
574
- const keyPair = createKeyPairBase64()
575
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
576
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
577
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
578
- const signInputs: ISignInputs[] = [
579
- {
580
- verificationMethodId: didPayload.verificationMethod![0].id,
581
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
582
- }
583
- ]
584
- const feePayer = (await wallet.getAccounts())[0].address
585
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
586
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
587
- signInputs,
588
- didPayload,
589
- feePayer,
590
- fee
591
- )
592
-
593
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
594
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
595
-
596
- expect(didTx.code).toBe(0)
597
-
598
- const didDoc = await didModule.queryDidDoc(didPayload.id)
599
-
600
- expect(didDoc.didDocument!.id).toEqual(didPayload.id)
601
- expect(didDoc.didDocument!.controller).toEqual(didPayload.controller)
602
- expect(didDoc.didDocument!.verificationMethod).toEqual(didPayload.verificationMethod)
603
-
604
- // we keep 1-1 relationship of omitempty fields in proto and spec compliant json
605
- // while converting from proto to spec compliant json, we remove omitempty fields
606
- // as in a resolved did document
607
- expect(didDoc.didDocument?.authentication).toEqual(didPayload?.authentication)
608
- expect(didDoc.didDocument?.assertionMethod).toEqual(didPayload?.assertionMethod)
609
- expect(didDoc.didDocument?.capabilityInvocation).toEqual(didPayload?.capabilityInvocation)
610
- expect(didDoc.didDocument?.capabilityDelegation).toEqual(didPayload?.capabilityDelegation)
611
- expect(didDoc.didDocument?.keyAgreement).toEqual(didPayload?.keyAgreement)
612
- expect(didDoc.didDocument?.service).toEqual(didPayload?.service)
613
- expect(didDoc.didDocument?.alsoKnownAs).toEqual(didPayload?.alsoKnownAs)
614
- }, defaultAsyncTxTimeout)
615
-
616
- it('should query a DID document - case: Ed25519VerificationKey2018', async () => {
617
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
618
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
619
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
620
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
621
- const didModule = new DIDModule(signer, querier)
622
-
623
- const keyPair = createKeyPairBase64()
624
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
625
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
626
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
627
- const signInputs: ISignInputs[] = [
628
- {
629
- verificationMethodId: didPayload.verificationMethod![0].id,
630
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
631
- }
632
- ]
633
- const feePayer = (await wallet.getAccounts())[0].address
634
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
635
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
636
- signInputs,
637
- didPayload,
638
- feePayer,
639
- fee
640
- )
641
-
642
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
643
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
644
-
645
- expect(didTx.code).toBe(0)
646
-
647
- const didDoc = await didModule.queryDidDoc(didPayload.id)
648
-
649
- expect(didDoc.didDocument!.id).toEqual(didPayload.id)
650
- expect(didDoc.didDocument!.controller).toEqual(didPayload.controller)
651
- expect(didDoc.didDocument!.verificationMethod).toEqual(didPayload.verificationMethod)
652
-
653
- // we keep 1-1 relationship of omitempty fields in proto and spec compliant json
654
- // while converting from proto to spec compliant json, we remove omitempty fields
655
- // as in a resolved did document
656
- expect(didDoc.didDocument?.authentication).toEqual(didPayload?.authentication)
657
- expect(didDoc.didDocument?.assertionMethod).toEqual(didPayload?.assertionMethod)
658
- expect(didDoc.didDocument?.capabilityInvocation).toEqual(didPayload?.capabilityInvocation)
659
- expect(didDoc.didDocument?.capabilityDelegation).toEqual(didPayload?.capabilityDelegation)
660
- expect(didDoc.didDocument?.keyAgreement).toEqual(didPayload?.keyAgreement)
661
- expect(didDoc.didDocument?.service).toEqual(didPayload?.service)
662
- expect(didDoc.didDocument?.alsoKnownAs).toEqual(didPayload?.alsoKnownAs)
663
- }, defaultAsyncTxTimeout)
664
-
665
- it('should query a DID document - case: JsonWebKey2020', async () => {
666
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
667
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
668
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
669
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
670
- const didModule = new DIDModule(signer, querier)
671
-
672
- const keyPair = createKeyPairBase64()
673
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
674
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
675
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
676
- const signInputs: ISignInputs[] = [
677
- {
678
- verificationMethodId: didPayload.verificationMethod![0].id,
679
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
680
- }
681
- ]
682
- const feePayer = (await wallet.getAccounts())[0].address
683
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
684
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
685
- signInputs,
686
- didPayload,
687
- feePayer,
688
- fee
689
- )
690
-
691
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
692
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
693
-
694
- expect(didTx.code).toBe(0)
695
-
696
- const didDoc = await didModule.queryDidDoc(didPayload.id)
697
-
698
- expect(didDoc.didDocument!.id).toEqual(didPayload.id)
699
- expect(didDoc.didDocument!.controller).toEqual(didPayload.controller)
700
- expect(didDoc.didDocument!.verificationMethod).toEqual(didPayload.verificationMethod)
701
-
702
- // we keep 1-1 relationship of omitempty fields in proto and spec compliant json
703
- // while converting from proto to spec compliant json, we remove omitempty fields
704
- // as in a resolved did document
705
- expect(didDoc.didDocument?.authentication).toEqual(didPayload?.authentication)
706
- expect(didDoc.didDocument?.assertionMethod).toEqual(didPayload?.assertionMethod)
707
- expect(didDoc.didDocument?.capabilityInvocation).toEqual(didPayload?.capabilityInvocation)
708
- expect(didDoc.didDocument?.capabilityDelegation).toEqual(didPayload?.capabilityDelegation)
709
- expect(didDoc.didDocument?.keyAgreement).toEqual(didPayload?.keyAgreement)
710
- expect(didDoc.didDocument?.service).toEqual(didPayload?.service)
711
- expect(didDoc.didDocument?.alsoKnownAs).toEqual(didPayload?.alsoKnownAs)
712
- }, defaultAsyncTxTimeout)
713
- })
714
-
715
- describe('queryDidDocVersion', () => {
716
- it('should query a DID document version - case: Ed25519VerificationKey2020', async () => {
717
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
718
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
719
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
720
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
721
- const didModule = new DIDModule(signer, querier)
722
-
723
- const keyPair = createKeyPairBase64()
724
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
725
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
726
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
727
- const signInputs: ISignInputs[] = [
728
- {
729
- verificationMethodId: didPayload.verificationMethod![0].id,
730
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
731
- }
732
- ]
733
- const feePayer = (await wallet.getAccounts())[0].address
734
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
735
- const versionId = v4()
736
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
737
- signInputs,
738
- didPayload,
739
- feePayer,
740
- fee,
741
- undefined,
742
- versionId
743
- )
744
-
745
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
746
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
747
-
748
- expect(didTx.code).toBe(0)
749
-
750
- const didDocVersion = await didModule.queryDidDocVersion(didPayload.id, versionId)
751
-
752
- expect(didDocVersion.didDocument!.id).toEqual(didPayload.id)
753
- expect(didDocVersion.didDocument!.controller).toEqual(didPayload.controller)
754
- expect(didDocVersion.didDocument!.verificationMethod).toEqual(didPayload.verificationMethod)
755
-
756
- // we keep 1-1 relationship of omitempty fields in proto and spec compliant json
757
- // while converting from proto to spec compliant json, we remove omitempty fields
758
- // as in a resolved did document
759
- expect(didDocVersion.didDocument?.authentication).toEqual(didPayload?.authentication)
760
- expect(didDocVersion.didDocument?.assertionMethod).toEqual(didPayload?.assertionMethod)
761
- expect(didDocVersion.didDocument?.capabilityInvocation).toEqual(didPayload?.capabilityInvocation)
762
- expect(didDocVersion.didDocument?.capabilityDelegation).toEqual(didPayload?.capabilityDelegation)
763
- expect(didDocVersion.didDocument?.keyAgreement).toEqual(didPayload?.keyAgreement)
764
- expect(didDocVersion.didDocument?.service).toEqual(didPayload?.service)
765
- expect(didDocVersion.didDocument?.alsoKnownAs).toEqual(didPayload?.alsoKnownAs)
766
-
767
- expect(didDocVersion.didDocumentMetadata.versionId).toEqual(versionId)
768
- }, defaultAsyncTxTimeout)
769
- })
770
-
771
- describe('queryAllDidDocVersionsMetadata', () => {
772
- it('should query all DID document versions metadata - case: Ed25519VerificationKey2020', async () => {
773
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
774
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
775
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
776
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
777
- const didModule = new DIDModule(signer, querier)
778
-
779
- const keyPair = createKeyPairBase64()
780
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
781
- const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
782
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
783
- const signInputs: ISignInputs[] = [
784
- {
785
- verificationMethodId: didPayload.verificationMethod![0].id,
786
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
787
- }
788
- ]
789
- const feePayer = (await wallet.getAccounts())[0].address
790
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
791
- const versionId = v4()
792
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
793
- signInputs,
794
- didPayload,
795
- feePayer,
796
- fee,
797
- undefined,
798
- versionId
799
- )
800
-
801
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
802
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
803
-
804
- expect(didTx.code).toBe(0)
805
-
806
- // update the did document
807
- const updateVersionId = v4()
808
- const updateDidPayload = {
809
- '@context': didPayload?.['@context'],
810
- id: didPayload.id,
811
- controller: didPayload.controller,
812
- verificationMethod: didPayload.verificationMethod,
813
- authentication: didPayload.authentication,
814
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
815
- } as DIDDocument
816
-
817
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
818
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
819
- signInputs,
820
- updateDidPayload,
821
- feePayer,
822
- feeUpdate,
823
- undefined,
824
- updateVersionId
825
- )
826
-
827
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
828
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
829
-
830
- expect(updateDidDocTx.code).toBe(0)
831
-
832
- const didDocVersionsMetadata = await didModule.queryAllDidDocVersionsMetadata(didPayload.id)
833
-
834
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata).toHaveLength(2)
835
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0].versionId, didDocVersionsMetadata.didDocumentVersionsMetadata[1].versionId], [versionId, updateVersionId])).toBe(true)
836
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].created).toBeDefined()
837
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].created).toBeDefined()
838
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0]?.updated, didDocVersionsMetadata.didDocumentVersionsMetadata[1]?.updated], [undefined])).toBe(true)
839
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].deactivated).toBe(false)
840
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].deactivated).toBe(false)
841
- }, defaultAsyncTxTimeout)
842
-
843
- it('should query all DID document versions metadata - case: JsonWebKey2020', async () => {
844
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
845
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
846
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
847
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
848
- const didModule = new DIDModule(signer, querier)
849
-
850
- const keyPair = createKeyPairBase64()
851
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
852
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
853
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
854
- const signInputs: ISignInputs[] = [
855
- {
856
- verificationMethodId: didPayload.verificationMethod![0].id,
857
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
858
- }
859
- ]
860
- const feePayer = (await wallet.getAccounts())[0].address
861
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
862
- const versionId = v4()
863
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
864
- signInputs,
865
- didPayload,
866
- feePayer,
867
- fee,
868
- undefined,
869
- versionId
870
- )
871
-
872
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
873
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
874
-
875
- expect(didTx.code).toBe(0)
876
-
877
- // update the did document
878
- const updateVersionId = v4()
879
- const updateDidPayload = {
880
- '@context': didPayload?.['@context'],
881
- id: didPayload.id,
882
- controller: didPayload.controller,
883
- verificationMethod: didPayload.verificationMethod,
884
- authentication: didPayload.authentication,
885
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
886
- } as DIDDocument
887
-
888
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
889
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
890
- signInputs,
891
- updateDidPayload,
892
- feePayer,
893
- feeUpdate,
894
- undefined,
895
- updateVersionId
896
- )
897
-
898
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
899
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
900
-
901
- expect(updateDidDocTx.code).toBe(0)
902
-
903
- const didDocVersionsMetadata = await didModule.queryAllDidDocVersionsMetadata(didPayload.id)
904
-
905
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata).toHaveLength(2)
906
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0].versionId, didDocVersionsMetadata.didDocumentVersionsMetadata[1].versionId], [versionId, updateVersionId])).toBe(true)
907
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].created).toBeDefined()
908
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].created).toBeDefined()
909
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0]?.updated, didDocVersionsMetadata.didDocumentVersionsMetadata[1]?.updated], [undefined])).toBe(true)
910
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].deactivated).toBe(false)
911
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].deactivated).toBe(false)
912
- }, defaultAsyncTxTimeout)
913
-
914
- it('should query all DID document versions metadata - case: Ed25519VerificationKey2018', async () => {
915
- const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
916
- const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
917
- const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
918
- const querier = await CheqdQuerier.connectWithExtension(localnet.rpcUrl, setupDidExtension) as CheqdQuerier & DidExtension
919
- const didModule = new DIDModule(signer, querier)
920
-
921
- const keyPair = createKeyPairBase64()
922
- const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
923
- const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
924
- const didPayload = createDidPayload(verificationMethods, [verificationKeys])
925
- const signInputs: ISignInputs[] = [
926
- {
927
- verificationMethodId: didPayload.verificationMethod![0].id,
928
- privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
929
- }
930
- ]
931
- const feePayer = (await wallet.getAccounts())[0].address
932
- const fee = await DIDModule.generateCreateDidDocFees(feePayer)
933
- const versionId = v4()
934
- const didTx: DeliverTxResponse = await didModule.createDidDocTx(
935
- signInputs,
936
- didPayload,
937
- feePayer,
938
- fee,
939
- undefined,
940
- versionId
941
- )
942
-
943
- console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
944
- console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
945
-
946
- expect(didTx.code).toBe(0)
947
-
948
- // update the did document
949
- const updateVersionId = v4()
950
- const updateDidPayload = {
951
- '@context': didPayload?.['@context'],
952
- id: didPayload.id,
953
- controller: didPayload.controller,
954
- verificationMethod: didPayload.verificationMethod,
955
- authentication: didPayload.authentication,
956
- assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
957
- } as DIDDocument
958
-
959
- const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
960
- const updateDidDocTx: DeliverTxResponse = await didModule.updateDidDocTx(
961
- signInputs,
962
- updateDidPayload,
963
- feePayer,
964
- feeUpdate,
965
- undefined,
966
- updateVersionId
967
- )
968
-
969
- console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
970
- console.warn(`DID Tx: ${JSON.stringify(updateDidDocTx)}`)
971
-
972
- expect(updateDidDocTx.code).toBe(0)
973
-
974
- const didDocVersionsMetadata = await didModule.queryAllDidDocVersionsMetadata(didPayload.id)
975
-
976
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata).toHaveLength(2)
977
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0].versionId, didDocVersionsMetadata.didDocumentVersionsMetadata[1].versionId], [versionId, updateVersionId])).toBe(true)
978
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].created).toBeDefined()
979
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].created).toBeDefined()
980
- expect(containsAll([didDocVersionsMetadata.didDocumentVersionsMetadata[0]?.updated, didDocVersionsMetadata.didDocumentVersionsMetadata[1]?.updated], [undefined])).toBe(true)
981
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[1].deactivated).toBe(false)
982
- expect(didDocVersionsMetadata.didDocumentVersionsMetadata[0].deactivated).toBe(false)
983
- }, defaultAsyncTxTimeout)
984
- })
985
- })