From ca62c19fac2cb40d1a351e337c2849af4bb26f24 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Wed, 18 Nov 2020 20:06:56 +0100 Subject: [PATCH 01/15] feat: respond with updated did format and update internally when registering contact --- src/contacts/mongodb-contacts.service.ts | 30 +++++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index 59a269d..2ab6d81 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -1,4 +1,5 @@ import { PublicIdentity } from '@kiltprotocol/sdk-js' +import { IDidDocumentSigned } from '@kiltprotocol/sdk-js/build/did/Did' import { Injectable } from '@nestjs/common' import { InjectModel } from '@nestjs/mongoose' import { Model } from 'mongoose' @@ -16,14 +17,25 @@ export class MongoDbMContactsService implements ContactsService { ) {} public async add(contact: Contact): Promise { - const modifiedContact: ContactDB = Optional.ofNullable( + const modifiedContact: Optional = Optional.ofNullable( await this.contactModel .findOne({ 'publicIdentity.address': contact.publicIdentity.address }) .exec() - ).orElse(new this.contactModel(contact as ContactDB)) - modifiedContact.metaData.name = contact.metaData.name - modifiedContact.did = contact.did - await modifiedContact.save() + ) + if (modifiedContact.isPresent) { + await this.contactModel + .deleteOne({ + 'publicIdentity.address': contact.publicIdentity.address, + }) + .exec() + const updatedContact = modifiedContact.get().toObject() + updatedContact.did = contact.did + updatedContact.metaData.name = contact.metaData.name + delete updatedContact.signature + await new this.contactModel(updatedContact as ContactDB).save() + } else { + await new this.contactModel(contact as ContactDB).save() + } } public async findByAddress( @@ -50,9 +62,15 @@ export class MongoDbMContactsService implements ContactsService { } private convertToContact(contactDB: ContactDB): Contact { const { metaData, did, publicIdentity } = contactDB + let actualDid: IDidDocumentSigned + if (contactDB.toObject().signature && contactDB.toObject().did) { + actualDid = { ...did, signature: contactDB.toObject().signature } + } else { + actualDid = did + } return { metaData, - did, + did: actualDid, publicIdentity, } } From 8bb243e8f7e8fb274b6839be76288fbf03f77546 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Wed, 18 Nov 2020 20:55:46 +0100 Subject: [PATCH 02/15] test:updated tests and broader deletion criteria --- src/contacts/contacts.module.spec.ts | 48 ++++++++++++++++++------ src/contacts/mongodb-contacts.service.ts | 12 +++--- 2 files changed, 42 insertions(+), 18 deletions(-) diff --git a/src/contacts/contacts.module.spec.ts b/src/contacts/contacts.module.spec.ts index b3f07e2..c70e31a 100644 --- a/src/contacts/contacts.module.spec.ts +++ b/src/contacts/contacts.module.spec.ts @@ -40,10 +40,8 @@ describe('Contact Module', () => { } const signature = '0x00aad52336444c0263a22c22f2b99bbcdfc3a6912b5d085c11df01de2bb13dae7c9adf89ecb58f9a32dd021c1c0c1ff0ed39ba361a85f350714b58f15cbd617607' - - const signedTestDID: IDidDocumentSigned = { + const unsignedTestDID: IDidDocumentSigned = { id: 'did:kilt:5CKq9ovoHUFb5Qg2q7YmQ2waNhgQm4C22qwb1Wgehnn2eBcb', - signature, '@context': 'https://w3id.org/did/v1', authentication: [ { @@ -75,8 +73,12 @@ describe('Contact Module', () => { serviceEndpoint: 'https://services.devnet.kilt.io:443/messaging', }, ], - } + } as any + const signedTestDID: IDidDocumentSigned = { + ...unsignedTestDID, + signature, + } const contactWithDid: Contact = { ...testContact, did: signedTestDID, @@ -85,7 +87,11 @@ describe('Contact Module', () => { ...testContact, did: { ...signedTestDID, signature: signature.replace('d', 'f') }, } - + const deprecatedDIDFormat: Contact = { + ...testContact, + signature, + did: {}, + } as any const address = testContact.publicIdentity.address describe('Controller', () => { let contactsController: ContactsController @@ -248,6 +254,9 @@ describe('Contact Module', () => { public static findOne = jest .fn() .mockReturnValue({ exec: async (): Promise => null }) + public static deleteOne = jest + .fn() + .mockReturnValue({ exec: async (): Promise => {} }) public static deleteMany = jest.fn().mockReturnValue({ exec: async () => { return @@ -297,15 +306,25 @@ describe('Contact Module', () => { }) it('updates a Contact and saves it', async () => { const saveSpy = jest.spyOn(contactsService['contactModel'], 'save') - const findOneSpy = jest.spyOn( + const findOneSpy = jest + .spyOn(contactsService['contactModel'], 'findOne') + .mockReturnValueOnce({ + exec: async (): Promise => + (({ + ...deprecatedDIDFormat, + toObject: () => deprecatedDIDFormat, + } as any) as ContactDB), + }) + const deleteOneSpy = jest.spyOn( contactsService['contactModel'], - 'findOne' + 'deleteOne' ) await contactsService.add(contactWithDid) expect(findOneSpy).toHaveBeenCalledWith({ 'publicIdentity.address': testContact.publicIdentity.address, }) expect(saveSpy).toHaveBeenCalledTimes(1) + expect(deleteOneSpy).toHaveBeenCalledTimes(1) }) }) describe('findByAddress', () => { @@ -320,9 +339,11 @@ describe('Contact Module', () => { 'publicIdentity.address': address, }) findOneSpy.mockReturnValue({ - exec: async (): Promise => { - return testContact as ContactDB - }, + exec: async (): Promise => + (({ + ...testContact, + toObject: () => testContact, + } as any) as ContactDB), }) expect(await contactsService.findByAddress(address)).toEqual( Optional.ofNullable(testContact) @@ -340,7 +361,12 @@ describe('Contact Module', () => { .spyOn(contactsService['contactModel'], 'find') .mockReturnValue({ exec: async (): Promise => { - return [testContact as ContactDB] + return [ + ({ + ...testContact, + toObject: () => testContact, + } as any) as ContactDB, + ] }, }) expect(await contactsService.list()).toEqual([testContact]) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index 2ab6d81..4a9f691 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -17,22 +17,20 @@ export class MongoDbMContactsService implements ContactsService { ) {} public async add(contact: Contact): Promise { - const modifiedContact: Optional = Optional.ofNullable( + const registeredContact: Optional = Optional.ofNullable< + ContactDB + >( await this.contactModel .findOne({ 'publicIdentity.address': contact.publicIdentity.address }) .exec() ) - if (modifiedContact.isPresent) { + if (registeredContact.isPresent) { await this.contactModel .deleteOne({ 'publicIdentity.address': contact.publicIdentity.address, }) .exec() - const updatedContact = modifiedContact.get().toObject() - updatedContact.did = contact.did - updatedContact.metaData.name = contact.metaData.name - delete updatedContact.signature - await new this.contactModel(updatedContact as ContactDB).save() + await new this.contactModel(contact as ContactDB).save() } else { await new this.contactModel(contact as ContactDB).save() } From 205f8361103f4116044b13c0756d645c1d3fc8ea Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 20 Nov 2020 14:45:55 +0100 Subject: [PATCH 03/15] fix: keep registered publicIdentity --- src/contacts/mongodb-contacts.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index 4a9f691..f2bad49 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -30,7 +30,10 @@ export class MongoDbMContactsService implements ContactsService { 'publicIdentity.address': contact.publicIdentity.address, }) .exec() - await new this.contactModel(contact as ContactDB).save() + await new this.contactModel({ + ...contact, + publicIdentity: registeredContact.get().publicIdentity, + } as ContactDB).save() } else { await new this.contactModel(contact as ContactDB).save() } From e49b024a0b101566465846ebb52342540b108268 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 20 Nov 2020 14:56:01 +0100 Subject: [PATCH 04/15] fix: keep registered publicIdentity and metaData name --- src/contacts/mongodb-contacts.service.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index f2bad49..ef7f047 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -33,6 +33,10 @@ export class MongoDbMContactsService implements ContactsService { await new this.contactModel({ ...contact, publicIdentity: registeredContact.get().publicIdentity, + metaData: { + ...registeredContact.get().metaData, + name: contact.metaData.name, + }, } as ContactDB).save() } else { await new this.contactModel(contact as ContactDB).save() From afd70b23d9c930ac108d9fac2f24605af39971b7 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 20 Nov 2020 15:53:47 +0100 Subject: [PATCH 05/15] test: added scenario where deprecated contact was stored --- src/contacts/contacts.module.spec.ts | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/contacts/contacts.module.spec.ts b/src/contacts/contacts.module.spec.ts index c70e31a..75738f7 100644 --- a/src/contacts/contacts.module.spec.ts +++ b/src/contacts/contacts.module.spec.ts @@ -90,7 +90,7 @@ describe('Contact Module', () => { const deprecatedDIDFormat: Contact = { ...testContact, signature, - did: {}, + did: unsignedTestDID, } as any const address = testContact.publicIdentity.address describe('Controller', () => { @@ -351,7 +351,24 @@ describe('Contact Module', () => { expect(findOneSpy).toHaveBeenCalledWith({ 'publicIdentity.address': address, }) - expect(findOneSpy).toHaveBeenCalledTimes(2) + findOneSpy.mockReturnValue({ + exec: async (): Promise => + (({ + ...testContact, + toObject: () => testContact, + } as any) as ContactDB), + }) + findOneSpy.mockReturnValue({ + exec: async (): Promise => + (({ + ...deprecatedDIDFormat, + toObject: () => deprecatedDIDFormat, + } as any) as ContactDB), + }) + expect(await contactsService.findByAddress(address)).toEqual( + Optional.ofNullable(contactWithDid) + ) + expect(findOneSpy).toHaveBeenCalledTimes(3) findOneSpy.mockRestore() }) }) From a56dbcf100c4d4e00cf68431794abb3243fef4bf Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 20 Nov 2020 15:54:56 +0100 Subject: [PATCH 06/15] test: added scenario where deprecated contact was stored --- src/contacts/contacts.module.spec.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/contacts/contacts.module.spec.ts b/src/contacts/contacts.module.spec.ts index 75738f7..f05bd0b 100644 --- a/src/contacts/contacts.module.spec.ts +++ b/src/contacts/contacts.module.spec.ts @@ -351,13 +351,6 @@ describe('Contact Module', () => { expect(findOneSpy).toHaveBeenCalledWith({ 'publicIdentity.address': address, }) - findOneSpy.mockReturnValue({ - exec: async (): Promise => - (({ - ...testContact, - toObject: () => testContact, - } as any) as ContactDB), - }) findOneSpy.mockReturnValue({ exec: async (): Promise => (({ From d69c9e975a82a75cd1c03b6016aaf6363ad1b543 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 17:57:19 +0100 Subject: [PATCH 07/15] fix: use replaceOne in case of existing contact --- src/contacts/contacts.module.spec.ts | 31 +++++++++++++++----- src/contacts/mongodb-contacts.service.ts | 37 ++++++++++-------------- 2 files changed, 40 insertions(+), 28 deletions(-) diff --git a/src/contacts/contacts.module.spec.ts b/src/contacts/contacts.module.spec.ts index f05bd0b..08b48c9 100644 --- a/src/contacts/contacts.module.spec.ts +++ b/src/contacts/contacts.module.spec.ts @@ -87,7 +87,7 @@ describe('Contact Module', () => { ...testContact, did: { ...signedTestDID, signature: signature.replace('d', 'f') }, } - const deprecatedDIDFormat: Contact = { + const deprecatedDIDFormat: ContactDB & { signature?: string } = { ...testContact, signature, did: unsignedTestDID, @@ -144,6 +144,7 @@ describe('Contact Module', () => { expect(addSpy).toHaveBeenCalledTimes(1) expect(addSpy).toHaveBeenCalledWith(testContact) }) + it('calls throws Exception on invalid Contact', async () => { const addSpy = jest.spyOn(contactsService, 'add') const noAddressContact: Contact = { @@ -187,6 +188,7 @@ describe('Contact Module', () => { expect(addSpy).toHaveBeenCalledTimes(1) expect(addSpy).toHaveBeenCalledWith(contactWithDid) }) + it('rejects contact with did if signature is missing or invalid', async () => { const addSpy = jest.spyOn(contactsService, 'add') mockedVerifyDidDocumentSignature.mockReturnValue(false) @@ -254,7 +256,7 @@ describe('Contact Module', () => { public static findOne = jest .fn() .mockReturnValue({ exec: async (): Promise => null }) - public static deleteOne = jest + public static replaceOne = jest .fn() .mockReturnValue({ exec: async (): Promise => {} }) public static deleteMany = jest.fn().mockReturnValue({ @@ -304,27 +306,42 @@ describe('Contact Module', () => { }) expect(saveSpy).toHaveBeenCalledTimes(1) }) + it('updates a Contact and saves it', async () => { - const saveSpy = jest.spyOn(contactsService['contactModel'], 'save') const findOneSpy = jest .spyOn(contactsService['contactModel'], 'findOne') .mockReturnValueOnce({ exec: async (): Promise => (({ ...deprecatedDIDFormat, + _id: 0, toObject: () => deprecatedDIDFormat, } as any) as ContactDB), }) - const deleteOneSpy = jest.spyOn( + const replaceOne = jest.spyOn( contactsService['contactModel'], - 'deleteOne' + 'replaceOne' ) await contactsService.add(contactWithDid) expect(findOneSpy).toHaveBeenCalledWith({ 'publicIdentity.address': testContact.publicIdentity.address, }) - expect(saveSpy).toHaveBeenCalledTimes(1) - expect(deleteOneSpy).toHaveBeenCalledTimes(1) + expect(replaceOne).toHaveBeenCalledTimes(1) + expect(replaceOne).toHaveBeenCalledWith( + { _id: 0 }, + { + did: deprecatedDIDFormat.signature && { + ...deprecatedDIDFormat.did, + signature: deprecatedDIDFormat.signature, + }, + ...contactWithDid, + publicIdentity: deprecatedDIDFormat.publicIdentity, + metaData: { + ...deprecatedDIDFormat.metaData, + name: contactWithDid.metaData.name, + }, + } + ) }) }) describe('findByAddress', () => { diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index ef7f047..ecf85e1 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -17,27 +17,24 @@ export class MongoDbMContactsService implements ContactsService { ) {} public async add(contact: Contact): Promise { - const registeredContact: Optional = Optional.ofNullable< - ContactDB - >( + const registeredContact: Optional< + ContactDB & { signature?: string } + > = Optional.ofNullable( await this.contactModel .findOne({ 'publicIdentity.address': contact.publicIdentity.address }) .exec() ) if (registeredContact.isPresent) { - await this.contactModel - .deleteOne({ - 'publicIdentity.address': contact.publicIdentity.address, - }) - .exec() - await new this.contactModel({ + const registered = registeredContact.get() + await this.contactModel.replaceOne({ _id: registered._id }, { + did: registered.signature && { ...registered.did, signature: registered.signature }, ...contact, - publicIdentity: registeredContact.get().publicIdentity, + publicIdentity: registered.publicIdentity, metaData: { - ...registeredContact.get().metaData, + ...registered.metaData, name: contact.metaData.name, }, - } as ContactDB).save() + } as ContactDB) } else { await new this.contactModel(contact as ContactDB).save() } @@ -65,17 +62,15 @@ export class MongoDbMContactsService implements ContactsService { public async removeAll(): Promise { await this.contactModel.deleteMany({}).exec() } - private convertToContact(contactDB: ContactDB): Contact { - const { metaData, did, publicIdentity } = contactDB - let actualDid: IDidDocumentSigned - if (contactDB.toObject().signature && contactDB.toObject().did) { - actualDid = { ...did, signature: contactDB.toObject().signature } - } else { - actualDid = did - } + + private convertToContact( + contactDB: ContactDB & { signature?: string } + ): Contact { + //The Old Format had the signature as property in ContactDB, so we check if we have to move it. + const { metaData, did, publicIdentity, signature } = contactDB return { metaData, - did: actualDid, + did: signature && did ? { ...did, signature } : did, publicIdentity, } } From ec4444ac98af848539eedb759712849c14e6f89a Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 18:04:19 +0100 Subject: [PATCH 08/15] docs: added comment about outdated format handling --- src/contacts/mongodb-contacts.service.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index ecf85e1..e5a2572 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -26,6 +26,7 @@ export class MongoDbMContactsService implements ContactsService { ) if (registeredContact.isPresent) { const registered = registeredContact.get() + //If the contact was already registered we want to replace the document, as it could exist in outdated format! await this.contactModel.replaceOne({ _id: registered._id }, { did: registered.signature && { ...registered.did, signature: registered.signature }, ...contact, From 97de845aeeb4aa1fda323436a62f2395a797403f Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 18:08:57 +0100 Subject: [PATCH 09/15] fix: linting --- src/contacts/mongodb-contacts.service.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index e5a2572..c6c0219 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -28,7 +28,10 @@ export class MongoDbMContactsService implements ContactsService { const registered = registeredContact.get() //If the contact was already registered we want to replace the document, as it could exist in outdated format! await this.contactModel.replaceOne({ _id: registered._id }, { - did: registered.signature && { ...registered.did, signature: registered.signature }, + did: registered.signature && { + ...registered.did, + signature: registered.signature, + }, ...contact, publicIdentity: registered.publicIdentity, metaData: { From c418edc4d6401683ade940d39a5548e1a541417c Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 18:13:31 +0100 Subject: [PATCH 10/15] fix: linting --- src/contacts/mongodb-contacts.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index c6c0219..608a02d 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -26,7 +26,7 @@ export class MongoDbMContactsService implements ContactsService { ) if (registeredContact.isPresent) { const registered = registeredContact.get() - //If the contact was already registered we want to replace the document, as it could exist in outdated format! + // If the contact was already registered we want to replace the document, as it could exist in outdated format! await this.contactModel.replaceOne({ _id: registered._id }, { did: registered.signature && { ...registered.did, @@ -70,7 +70,7 @@ export class MongoDbMContactsService implements ContactsService { private convertToContact( contactDB: ContactDB & { signature?: string } ): Contact { - //The Old Format had the signature as property in ContactDB, so we check if we have to move it. + // The Old Format had the signature as property in ContactDB, so we check if we have to move it. const { metaData, did, publicIdentity, signature } = contactDB return { metaData, From a1b6931bd7910543ddf3c8ede7ea131ee96890cb Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 18:21:48 +0100 Subject: [PATCH 11/15] feat: updated to latest sdk --- package.json | 2 +- src/faucet/faucet.controller.ts | 4 ++-- yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 1499725..9f1329b 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@godaddy/terminus": "^4.1.0", - "@kiltprotocol/sdk-js": "^0.19.1-d0076cb.0", + "@kiltprotocol/sdk-js": "^0.19.1-affad9.0", "@nestjs/common": "^5.4.0", "@nestjs/core": "^5.4.0", "@nestjs/mongoose": "^5.2.2", diff --git a/src/faucet/faucet.controller.ts b/src/faucet/faucet.controller.ts index a79439b..b4e7109 100644 --- a/src/faucet/faucet.controller.ts +++ b/src/faucet/faucet.controller.ts @@ -21,7 +21,7 @@ import { FaucetDropInvalidAddressException, } from './exceptions' import { AuthGuard } from '../auth/auth.guard' -import { IS_IN_BLOCK } from '@kiltprotocol/sdk-js/build/blockchain/Blockchain' +import { IS_IN_BLOCK, submitSignedTx } from '@kiltprotocol/sdk-js/build/blockchain/Blockchain' const DEFAULT_TOKEN_AMOUNT = 500 @@ -76,7 +76,7 @@ export class FaucetController { new BN(DEFAULT_TOKEN_AMOUNT), 0 ) - const status = await Blockchain.submitSignedTx(tx, { + const status = await submitSignedTx(tx, { resolveOn: IS_IN_BLOCK, }) return Promise.resolve(status.isInBlock) diff --git a/yarn.lock b/yarn.lock index cb55336..a9c5ea1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -519,10 +519,10 @@ "@polkadot/util" "^3.5.1" "@polkadot/util-crypto" "^3.5.1" -"@kiltprotocol/sdk-js@^0.19.1-d0076cb.0": - version "0.19.1-d0076cb.0" - resolved "https://npm.pkg.github.com/download/@kiltprotocol/sdk-js/0.19.1-d0076cb.0/65c4100d663cb3f26c56a7dadc627e0ed95534e68163016a9943f7e4ed64cedd#18679f21dc1bdbaad7905f569d597a7dd1b5915d" - integrity sha512-C8wVrawG67OoLu3hibEdKgF89T0GTMZi70fTcBJebM2oL74wLue0nG8AdIZ6IUuCxuVDqNvDjwNfTTj6LgbIzQ== +"@kiltprotocol/sdk-js@^0.19.1-affad9.0": + version "0.19.1-affad9d.0" + resolved "https://npm.pkg.github.com/download/@kiltprotocol/sdk-js/0.19.1-affad9d.0/200b384ed5e5bb5d35e21b3da717463e4aa5f9ca5753bb228c1f761dc41e4fab#8d3cfcfedca9f41fd1ff9080cfed29d79af1d2a1" + integrity sha512-iyY3g1FRNSIleQPLtP9COo/6meu150Z0wTWNMVTFVi9TFRg54V3Tx+/8rc7FI0Qyd0/uAjX8uEBUZ87SDDCIfQ== dependencies: "@kiltprotocol/portablegabi" "^0.4.0" "@polkadot/api" "^2.0.1" From e7e203fa790c8a8b07abafaae0aa3b8ac8e878bb Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 18:26:24 +0100 Subject: [PATCH 12/15] fix: linting --- src/faucet/faucet.controller.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/faucet/faucet.controller.ts b/src/faucet/faucet.controller.ts index b4e7109..27fc576 100644 --- a/src/faucet/faucet.controller.ts +++ b/src/faucet/faucet.controller.ts @@ -21,7 +21,10 @@ import { FaucetDropInvalidAddressException, } from './exceptions' import { AuthGuard } from '../auth/auth.guard' -import { IS_IN_BLOCK, submitSignedTx } from '@kiltprotocol/sdk-js/build/blockchain/Blockchain' +import { + IS_IN_BLOCK, + submitSignedTx, +} from '@kiltprotocol/sdk-js/build/blockchain/Blockchain' const DEFAULT_TOKEN_AMOUNT = 500 @@ -76,7 +79,7 @@ export class FaucetController { new BN(DEFAULT_TOKEN_AMOUNT), 0 ) - const status = await submitSignedTx(tx, { + const status = await Blockchain.submitTxWithReSign(tx, faucetAccount, { resolveOn: IS_IN_BLOCK, }) return Promise.resolve(status.isInBlock) From 39254eb71f8eb2596a95e0e93166ba609b84907a Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 19:44:56 +0100 Subject: [PATCH 13/15] tests: require non default mock --- src/faucet/faucet.controller.ts | 6 ++++-- src/faucet/faucet.module.spec.ts | 20 +++++++++----------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/faucet/faucet.controller.ts b/src/faucet/faucet.controller.ts index 27fc576..409486d 100644 --- a/src/faucet/faucet.controller.ts +++ b/src/faucet/faucet.controller.ts @@ -1,4 +1,4 @@ -import { Balance, Blockchain, Identity } from '@kiltprotocol/sdk-js' +import { Balance, Identity } from '@kiltprotocol/sdk-js' import { Controller, Inject, @@ -79,9 +79,11 @@ export class FaucetController { new BN(DEFAULT_TOKEN_AMOUNT), 0 ) - const status = await Blockchain.submitTxWithReSign(tx, faucetAccount, { + const status = await submitSignedTx(tx, { resolveOn: IS_IN_BLOCK, }) + console.log(`Status: ${status.isInBlock}`) + return Promise.resolve(status.isInBlock) } catch (e) { console.error(e) diff --git a/src/faucet/faucet.module.spec.ts b/src/faucet/faucet.module.spec.ts index 8e80bd9..8f92229 100644 --- a/src/faucet/faucet.module.spec.ts +++ b/src/faucet/faucet.module.spec.ts @@ -36,13 +36,11 @@ jest.mock('@kiltprotocol/sdk-js/build/balance/Balance.chain', () => { jest.mock('@kiltprotocol/sdk-js/build/blockchain/Blockchain', () => { return { __esModule: true, - default: { - submitSignedTx: jest.fn( - async (): Promise => { - return { isInBlock: true } as SubmittableResult - } - ), - }, + submitSignedTx: jest.fn().mockImplementation( + async (): Promise => { + return { isInBlock: true } as SubmittableResult + } + ), } }) @@ -74,7 +72,7 @@ describe('Faucet Module', () => { .makeTransfer const mockedsubmitSignedTx = require('@kiltprotocol/sdk-js/build/blockchain/Blockchain') - .default.submitSignedTx + .submitSignedTx const fakeFaucetService: FaucetService = { drop: jest.fn(async (): Promise => testFaucetDrop), @@ -202,9 +200,9 @@ describe('Faucet Module', () => { const buildSpy = jest .spyOn(Identity, 'buildFromSeed') .mockResolvedValue(faucetIdentity) - mockedsubmitSignedTx.mockResolvedValue({ - isInBlock: true, - } as SubmittableResult) + mockedsubmitSignedTx.mockResolvedValue({ + isInBlock: true, + } as SubmittableResult) expect( await faucetController['transferTokens'](claimerAddress) ).toEqual(true) From 1c706fc5387741eb2464f0397bf98ef025962a58 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 19:55:58 +0100 Subject: [PATCH 14/15] feat: updated commit and removed default mock --- package.json | 2 +- test/faucet.e2e-spec.ts | 9 ++++----- yarn.lock | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 9f1329b..fded947 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@godaddy/terminus": "^4.1.0", - "@kiltprotocol/sdk-js": "^0.19.1-affad9.0", + "@kiltprotocol/sdk-js": "^0.19.1-affad9d.0", "@nestjs/common": "^5.4.0", "@nestjs/core": "^5.4.0", "@nestjs/mongoose": "^5.2.2", diff --git a/test/faucet.e2e-spec.ts b/test/faucet.e2e-spec.ts index d60a6e0..332513a 100644 --- a/test/faucet.e2e-spec.ts +++ b/test/faucet.e2e-spec.ts @@ -16,9 +16,8 @@ jest.mock('@kiltprotocol/sdk-js/build/balance/Balance.chain', () => { jest.mock('@kiltprotocol/sdk-js/build/blockchain/Blockchain', () => { return { __esModules: true, - default: { - submitSignedTx: jest.fn(() => Promise.resolve({ isInBlock: true })), - } + + submitSignedTx: jest.fn(() => Promise.resolve({ isInBlock: true })), } }) @@ -46,11 +45,11 @@ describe('faucet endpoint (e2e)', () => { beforeEach(async () => { await faucetService.reset() - require('@kiltprotocol/sdk-js/build/blockchain/Blockchain').default.submitSignedTx.mockResolvedValue( + require('@kiltprotocol/sdk-js/build/blockchain/Blockchain').submitSignedTx.mockResolvedValue( { isInBlock: true } ) require('@kiltprotocol/sdk-js/build/balance/Balance.chain').makeTransfer.mockResolvedValue( - { } + {} ) }) diff --git a/yarn.lock b/yarn.lock index a9c5ea1..e880bd0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -519,7 +519,7 @@ "@polkadot/util" "^3.5.1" "@polkadot/util-crypto" "^3.5.1" -"@kiltprotocol/sdk-js@^0.19.1-affad9.0": +"@kiltprotocol/sdk-js@^0.19.1-affad9d.0": version "0.19.1-affad9d.0" resolved "https://npm.pkg.github.com/download/@kiltprotocol/sdk-js/0.19.1-affad9d.0/200b384ed5e5bb5d35e21b3da717463e4aa5f9ca5753bb228c1f761dc41e4fab#8d3cfcfedca9f41fd1ff9080cfed29d79af1d2a1" integrity sha512-iyY3g1FRNSIleQPLtP9COo/6meu150Z0wTWNMVTFVi9TFRg54V3Tx+/8rc7FI0Qyd0/uAjX8uEBUZ87SDDCIfQ== From a0d91a0195ad25348a7a675278419b527f455917 Mon Sep 17 00:00:00 2001 From: LeonfLK Date: Fri, 27 Nov 2020 20:17:27 +0100 Subject: [PATCH 15/15] docs: explicitly state signature compatibility --- src/contacts/mongodb-contacts.service.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/contacts/mongodb-contacts.service.ts b/src/contacts/mongodb-contacts.service.ts index 608a02d..db64419 100644 --- a/src/contacts/mongodb-contacts.service.ts +++ b/src/contacts/mongodb-contacts.service.ts @@ -26,7 +26,7 @@ export class MongoDbMContactsService implements ContactsService { ) if (registeredContact.isPresent) { const registered = registeredContact.get() - // If the contact was already registered we want to replace the document, as it could exist in outdated format! + // If the contact was already registered we want to replace the document, as it could exist in outdated format! Signature is still valid. await this.contactModel.replaceOne({ _id: registered._id }, { did: registered.signature && { ...registered.did, @@ -70,7 +70,7 @@ export class MongoDbMContactsService implements ContactsService { private convertToContact( contactDB: ContactDB & { signature?: string } ): Contact { - // The Old Format had the signature as property in ContactDB, so we check if we have to move it. + // The Old Format had the signature as property in ContactDB, so we check if we have to move it. Signature is still valid. const { metaData, did, publicIdentity, signature } = contactDB return { metaData,