From 1dc7fc1fa87bc1653fe57063898ee10b20dec6cd Mon Sep 17 00:00:00 2001 From: Abdulrahim Al Methiab Date: Wed, 17 Jul 2024 20:26:13 +0200 Subject: [PATCH] chore: refactor `createDid` and `transact` tests --- packages/sdk-js/src/DidHelpers/common.ts | 3 +- .../sdk-js/src/DidHelpers/createDid.spec.ts | 86 +++++++++++++++++++ .../{index.spec.ts => transact.spec.ts} | 62 +------------ 3 files changed, 89 insertions(+), 62 deletions(-) create mode 100644 packages/sdk-js/src/DidHelpers/createDid.spec.ts rename packages/sdk-js/src/DidHelpers/{index.spec.ts => transact.spec.ts} (64%) diff --git a/packages/sdk-js/src/DidHelpers/common.ts b/packages/sdk-js/src/DidHelpers/common.ts index 266cd628b..15b061a0b 100644 --- a/packages/sdk-js/src/DidHelpers/common.ts +++ b/packages/sdk-js/src/DidHelpers/common.ts @@ -27,7 +27,6 @@ import type { Did, HexString } from '@kiltprotocol/types' import type { AcceptedPublicKeyEncodings, - KeyMultibaseEncoded, SharedArguments, TransactionHandlers, TransactionResult, @@ -245,7 +244,7 @@ export function convertPublicKey(pk: AcceptedPublicKeyEncodings): { ;({ publicKey, keyType: type } = multibaseKeyToDidKey(pk)) } else if ('publicKeyMultibase' in pk) { ;({ publicKey, keyType: type } = multibaseKeyToDidKey( - (pk as { publicKeyMultibase: KeyMultibaseEncoded }).publicKeyMultibase + pk.publicKeyMultibase )) } else if ( 'publicKey' in pk && diff --git a/packages/sdk-js/src/DidHelpers/createDid.spec.ts b/packages/sdk-js/src/DidHelpers/createDid.spec.ts new file mode 100644 index 000000000..3949d1e75 --- /dev/null +++ b/packages/sdk-js/src/DidHelpers/createDid.spec.ts @@ -0,0 +1,86 @@ +/** + * Copyright (c) 2018-2024, BOTLabs GmbH. + * + * This source code is licensed under the BSD 4-Clause "Original" license + * found in the LICENSE file in the root directory of this source tree. + */ + +import type { KiltKeyringPair } from '@kiltprotocol/types' +import { Crypto } from '@kiltprotocol/utils' +import { SubmittableResult } from '@polkadot/api' +import { resolver } from '@kiltprotocol/did' +import { + ApiMocks, + createLocalDemoFullDidFromKeypair, +} from '../../../../tests/testUtils/index.js' +import { ConfigService } from '../index.js' +import { createDid } from './createDid.js' +import { TransactionResult } from './interfaces.js' + +const mockedApi = ApiMocks.createAugmentedApi() +jest.mock('@kiltprotocol/did', () => { + return { + ...jest.requireActual('@kiltprotocol/did'), + resolver: { resolve: jest.fn() }, + authorizeTx: jest.fn(), + } +}) + +describe('createDid', () => { + let keypair: KiltKeyringPair + beforeAll(async () => { + ConfigService.set({ api: mockedApi }) + + keypair = Crypto.makeKeypairFromUri('//Alice') + const didDocument = await createLocalDemoFullDidFromKeypair(keypair) + jest.mocked(resolver).resolve.mockImplementation((did) => { + if (did === didDocument.id) { + return { didDocument } as any + } + throw new Error() + }) + }) + + it('creates create did tx', async () => { + const { txHex, checkResult } = await createDid({ + api: mockedApi, + submitter: keypair, + signers: [keypair], + fromPublicKey: keypair, + }).getSubmittable({ signSubmittable: false }) + + expect(txHex).toContain('0x') + const parsed = mockedApi.tx(txHex) + + const result = await checkResult( + new SubmittableResult({ + blockNumber: mockedApi.createType('BlockNumber', 1000), + status: mockedApi.createType('ExtrinsicStatus', { + inBlock: new Uint8Array(32).fill(2), + }), + txHash: parsed.hash, + events: [ + { + event: { + method: 'didCreated', + section: 'did', + }, + } as any, + ], + }) + ) + + expect(result).toMatchObject>({ + status: 'confirmed', + asConfirmed: expect.objectContaining({ + txHash: parsed.hash.toHex(), + block: { + hash: mockedApi + .createType('Hash', new Uint8Array(32).fill(2)) + .toHex(), + number: 1000n, + }, + }), + }) + }) +}) diff --git a/packages/sdk-js/src/DidHelpers/index.spec.ts b/packages/sdk-js/src/DidHelpers/transact.spec.ts similarity index 64% rename from packages/sdk-js/src/DidHelpers/index.spec.ts rename to packages/sdk-js/src/DidHelpers/transact.spec.ts index 6e768e431..b04961eb8 100644 --- a/packages/sdk-js/src/DidHelpers/index.spec.ts +++ b/packages/sdk-js/src/DidHelpers/transact.spec.ts @@ -16,7 +16,6 @@ import { } from '../../../../tests/testUtils/index.js' import { transact } from './index.js' import { TransactionResult } from './interfaces.js' -import { createDid } from './createDid.js' import { makeAttestationCreatedEvents } from '../../../../tests/testUtils/testData.js' jest.mock('@kiltprotocol/did', () => { @@ -36,22 +35,10 @@ describe('transact', () => { ConfigService.set({ api: mockedApi }) keypair = Crypto.makeKeypairFromUri('//Alice') - const { id, verificationMethod, authentication } = - await createLocalDemoFullDidFromKeypair(keypair, { - verificationRelationships: new Set(['assertionMethod']), - }) - didDocument = { - id, - authentication, - assertionMethod: authentication, - verificationMethod: verificationMethod?.filter( - (vm) => vm.id === authentication![0] - ), - } + didDocument = await createLocalDemoFullDidFromKeypair(keypair) jest .mocked(authorizeTx) - .mockImplementation(async (did, ex, sig, sub, { txCounter } = {}) => { - // if(!sig.find(i => i.id)) {} + .mockImplementation(async (_did, ex, _sig, sub, { txCounter } = {}) => { return mockedApi.tx.did.submitDidCall( { did: keypair.address, @@ -116,49 +103,4 @@ describe('transact', () => { }), }) }) - - it('create DID', async () => { - const { txHex, checkResult } = await ( - await createDid({ - api: mockedApi, - submitter: keypair, - signers: [keypair], - fromPublicKey: keypair, - }) - ).getSubmittable({ signSubmittable: false }) - - expect(txHex).toContain('0x') - const parsed = mockedApi.tx(txHex) - - const result = await checkResult( - new SubmittableResult({ - blockNumber: mockedApi.createType('BlockNumber', 1000), - status: mockedApi.createType('ExtrinsicStatus', { - inBlock: new Uint8Array(32).fill(2), - }), - txHash: parsed.hash, - events: [ - { - event: { - method: 'didCreated', - section: 'did', - }, - } as any, - ], - }) - ) - - expect(result).toMatchObject>({ - status: 'confirmed', - asConfirmed: expect.objectContaining({ - txHash: parsed.hash.toHex(), - block: { - hash: mockedApi - .createType('Hash', new Uint8Array(32).fill(2)) - .toHex(), - number: 1000n, - }, - }), - }) - }) })