1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00

add data token address validity check

This commit is contained in:
Matthias Kretschmann 2020-09-18 10:10:02 +02:00
parent 587c9f9b09
commit 2ac93392b4
Signed by: m
GPG Key ID: 606EEEF3C479A91F
3 changed files with 29 additions and 4 deletions

View File

@ -6,10 +6,10 @@ import defaultDatatokensABI from '@oceanprotocol/contracts/artifacts/DataTokenTe
import wordListDefault from '../data/words.json'
import { TransactionReceipt } from 'web3-core'
import { time } from 'console'
import BigNumber from 'bignumber.js'
/**
* Provides a interface to DataTokens
* Provides an interface to DataTokens
*/
export class DataTokens {
public factoryAddress: string

View File

@ -14,8 +14,8 @@ import DID from './DID'
import { SubscribablePromise, didZeroX } from '../utils'
import { Instantiable, InstantiableConfig } from '../Instantiable.abstract'
import { WebServiceConnector } from './utils/WebServiceConnector'
import { DataTokens } from '../lib'
import BigNumber from 'bignumber.js'
import { isAddress } from 'web3-utils'
export enum CreateProgressStep {
CreatingDataToken,
@ -78,6 +78,7 @@ export class Assets extends Instantiable {
const metadataStoreURI = this.ocean.metadatastore.getURI()
const jsonBlob = { t: 1, url: metadataStoreURI }
const { datatokens } = this.ocean
dtAddress = await datatokens.create(
JSON.stringify(jsonBlob),
publisher.getId(),
@ -85,7 +86,15 @@ export class Assets extends Instantiable {
name,
symbol
)
this.logger.log('DataToken creted')
if (!isAddress(dtAddress)) {
this.logger.error(
`Created Data Token address ${dtAddress} is not valid. Aborting publishing.`
)
return null
}
this.logger.log(`DataToken ${dtAddress} created`)
observer.next(CreateProgressStep.DataTokenCreated)
}

View File

@ -197,10 +197,12 @@ describe('Marketplace flow', () => {
const balanceAfter = await datatoken.balance(tokenAddress, bob.getId())
assert(balanceBefore === balanceAfter)
})
it('owner can list there assets', async () => {
const assets = await ocean.assets.ownerAssets(alice.getId())
assert(assets.length > 0)
})
it('Alice updates metadata', async () => {
const newMetaData: EditableMetadata = {
description: 'new description',
@ -217,4 +219,18 @@ describe('Marketplace flow', () => {
)
assert(metaData.attributes.additionalInformation.links === newMetaData.links)
})
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'
const timeout = 0
service1 = await ocean.assets.createAccessServiceAttributes(
alice,
price,
publishedDate,
timeout
)
ddo = await ocean.assets.create(asset, '0xxxxx', [service1])
assert(ddo === null)
})
})