@cheqd/sdk 1.5.0-develop.3 → 2.0.0-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.
@@ -2,12 +2,12 @@ import { MsgUpdateDidDocPayload } from "@cheqd/ts-proto/cheqd/did/v2"
2
2
  import { DirectSecp256k1HdWallet } from "@cosmjs/proto-signing"
3
3
  import { DeliverTxResponse } from "@cosmjs/stargate"
4
4
  import { fromString, toString } from 'uint8arrays'
5
- import { v4 } from "uuid"
6
5
  import { DIDModule } from "../../src"
7
6
  import { createDefaultCheqdRegistry } from "../../src/registry"
8
7
  import { CheqdSigningStargateClient } from "../../src/signer"
9
- import { DidStdFee, ISignInputs, MethodSpecificIdAlgo, MsgCreateDidPayload, MsgDeactivateDidPayload, VerificationMethods } from "../../src/types"
10
- import { createDidPayload, createDidVerificationMethod, createKeyPairBase64, createVerificationKeys, exampleCheqdNetwork, faucet } from "../testutils.test"
8
+ import { DIDDocument, ISignInputs, MethodSpecificIdAlgo, VerificationMethods } from "../../src/types"
9
+ import { createDidPayload, createDidVerificationMethod, createKeyPairBase64, createVerificationKeys } from "../../src/utils"
10
+ import { localnet, faucet } from "../testutils.test"
11
11
 
12
12
  const defaultAsyncTxTimeout = 30000
13
13
 
@@ -15,43 +15,98 @@ describe('DIDModule', () => {
15
15
  describe('constructor', () => {
16
16
  it('should instantiate standalone module', async () => {
17
17
  const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic)
18
- const signer = await CheqdSigningStargateClient.connectWithSigner(exampleCheqdNetwork.rpcUrl, wallet)
18
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet)
19
19
  const didModule = new DIDModule(signer)
20
20
  expect(didModule).toBeInstanceOf(DIDModule)
21
21
  })
22
22
  })
23
23
 
