From 06933aa2fa26d609b81ae5a5c0c850c851ebb81c Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Mon, 29 Jun 2020 18:48:14 +0200 Subject: [PATCH 1/5] add resolve test --- test/integration/Marketplaceflow.test.ts | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 94909b61..7d60fdd0 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -133,15 +133,13 @@ describe('Marketplace flow', () => { ) }) }) + it('Marketplace should resolve asset using DID', async () => { + assert(ddo, await ocean.assets.resolve(ddo.id)) + }) - // it('Marketplace posts asset for sale', async () => { - // const config = new Config() - // marketOcean = await Ocean.getInstance(config) - - // service1 = marketOcean.assets.getService('download') - // service2 = marketOcean.assets.getService('access') - - // }) + it('Marketplace posts asset for sale', async () => { + // const downloadService = await ocean.assets.getService(ddo.id, 'download') + }) it('Bob gets datatokens', async () => { const ts = await datatoken.transfer( From 5535305c5fbd2a9af2ea6dbdc9b878d977f5a30b Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Mon, 29 Jun 2020 19:20:29 +0200 Subject: [PATCH 2/5] publishing services prior creating asset --- src/ocean/Assets.ts | 4 ++-- test/integration/Marketplaceflow.test.ts | 21 ++++++++++++++++++--- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index 79ff3387..e2ce5898 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -353,7 +353,7 @@ export class Assets extends Instantiable { } public async createAccessServiceAttributes( - consumerAccount: Account, + creator: Account, dtCost: number, datePublished: string, timeout: number = 0 @@ -364,7 +364,7 @@ export class Assets extends Instantiable { serviceEndpoint: this.ocean.provider.getConsumeEndpoint(), attributes: { main: { - creator: consumerAccount.getId(), + creator: creator.getId(), datePublished, dtCost, timeout: timeout, diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 7d60fdd0..916ac1bc 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -26,7 +26,7 @@ describe('Marketplace flow', () => { let transactionId let service1 let service2 - + let price let ocean const marketplaceAllowance = 20 @@ -86,10 +86,21 @@ describe('Marketplace flow', () => { ] } } + + }) it('Alice publishes a dataset', async () => { - ddo = await ocean.assets.create(asset, alice, [], tokenAddress) + price = 10 // in datatoken + const publishedDate = new Date(Date.now()).toISOString().split('.')[0] + 'Z' + const timeout = 0 + service1 = await ocean.assets.createAccessServiceAttributes( + alice, + price, + publishedDate, + timeout + ) + ddo = await ocean.assets.create(asset, alice, [service1], tokenAddress) assert(ddo.dataToken === tokenAddress) }) @@ -137,8 +148,12 @@ describe('Marketplace flow', () => { assert(ddo, await ocean.assets.resolve(ddo.id)) }) + it('Marketplace creates access service', async () => { + + }) + it('Marketplace posts asset for sale', async () => { - // const downloadService = await ocean.assets.getService(ddo.id, 'download') + //const downloadService = await ocean.assets.getService(ddo.id, 'download') }) it('Bob gets datatokens', async () => { From 2f5025a659bcddc47bbc44887c7f7ee6063d08c6 Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Mon, 29 Jun 2020 19:21:14 +0200 Subject: [PATCH 3/5] minor fix --- test/integration/Marketplaceflow.test.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 916ac1bc..c302f16a 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -86,8 +86,6 @@ describe('Marketplace flow', () => { ] } } - - }) it('Alice publishes a dataset', async () => { @@ -148,12 +146,8 @@ describe('Marketplace flow', () => { assert(ddo, await ocean.assets.resolve(ddo.id)) }) - it('Marketplace creates access service', async () => { - - }) - it('Marketplace posts asset for sale', async () => { - //const downloadService = await ocean.assets.getService(ddo.id, 'download') + // const downloadService = await ocean.assets.getService(ddo.id, 'download') }) it('Bob gets datatokens', async () => { From d5b6bb3221ef785e86c921ec5a2165ec4c07a0df Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Mon, 29 Jun 2020 21:08:46 +0200 Subject: [PATCH 4/5] add getService --- src/ocean/Assets.ts | 18 +++++++++++++++++- test/integration/Marketplaceflow.test.ts | 4 +++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index e2ce5898..c037f550 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -1,7 +1,12 @@ import { SearchQuery } from '../metadatastore/MetadataStore' import { DDO } from '../ddo/DDO' import { Metadata } from '../ddo/interfaces/Metadata' -import { Service, ServiceAccess, ServiceComputePrivacy } from '../ddo/interfaces/Service' +import { + Service, + ServiceAccess, + ServiceComputePrivacy, + ServiceCommon +} from '../ddo/interfaces/Service' import { EditableMetadata } from '../ddo/interfaces/EditableMetadata' import Account from './Account' import DID from './DID' @@ -352,6 +357,17 @@ export class Assets extends Instantiable { } as SearchQuery) } + public async getService(did: string, serviceType: string): Promise { + const services: ServiceCommon[] = (await this.resolve(did)).service + let service + services.forEach((serv) => { + if (serv.type.toString() === serviceType) { + service = serv + } + }) + return service + } + public async createAccessServiceAttributes( creator: Account, dtCost: number, diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index c302f16a..79180782 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -147,7 +147,9 @@ describe('Marketplace flow', () => { }) it('Marketplace posts asset for sale', async () => { - // const downloadService = await ocean.assets.getService(ddo.id, 'download') + const accessService = await ocean.assets.getService(ddo.id, 'access') + const price = 20 + assert(accessService.attributes.main.dtCost * price === 200) }) it('Bob gets datatokens', async () => { From 37d423b8d3acce9f4ca860b2883ee73a8215864d Mon Sep 17 00:00:00 2001 From: Ahmed Ali Date: Mon, 29 Jun 2020 21:17:29 +0200 Subject: [PATCH 5/5] cleaning --- test/integration/Marketplaceflow.test.ts | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 79180782..ac04867a 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -17,15 +17,11 @@ describe('Marketplace flow', () => { let ddo let alice let asset - let accounts let marketplace - let marketOcean let contracts let datatoken let tokenAddress - let transactionId let service1 - let service2 let price let ocean @@ -153,13 +149,12 @@ describe('Marketplace flow', () => { }) it('Bob gets datatokens', async () => { - const ts = await datatoken.transfer( - tokenAddress, - bob.getId(), - transferAmount, - alice.getId() - ) - transactionId = ts.transactionHash + await datatoken + .transfer(tokenAddress, bob.getId(), transferAmount, alice.getId()) + .then(async () => { + const balance = await datatoken.balance(tokenAddress, bob.getId()) + assert(balance.toString() === transferAmount.toString()) + }) }) // it('Bob consumes asset 1', async () => { @@ -167,9 +162,5 @@ describe('Marketplace flow', () => { // const ocean = await Ocean.getInstance(config) // await ocean.assets.download(asset.did, service1.index, bob, '~/my-datasets') // }) - - // it('Bob consumes asset 2', async () => { - // // TODO - // }) }) })