@cheqd/sdk 2.1.0-develop.1 → 2.2.0

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