1
0
mirror of https://github.com/oceanprotocol-archive/squid-js.git synced 2024-02-02 15:31:51 +01:00

fix compute unit tests

* completely mock ocean.brizo.compute
This commit is contained in:
Matthias Kretschmann 2020-01-29 16:15:51 +01:00
parent 09c2f9f818
commit e37420dabf
Signed by: m
GPG Key ID: 606EEEF3C479A91F
4 changed files with 147 additions and 50 deletions

111
package-lock.json generated
View File

@ -385,6 +385,42 @@
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ=="
},
"@sinonjs/commons": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.7.0.tgz",
"integrity": "sha512-qbk9AP+cZUsKdW1GJsBpxPKFmCJ0T8swwzVje3qFd+AkQb74Q/tiuzrdfFg8AD2g5HH/XbE/I8Uc1KYHVYWfhg==",
"dev": true,
"requires": {
"type-detect": "4.0.8"
}
},
"@sinonjs/formatio": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-4.0.1.tgz",
"integrity": "sha512-asIdlLFrla/WZybhm0C8eEzaDNNrzymiTqHMeJl6zPW2881l3uuVRpm0QlRQEjqYWv6CcKMGYME3LbrLJsORBw==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1",
"@sinonjs/samsam": "^4.2.0"
}
},
"@sinonjs/samsam": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-4.2.2.tgz",
"integrity": "sha512-z9o4LZUzSD9Hl22zV38aXNykgFeVj8acqfFabCY6FY83n/6s/XwNJyYYldz6/9lBJanpno9h+oL6HTISkviweA==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.6.0",
"lodash.get": "^4.4.2",
"type-detect": "^4.0.8"
}
},
"@sinonjs/text-encoding": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz",
"integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==",
"dev": true
},
"@szmarczak/http-timer": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
@ -858,6 +894,12 @@
"@types/node": "*"
}
},
"@types/sinon": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.1.tgz",
"integrity": "sha512-EZQUP3hSZQyTQRfiLqelC9NMWd1kqLcmQE0dMiklxBkgi84T+cHOhnKpgk4NnOWpGX863yE6+IaGnOXUNFqDnQ==",
"dev": true
},
"@typescript-eslint/eslint-plugin": {
"version": "2.12.0",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.12.0.tgz",
@ -8192,6 +8234,12 @@
"object.assign": "^4.1.0"
}
},
"just-extend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.0.2.tgz",
"integrity": "sha512-FrLwOgm+iXrPV+5zDU6Jqu4gCRXbWEQg2O3SKONsWE4w7AXFRkryS53bpWdaL9cNol+AmR3AEYz6kn+o0fCPnw==",
"dev": true
},
"keccak": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/keccak/-/keccak-2.0.0.tgz",
@ -8544,6 +8592,15 @@
"chalk": "^2.4.2"
}
},
"lolex": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz",
"integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.7.0"
}
},
"loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
@ -9263,6 +9320,37 @@
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
"dev": true
},
"nise": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/nise/-/nise-3.0.1.tgz",
"integrity": "sha512-fYcH9y0drBGSoi88kvhpbZEsenX58Yr+wOJ4/Mi1K4cy+iGP/a73gNoyNhu5E9QxPdgTlVChfIaAlnyOy/gHUA==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.7.0",
"@sinonjs/formatio": "^4.0.1",
"@sinonjs/text-encoding": "^0.7.1",
"just-extend": "^4.0.2",
"lolex": "^5.0.1",
"path-to-regexp": "^1.7.0"
},
"dependencies": {
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
"dev": true
},
"path-to-regexp": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
"integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
"dev": true,
"requires": {
"isarray": "0.0.1"
}
}
}
},
"node-environment-flags": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz",
@ -11761,6 +11849,29 @@
"resolved": "https://registry.npmjs.org/simple-mime/-/simple-mime-0.1.0.tgz",
"integrity": "sha1-lfUXxPRm18/1YacfydqyWW6p7y4="
},
"sinon": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/sinon/-/sinon-8.1.1.tgz",
"integrity": "sha512-E+tWr3acRdoe1nXbHMu86SSqA1WGM7Yw3jZRLvlCMnXwTHP8lgFFVn5BnKnF26uc5SfZ3D7pA9sN7S3Y2jG4Ew==",
"dev": true,
"requires": {
"@sinonjs/commons": "^1.7.0",
"@sinonjs/formatio": "^4.0.1",
"@sinonjs/samsam": "^4.2.2",
"diff": "^4.0.2",
"lolex": "^5.1.2",
"nise": "^3.0.1",
"supports-color": "^7.1.0"
},
"dependencies": {
"diff": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true
}
}
},
"slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",

View File

@ -69,6 +69,7 @@
"@types/mocha": "^5.2.7",
"@types/node": "^13.1.0",
"@types/node-fetch": "^2.5.4",
"@types/sinon": "^7.5.1",
"@typescript-eslint/eslint-plugin": "^2.12.0",
"@typescript-eslint/parser": "^2.12.0",
"auto-changelog": "^1.16.2",
@ -85,6 +86,7 @@
"nyc": "^15.0.0",
"ora": "^4.0.2",
"prettier": "^1.19.1",
"sinon": "^8.1.1",
"source-map-support": "^0.5.16",
"ts-node": "^8.5.4",
"typedoc": "^0.16.8",

