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

wip tests

This commit is contained in:
alexcos20 2021-02-23 22:50:26 -08:00
parent 5e7c6cb497
commit 8b464722ef
2 changed files with 116 additions and 1 deletions

View File

@ -20,6 +20,7 @@ before_script:
# Barge setup # Barge setup
- git clone https://github.com/oceanprotocol/barge - git clone https://github.com/oceanprotocol/barge
- cd barge - cd barge
- git checkout feature/improve_provider
- export ADDRESS_FILE="${HOME}/.ocean/ocean-contracts/artifacts/address.json" - export ADDRESS_FILE="${HOME}/.ocean/ocean-contracts/artifacts/address.json"
- mkdir "${HOME}/.ocean/" - mkdir "${HOME}/.ocean/"
- mkdir "${HOME}/.ocean/ocean-contracts/" - mkdir "${HOME}/.ocean/ocean-contracts/"

View File

@ -46,6 +46,7 @@ describe('Compute flow', () => {
let asset: Metadata let asset: Metadata
let datasetNoRawAlgo: DDO let datasetNoRawAlgo: DDO
let datasetWithTrustedAlgo: DDO let datasetWithTrustedAlgo: DDO
let datasetWithBogusProvider: DDO
let algorithmAsset: DDO let algorithmAsset: DDO
let algorithmAssetRemoteProvider: DDO let algorithmAssetRemoteProvider: DDO
let contracts: TestContractHandler let contracts: TestContractHandler
@ -53,6 +54,7 @@ describe('Compute flow', () => {
let tokenAddress: string let tokenAddress: string
let tokenAddressNoRawAlgo: string let tokenAddressNoRawAlgo: string
let tokenAddressWithTrustedAlgo: string let tokenAddressWithTrustedAlgo: string
let tokenAddressWithBogusProvider: string
let tokenAddressAlgorithm: string let tokenAddressAlgorithm: string
let tokenAddressAlgorithmRemoteProvider: string let tokenAddressAlgorithmRemoteProvider: string
let tokenAddressAdditional1: string let tokenAddressAdditional1: string
@ -73,7 +75,7 @@ describe('Compute flow', () => {
const dateCreated = new Date(Date.now()).toISOString().split('.')[0] + 'Z' // remove milliseconds const dateCreated = new Date(Date.now()).toISOString().split('.')[0] + 'Z' // remove milliseconds
const tokenAmount = '1000' const tokenAmount = '1000'
const aquaSleep = 30000 const aquaSleep = 50000
const timeout = 86400 const timeout = 86400
const algorithmMeta = { const algorithmMeta = {
@ -144,6 +146,17 @@ describe('Compute flow', () => {
tokenAddressWithTrustedAlgo != null, tokenAddressWithTrustedAlgo != null,
'Creation of tokenAddressWithTrustedAlgo failed' 'Creation of tokenAddressWithTrustedAlgo failed'
) )
tokenAddressWithBogusProvider = await datatoken.create(
blob,
alice.getId(),
'10000000000',
'AssetWithTrustedDT',
'AWTDT'
)
assert(
tokenAddressWithBogusProvider != null,
'Creation of tokenAddressWithTrustedAlgo failed'
)
tokenAddressAlgorithm = await datatoken.create( tokenAddressAlgorithm = await datatoken.create(
blob, blob,
@ -502,6 +515,7 @@ describe('Compute flow', () => {
await datatoken.mint(tokenAddress, alice.getId(), tokenAmount) await datatoken.mint(tokenAddress, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressNoRawAlgo, alice.getId(), tokenAmount) await datatoken.mint(tokenAddressNoRawAlgo, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressWithTrustedAlgo, alice.getId(), tokenAmount) await datatoken.mint(tokenAddressWithTrustedAlgo, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressWithBogusProvider, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressAlgorithm, alice.getId(), tokenAmount) await datatoken.mint(tokenAddressAlgorithm, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressAlgorithmRemoteProvider, alice.getId(), tokenAmount) await datatoken.mint(tokenAddressAlgorithmRemoteProvider, alice.getId(), tokenAmount)
await datatoken.mint(tokenAddressAdditional1, alice.getId(), tokenAmount) await datatoken.mint(tokenAddressAdditional1, alice.getId(), tokenAmount)
@ -528,6 +542,16 @@ describe('Compute flow', () => {
const balance = await datatoken.balance(tokenAddressWithTrustedAlgo, bob.getId()) const balance = await datatoken.balance(tokenAddressWithTrustedAlgo, bob.getId())
assert(balance.toString() === dTamount.toString()) assert(balance.toString() === dTamount.toString())
}) })
await datatoken
.transfer(tokenAddressWithBogusProvider, bob.getId(), dTamount, alice.getId())
.then(async () => {
const balance = await datatoken.balance(
tokenAddressWithBogusProvider,
bob.getId()
)
assert(balance.toString() === dTamount.toString())
})
await datatoken await datatoken
.transfer(tokenAddressAlgorithm, bob.getId(), dTamount, alice.getId()) .transfer(tokenAddressAlgorithm, bob.getId(), dTamount, alice.getId())
.then(async () => { .then(async () => {
@ -1069,4 +1093,94 @@ describe('Compute flow', () => {
) )
assert(allowed === false, 'This should fail, the algo files section was changed!') assert(allowed === false, 'This should fail, the algo files section was changed!')
}) })
it('should force publish a dataset with a compute service served by a non existant provider', async () => {
// will create a service with ocean.provider for metadata service, but bogus provider for compute service
const bogusRemoteProviderUri = 'http://172.15.0.7:2030'
const origComputePrivacy = {
allowRawAlgorithm: false,
allowNetworkAccess: false,
publisherTrustedAlgorithms: []
}
const computeService = ocean.compute.createComputeService(
alice,
'1000',
dateCreated,
providerAttributes,
origComputePrivacy as ServiceComputePrivacy,
3600,
bogusRemoteProviderUri
)
datasetWithBogusProvider = await ocean.assets.create(
asset,
alice,
[computeService],
tokenAddressWithBogusProvider
)
assert(
datasetWithBogusProvider.dataToken === tokenAddressWithTrustedAlgo,
'datasetWithTrustedAlgo.dataToken !== tokenAddressWithTrustedAlgo'
)
await sleep(aquaSleep)
})
it('Bob should fail to start a compute job for a bogus provider with a raw Algo', async () => {
const output = {}
const computeService = datasetWithBogusProvider.findServiceByType('compute')
// get the compute address first
computeAddress = await ocean.compute.getComputeAddress(
datasetWithBogusProvider.id,
computeService.index
)
// check if asset is orderable. otherwise, you might pay for it, but it has some algo restrictions
const allowed = await ocean.compute.isOrderable(
datasetWithBogusProvider.id,
computeService.index,
undefined,
algorithmMeta
)
assert(allowed === false)
// we know that it is not Orderable, but we are trying to force it
computeOrderId = await ocean.compute.orderAsset(
bob.getId(),
datasetWithBogusProvider.id,
computeService.index,
undefined,
algorithmMeta,
null, // no marketplace fee
computeAddress // CtD is the consumer of the dataset
)
assert(computeOrderId === null, 'computeOrderId !== null')
// we are forcing a bogus orderId
computeOrderId = '1234'
const response = await ocean.compute.start(
datasetWithBogusProvider.id,
computeOrderId,
tokenAddress,
bob,
undefined,
algorithmMeta,
output,
`${computeService.index}`,
computeService.type
)
assert(response, 'Compute error')
})
it('Bob should failed to get status of all compute jobs from a dataset with bogus provider', async () => {
const response = await ocean.compute.status(
bob,
datasetWithBogusProvider.id,
undefined,
undefined,
false
)
assert(response === undefined, 'Invalid response')
})
it('Bob should fail to stop a fake compute job on a bogus provider', async () => {
const jobid = '1234'
const response = await ocean.compute.stop(bob, datasetWithBogusProvider.id, jobid)
assert(response === undefined, 'Invalid response')
})
}) })