From 9925cc9d951e063666b08ccd9f588beb89c94fd4 Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Thu, 29 Jul 2021 10:44:51 +0300 Subject: [PATCH] allow editable author (#936) --- src/ddo/interfaces/EditableMetadata.ts | 1 + src/ocean/Assets.ts | 1 + test/integration/Marketplaceflow.test.ts | 13 +++++++++++++ 3 files changed, 15 insertions(+) diff --git a/src/ddo/interfaces/EditableMetadata.ts b/src/ddo/interfaces/EditableMetadata.ts index d097542f..ee2a80bc 100644 --- a/src/ddo/interfaces/EditableMetadata.ts +++ b/src/ddo/interfaces/EditableMetadata.ts @@ -3,6 +3,7 @@ import { Status } from './Status' export interface EditableMetadata { description?: string + author?: string title?: string links?: EditableMetadataLinks[] status?: Status diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index b8ab5e3b..a35931ac 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -268,6 +268,7 @@ export class Assets extends Instantiable { for (let i = 0; i < ddo.service.length; i++) { if (ddo.service[i].type !== 'metadata') continue if (newMetadata.title) ddo.service[i].attributes.main.name = newMetadata.title + if (newMetadata.author) ddo.service[i].attributes.main.author = newMetadata.author if (!ddo.service[i].attributes.additionalInformation) ddo.service[i].attributes.additionalInformation = Object() if (newMetadata.description) diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 8e563026..9ef67482 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -554,6 +554,19 @@ describe('Marketplace flow', () => { assert.deepEqual(metaData.attributes.additionalInformation.links, []) }) + it('Alice updates the author', async () => { + const newMetaData: EditableMetadata = { + author: 'SuperAlice' + } + const newDdo = await ocean.assets.editMetadata(ddo, newMetaData) + assert(newDdo !== null) + const txid = await ocean.onChainMetadata.update(newDdo.id, newDdo, alice.getId()) + assert(txid !== null) + await sleep(60000) + const metaData = await ocean.assets.getServiceByType(ddo.id, 'metadata') + assert(metaData.attributes.main.author, newMetaData.author) + }) + it('Alice updates metadata and removes sample links with encrypted ddo', async () => { const newMetaData: EditableMetadata = { description: 'new description no links',