diff --git a/src/ocean/Assets.ts b/src/ocean/Assets.ts index faafedaa..b882e3f7 100644 --- a/src/ocean/Assets.ts +++ b/src/ocean/Assets.ts @@ -67,6 +67,13 @@ export class Assets extends Instantiable { name?: string, symbol?: string ): SubscribablePromise { + if (!isAddress(dtAddress)) { + this.logger.error( + `Passed Data Token address ${dtAddress} is not valid. Aborting publishing.` + ) + return null + } + this.logger.log('Creating asset') return new SubscribablePromise(async (observer) => { if (services.length === 0) { diff --git a/test/integration/Marketplaceflow.test.ts b/test/integration/Marketplaceflow.test.ts index 06a809f4..42b6664c 100644 --- a/test/integration/Marketplaceflow.test.ts +++ b/test/integration/Marketplaceflow.test.ts @@ -222,6 +222,21 @@ describe('Marketplace flow', () => { assert.equal(metaData.attributes.additionalInformation.links, newMetaData.links) }) + it('Alice publishes a dataset but passed data token is invalid', async () => { + price = datatoken.toWei('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], 'gibberishDataToken') + assert.equal(ddo, null) + }) + it('Alice publishes a dataset but created data token is invalid', async () => { price = datatoken.toWei('10') // in datatoken const publishedDate = new Date(Date.now()).toISOString().split('.')[0] + 'Z'