24
24
  describe('createDidTx', () => {
25
- it('should create a new multibase DID', async () => {
25
+ it('should create a new multibase DID - case: Ed25519VerificationKey2020', async () => {
26
26
  const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
27
27
  const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
28
- const signer = await CheqdSigningStargateClient.connectWithSigner(exampleCheqdNetwork.rpcUrl, wallet, { registry })
28
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
29
29
  const didModule = new DIDModule(signer)
30
30
  const keyPair = createKeyPairBase64()
31
- const verificationKeys = createVerificationKeys(keyPair, MethodSpecificIdAlgo.Base58, 'key-1', 16)
31
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
32
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
33
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
34
+
35
+ const signInputs: ISignInputs[] = [
36
+ {
37
+ verificationMethodId: didPayload.verificationMethod![0].id,
38
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
39
+ }
40
+ ]
41
+
42
+ const feePayer = (await wallet.getAccounts())[0].address
43
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
44
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
45
+ signInputs,
46
+ didPayload,
47
+ feePayer,
48
+ fee
49
+ )
50
+
51
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
52
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
53
+
54
+ expect(didTx.code).toBe(0)
55
+ }, defaultAsyncTxTimeout)
56
+
57
+ it('should create a new multibase DID - case: Ed25519VerificationKey2018', async () => {
58
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
59
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
60
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
61
+ const didModule = new DIDModule(signer)
62
+ const keyPair = createKeyPairBase64()
63
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
64
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
65
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
66
+
67
+ const signInputs: ISignInputs[] = [
68
+ {
69
+ verificationMethodId: didPayload.verificationMethod![0].id,
70
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
71
+ }
72
+ ]
73
+ const feePayer = (await wallet.getAccounts())[0].address
74
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
75
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
76
+ signInputs,
77
+ didPayload,
78
+ feePayer,
79
+ fee
80
+ )
81
+
82
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
83
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
84
+
85
+ expect(didTx.code).toBe(0)
86
+ }, defaultAsyncTxTimeout)
87
+
88
+ it('should create a new multibase DID - case: JsonWebKey2020', async () => {
89
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
90
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
91
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
92
+ const didModule = new DIDModule(signer)
93
+ const keyPair = createKeyPairBase64()
94
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
32
95
  const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
33
96
  const didPayload = createDidPayload(verificationMethods, [verificationKeys])
34
97
 
35
98
  const signInputs: ISignInputs[] = [
36
99
  {
37
- verificationMethodId: didPayload.verificationMethod[0].id,
100
+ verificationMethodId: didPayload.verificationMethod![0].id,
38
101
  privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
39
102
  }
40
103
  ]
41
- const fee: DidStdFee = {
42
- amount: [
43
- {
44
- denom: 'ncheq',
45
- amount: '5000000'
46
- }
47
- ],
48
- gas: '200000',
49
- payer: (await wallet.getAccounts())[0].address
50
- }
104
+ const feePayer = (await wallet.getAccounts())[0].address
105
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
51
106
  const didTx: DeliverTxResponse = await didModule.createDidTx(
52
107
  signInputs,
53
108
  didPayload,
54
- (await wallet.getAccounts())[0].address,
109
+ feePayer,
55
110
  fee
56
111
  )
57
112
 
@@ -61,36 +116,87 @@ describe('DIDModule', () => {
61
116
  expect(didTx.code).toBe(0)
62
117
  }, defaultAsyncTxTimeout)
63
118
 
64
- it('should create a new uuid DID', async () => {
119
+ it('should create a new uuid DID - case: Ed25519VerificationKey2020', async () => {
65
120
  const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
66
121
  const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
67
- const signer = await CheqdSigningStargateClient.connectWithSigner(exampleCheqdNetwork.rpcUrl, wallet, { registry })
122
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
68
123
  const didModule = new DIDModule(signer)
69
124
  const keyPair = createKeyPairBase64()
70
- const verificationKeys = createVerificationKeys(keyPair, MethodSpecificIdAlgo.Uuid, 'key-1', 16)
125
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
71
126
  const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
72
127
  const didPayload = createDidPayload(verificationMethods, [verificationKeys])
73
- didPayload.versionId = v4()
74
128
  const signInputs: ISignInputs[] = [
75
129
  {
76
- verificationMethodId: didPayload.verificationMethod[0].id,
130
+ verificationMethodId: didPayload.verificationMethod![0].id,
131
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
132
+ }
133
+ ]
134
+ const feePayer = (await wallet.getAccounts())[0].address
135
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
136
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
137
+ signInputs,
138
+ didPayload,
139
+ feePayer,
140
+ fee
141
+ )
142
+
143
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
144
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
145
+
146
+ expect(didTx.code).toBe(0)
147
+ }, defaultAsyncTxTimeout)
148
+
149
+ it('should create a new uuid DID - case: Ed25519VerificationKey2018', async () => {
150
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
151
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
152
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
153
+ const didModule = new DIDModule(signer)
154
+ const keyPair = createKeyPairBase64()
155
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
156
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
157
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
158
+ const signInputs: ISignInputs[] = [
159
+ {
160
+ verificationMethodId: didPayload.verificationMethod![0].id,
77
161
  privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
78
162
  }
79
163
  ]
80
- const fee: DidStdFee = {
81
- amount: [
82
- {
83
- denom: 'ncheq',
84
- amount: '5000000'
85
- }
86
- ],
87
- gas: '200000',
88
- payer: (await wallet.getAccounts())[0].address
89
- }
164
+ const feePayer = (await wallet.getAccounts())[0].address
165
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
90
166
  const didTx: DeliverTxResponse = await didModule.createDidTx(
91
167
  signInputs,
92
168
  didPayload,
93
- (await wallet.getAccounts())[0].address,
169
+ feePayer,
170
+ fee
171
+ )
172
+
173
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
174
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
175
+
176
+ expect(didTx.code).toBe(0)
177
+ }, defaultAsyncTxTimeout)
178
+
179
+ it('should create a new uuid DID - case: JsonWebKey2020', async () => {
180
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
181
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
182
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
183
+ const didModule = new DIDModule(signer)
184
+ const keyPair = createKeyPairBase64()
185
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Uuid, 'key-1')
186
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
187
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
188
+ const signInputs: ISignInputs[] = [
189
+ {
190
+ verificationMethodId: didPayload.verificationMethod![0].id,
191
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
192
+ }
193
+ ]
194
+ const feePayer = (await wallet.getAccounts())[0].address
195
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
196
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
197
+ signInputs,
198
+ didPayload,
199
+ feePayer,
94
200
  fee
95
201
  )
96
202
 
@@ -102,36 +208,83 @@ describe('DIDModule', () => {
102
208
  })
103
209
 
104
210
  describe('updateDidTx', () => {
105
- it('should update a DID', async () => {
211
+ it('should update a DID - case: Ed25519VerificationKey2020', async () => {
106
212
  const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
107
213
  const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
108
- const signer = await CheqdSigningStargateClient.connectWithSigner(exampleCheqdNetwork.rpcUrl, wallet, { registry })
214
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
109
215
  const didModule = new DIDModule(signer)
110
-
216
+
111
217
  const keyPair = createKeyPairBase64()
112
- const verificationKeys = createVerificationKeys(keyPair, MethodSpecificIdAlgo.Base58, 'key-1', 16)
218
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
113
219
  const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
114
220
  const didPayload = createDidPayload(verificationMethods, [verificationKeys])
115
221
  const signInputs: ISignInputs[] = [
116
222
  {
117
- verificationMethodId: didPayload.verificationMethod[0].id,
223
+ verificationMethodId: didPayload.verificationMethod![0].id,
224
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
225
+ }
226
+ ]
227
+ const feePayer = (await wallet.getAccounts())[0].address
228
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
229
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
230
+ signInputs,
231
+ didPayload,
232
+ feePayer,
233
+ fee
234
+ )
235
+
236
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
237
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
238
+
239
+ expect(didTx.code).toBe(0)
240
+
241
+ // update the did document
242
+ const updateDidPayload = {
243
+ '@context': didPayload?.['@context'],
244
+ id: didPayload.id,
245
+ controller: didPayload.controller,
246
+ verificationMethod: didPayload.verificationMethod,
247
+ authentication: didPayload.authentication,
248
+ assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
249
+ versionId: didTx.transactionHash
250
+ } as DIDDocument
251
+
252
+ const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
253
+ const updateDidTx: DeliverTxResponse = await didModule.updateDidTx(
254
+ signInputs,
255
+ updateDidPayload,
256
+ feePayer,
257
+ feeUpdate
258
+ )
259
+
260
+ console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
261
+ console.warn(`DID Tx: ${JSON.stringify(updateDidTx)}`)
262
+
263
+ expect(updateDidTx.code).toBe(0)
264
+ }, defaultAsyncTxTimeout)
265
+
266
+ it('should update a DID - case: Ed25519VerificationKey2018', async () => {
267
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
268
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
269
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
270
+ const didModule = new DIDModule(signer)
271
+
272
+ const keyPair = createKeyPairBase64()
273
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
274
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
275
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
276
+ const signInputs: ISignInputs[] = [
277
+ {
278
+ verificationMethodId: didPayload.verificationMethod![0].id,
118
279
  privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
119
280
  }
120
281
  ]
121
- const fee: DidStdFee = {
122
- amount: [
123
- {
124
- denom: 'ncheq',
125
- amount: '5000000'
126
- }
127
- ],
128
- gas: '200000',
129
- payer: (await wallet.getAccounts())[0].address
130
- }
282
+ const feePayer = (await wallet.getAccounts())[0].address
283
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
131
284
  const didTx: DeliverTxResponse = await didModule.createDidTx(
132
285
  signInputs,
133
286
  didPayload,
134
- (await wallet.getAccounts())[0].address,
287
+ feePayer,
135
288
  fee
136
289
  )
137
290
 
@@ -140,60 +293,163 @@ describe('DIDModule', () => {
140
293
 
141
294
  expect(didTx.code).toBe(0)
142
295
 
143
- // Update the DID
144
- const updateDidPayload = MsgCreateDidPayload.fromPartial({
145
- context: didPayload.context,
296
+ // update the did document
297
+ const updateDidPayload = {
298
+ '@context': didPayload?.['@context'],
146
299
  id: didPayload.id,
147
300
  controller: didPayload.controller,
148
301
  verificationMethod: didPayload.verificationMethod,
149
302
  authentication: didPayload.authentication,
150
- assertionMethod: [didPayload.verificationMethod[0].id], // New
303
+ assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
151
304
  versionId: didTx.transactionHash
152
- })
305
+ } as DIDDocument
306
+
307
+ const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
153
308
 
154
309
  const updateDidTx: DeliverTxResponse = await didModule.updateDidTx(
155
310
  signInputs,
156
311
  updateDidPayload,
157
- (await wallet.getAccounts())[0].address,
312
+ feePayer,
313
+ feeUpdate
314
+ )
315
+
316
+ console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
317
+ console.warn(`DID Tx: ${JSON.stringify(updateDidTx)}`)
318
+
319
+ expect(updateDidTx.code).toBe(0)
320
+ }, defaultAsyncTxTimeout)
321
+
322
+ it('should update a DID - case: JsonWebKey2020', async () => {
323
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
324
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
325
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
326
+ const didModule = new DIDModule(signer)
327
+
328
+ const keyPair = createKeyPairBase64()
329
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
330
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
331
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
332
+ const signInputs: ISignInputs[] = [
333
+ {
334
+ verificationMethodId: didPayload.verificationMethod![0].id,
335
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
336
+ }
337
+ ]
338
+ const feePayer = (await wallet.getAccounts())[0].address
339
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
340
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
341
+ signInputs,
342
+ didPayload,
343
+ feePayer,
158
344
  fee
159
345
  )
160
346
 
161
- console.warn(updateDidTx)
347
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
348
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
349
+
350
+ expect(didTx.code).toBe(0)
351
+
352
+ // update the did document
353
+ const updateDidPayload = {
354
+ '@context': didPayload?.['@context'],
355
+ id: didPayload.id,
356
+ controller: didPayload.controller,
357
+ verificationMethod: didPayload.verificationMethod,
358
+ authentication: didPayload.authentication,
359
+ assertionMethod: [didPayload.verificationMethod![0].id], // <-- This is the only difference
360
+ versionId: didTx.transactionHash
361
+ } as DIDDocument
362
+
363
+ const feeUpdate = await DIDModule.generateUpdateDidDocFees(feePayer)
364
+
365
+ const updateDidTx: DeliverTxResponse = await didModule.updateDidTx(
366
+ signInputs,
367
+ updateDidPayload,
368
+ feePayer,
369
+ feeUpdate
370
+ )
371
+
372
+ console.warn(`Using payload: ${JSON.stringify(updateDidPayload)}`)
373
+ console.warn(`DID Tx: ${JSON.stringify(updateDidTx)}`)
374
+
162
375
  expect(updateDidTx.code).toBe(0)
163
376
  }, defaultAsyncTxTimeout)
164
377
  })
165
378
 
166
379
  describe('deactivateDidTx', () => {
167
- it('should deactivate a DID', async () => {
380
+ it('should deactivate a DID - case: Ed25519VerificationKey2020', async () => {
168
381
  const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
169
382
  const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
170
- const signer = await CheqdSigningStargateClient.connectWithSigner(exampleCheqdNetwork.rpcUrl, wallet, { registry })
383
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
171
384
  const didModule = new DIDModule(signer)
172
-
385
+
173
386
  const keyPair = createKeyPairBase64()
174
- const verificationKeys = createVerificationKeys(keyPair, MethodSpecificIdAlgo.Base58, 'key-1', 16)
387
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
175
388
  const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192020], [verificationKeys])
176
389
  const didPayload = createDidPayload(verificationMethods, [verificationKeys])
177
390
  const signInputs: ISignInputs[] = [
178
391
  {
179
- verificationMethodId: didPayload.verificationMethod[0].id,
392
+ verificationMethodId: didPayload.verificationMethod![0].id,
393
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
394
+ }
395
+ ]
396
+ const feePayer = (await wallet.getAccounts())[0].address
397
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
398
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
399
+ signInputs,
400
+ didPayload,
401
+ feePayer,
402
+ fee
403
+ )
404
+
405
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
406
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
407
+
408
+ expect(didTx.code).toBe(0)
409
+
410
+ // deactivate the did document
411
+ const deactivateDidPayload = {
412
+ id: didPayload.id,
413
+ verificationMethod: didPayload.verificationMethod,
414
+ } as DIDDocument
415
+
416
+ const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
417
+
418
+ const deactivateDidTx: DeliverTxResponse = await didModule.deactivateDidTx(
419
+ signInputs,
420
+ deactivateDidPayload,
421
+ feePayer,
422
+ feeDeactivate
423
+ )
424
+
425
+ console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
426
+ console.warn(`DID Tx: ${JSON.stringify(deactivateDidTx)}`)
427
+
428
+ expect(deactivateDidTx.code).toBe(0)
429
+ }, defaultAsyncTxTimeout)
430
+
431
+ it('should deactivate a DID - case: Ed25519VerificationKey2018', async () => {
432
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
433
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
434
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
435
+ const didModule = new DIDModule(signer)
436
+
437
+ const keyPair = createKeyPairBase64()
438
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
439
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.Ed255192018], [verificationKeys])
440
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
441
+ const signInputs: ISignInputs[] = [
442
+ {
443
+ verificationMethodId: didPayload.verificationMethod![0].id,
180
444
  privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
181
445
  }
182
446
  ]
183
- const fee: DidStdFee = {
184
- amount: [
185
- {
186
- denom: 'ncheq',
187
- amount: '5000000'
188
- }
189
- ],
190
- gas: '200000',
191
- payer: (await wallet.getAccounts())[0].address
192
- }
447
+ const feePayer = (await wallet.getAccounts())[0].address
448
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
193
449
  const didTx: DeliverTxResponse = await didModule.createDidTx(
194
450
  signInputs,
195
451
  didPayload,
196
- (await wallet.getAccounts())[0].address,
452
+ feePayer,
197
453
  fee
198
454
  )
199
455
 
@@ -202,21 +458,75 @@ describe('DIDModule', () => {
202
458
 
203
459
  expect(didTx.code).toBe(0)
204
460
 
205
- // Update the DID
206
- const deactivateDidPayload: MsgDeactivateDidPayload = {
461
+ // deactivate the did document
462
+ const deactivateDidPayload = {
207
463
  id: didPayload.id,
208
464
  verificationMethod: didPayload.verificationMethod,
209
- versionId: v4()
210
- }
465
+ } as DIDDocument
466
+
467
+ const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
211
468
 
212
469
  const deactivateDidTx: DeliverTxResponse = await didModule.deactivateDidTx(
213
470
  signInputs,
214
471
  deactivateDidPayload,
215
- (await wallet.getAccounts())[0].address,
472
+ feePayer,
473
+ feeDeactivate
474
+ )
475
+
476
+ console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
477
+ console.warn(`DID Tx: ${JSON.stringify(deactivateDidTx)}`)
478
+
479
+ expect(deactivateDidTx.code).toBe(0)
480
+ }, defaultAsyncTxTimeout)
481
+
482
+ it('should deactivate a DID - case: JsonWebKey2020', async () => {
483
+ const wallet = await DirectSecp256k1HdWallet.fromMnemonic(faucet.mnemonic, {prefix: faucet.prefix})
484
+ const registry = createDefaultCheqdRegistry(DIDModule.registryTypes)
485
+ const signer = await CheqdSigningStargateClient.connectWithSigner(localnet.rpcUrl, wallet, { registry })
486
+ const didModule = new DIDModule(signer)
487
+
488
+ const keyPair = createKeyPairBase64()
489
+ const verificationKeys = createVerificationKeys(keyPair.publicKey, MethodSpecificIdAlgo.Base58, 'key-1')
490
+ const verificationMethods = createDidVerificationMethod([VerificationMethods.JWK], [verificationKeys])
491
+ const didPayload = createDidPayload(verificationMethods, [verificationKeys])
492
+ const signInputs: ISignInputs[] = [
493
+ {
494
+ verificationMethodId: didPayload.verificationMethod![0].id,
495
+ privateKeyHex: toString(fromString(keyPair.privateKey, 'base64'), 'hex')
496
+ }
497
+ ]
498
+ const feePayer = (await wallet.getAccounts())[0].address
499
+ const fee = await DIDModule.generateCreateDidDocFees(feePayer)
500
+ const didTx: DeliverTxResponse = await didModule.createDidTx(
501
+ signInputs,
502
+ didPayload,
503
+ feePayer,
216
504
  fee
217
505
  )
218
506
 
219
- console.warn(deactivateDidTx)
507
+ console.warn(`Using payload: ${JSON.stringify(didPayload)}`)
508
+ console.warn(`DID Tx: ${JSON.stringify(didTx)}`)
509
+
510
+ expect(didTx.code).toBe(0)
511
+
512
+ // deactivate the did document
513
+ const deactivateDidPayload = {
514
+ id: didPayload.id,
515
+ verificationMethod: didPayload.verificationMethod,
516
+ } as DIDDocument
517
+
518
+ const feeDeactivate = await DIDModule.generateDeactivateDidDocFees(feePayer)
519
+
520
+ const deactivateDidTx: DeliverTxResponse = await didModule.deactivateDidTx(
521
+ signInputs,
522
+ deactivateDidPayload,
523
+ feePayer,
524
+ feeDeactivate
525
+ )
526
+
527
+ console.warn(`Using payload: ${JSON.stringify(deactivateDidPayload)}`)
528
+ console.warn(`DID Tx: ${JSON.stringify(deactivateDidTx)}`)
529
+
220
530
  expect(deactivateDidTx.code).toBe(0)
221
531
  }, defaultAsyncTxTimeout)
222
532
  })