View File

@ -1,13 +0,0 @@
import { Brizo } from '../../src/brizo/Brizo'
export default class BrizoMock extends Brizo {
public async initializeServiceAgreement(
did: string,
serviceAgreementId: string,
index: number,
signature: string,
consumerPublicKey: string
): Promise<any> {
return true
}
}

View File

@ -1,105 +1,102 @@
import { assert, spy, use } from 'chai'
import spies from 'chai-spies'
import { assert } from 'chai'
import sinon from 'sinon'
import { Ocean } from '../../src/ocean/Ocean'
import config from '../config'
import { Account } from '../../src/squid'
import { OceanCompute, ComputeJobStatus } from '../../src/ocean/OceanCompute'
use(spies)
const responsify = async data => ({
ok: true,
json: () => Promise.resolve(data)
})
import TestIdGenerator from '../TestIdGenerator'
describe('OceanCompute', () => {
let ocean: Ocean
let account: Account
let compute: OceanCompute
let agreementId: string
before(async () => {
ocean = await Ocean.getInstance(config)
;[account] = await ocean.accounts.list()
compute = ocean.compute // eslint-disable-line prefer-destructuring
agreementId = TestIdGenerator.generatePrefixedId()
})
afterEach(() => {
spy.restore()
sinon.reset()
sinon.restore()
})
describe('#start()', () => {
it('should start a new job', async () => {
spy.on(ocean.utils.fetch, 'post', () => responsify({ jobId: 'my-job-id' }))
const response = await compute.start(account, 'xxx', 'xxx')
sinon.stub(ocean.brizo, 'compute').returns({ jobId: 'my-job-id' } as any)
const response = await compute.start(account, agreementId, 'did:op:0xxx')
assert(response.jobId === 'my-job-id')
})
})
describe('#stop()', () => {
it('should stop a job', async () => {
spy.on(ocean.utils.fetch, 'put', () =>
responsify({ status: ComputeJobStatus.Completed })
)
sinon
.stub(ocean.brizo, 'compute')
.returns({ status: ComputeJobStatus.Completed } as any)
const response = await compute.stop(account, 'xxx', 'xxx')
const response = await compute.stop(account, agreementId, 'xxx')
assert(response.status === ComputeJobStatus.Completed)
})
})
describe('#restart()', () => {
it('should restart a job', async () => {
spy.on(ocean.utils.fetch, 'put', () => responsify({ status: 6 }))
spy.on(ocean.utils.fetch, 'post', () => responsify({ jobId: 'my-job-id' }))
sinon
.stub(ocean.brizo, 'compute')
.returns({ status: ComputeJobStatus.Started, jobId: 'my-job-id' } as any)
const response = await compute.restart(account, 'xxx', 'xxx')
const response = await compute.restart(account, agreementId, 'xxx')
assert(response.jobId === 'my-job-id')
})
})
describe('#delete()', () => {
it('should delete a job', async () => {
spy.on(ocean.utils.fetch, 'delete', () =>
responsify({ status: ComputeJobStatus.Deleted })
)
sinon
.stub(ocean.brizo, 'compute')
.returns({ status: ComputeJobStatus.Deleted } as any)
const response = await compute.delete(account, 'xxx', 'xxx')
const response = await compute.delete(account, agreementId, 'xxx')
assert(response.status === ComputeJobStatus.Deleted)
})
})
describe('#status()', () => {
it('should get the status of one job', async () => {
spy.on(ocean.utils.fetch, 'get', () =>
responsify([{ status: ComputeJobStatus.Started }])
)
sinon
.stub(ocean.brizo, 'compute')
.returns([{ status: ComputeJobStatus.Started }] as any)
const response = await compute.status(account, 'xxx', 'xxx')
const response = await compute.status(account, agreementId, 'xxx')
assert(response.length === 1)
assert(response[0].status === ComputeJobStatus.Started)
})
it('should get the status of multiple jobs', async () => {
spy.on(ocean.utils.fetch, 'get', () =>
responsify([
sinon
.stub(ocean.brizo, 'compute')
.returns([
{ status: ComputeJobStatus.Started },
{ status: ComputeJobStatus.Started }
])
)
] as any)
const response = await compute.status(account, 'xxx')
const response = await compute.status(account, agreementId)
assert(response.length === 2)
assert(response[0].status === ComputeJobStatus.Started)
})
it('should get all jobs for one owner', async () => {
spy.on(ocean.utils.fetch, 'get', () =>
responsify([
sinon
.stub(ocean.brizo, 'compute')
.returns([
{ status: ComputeJobStatus.Started },
{ status: ComputeJobStatus.Started }
])
)
] as any)
const response = await compute.status(account)
assert(response.length === 2)