2019-02-06 00:38:54 +01:00
|
|
|
import { assert, spy, use } from "chai"
|
|
|
|
import * as spies from "chai-spies"
|
|
|
|
|
2018-10-26 10:40:46 +02:00
|
|
|
import AquariusProvider from "../../src/aquarius/AquariusProvider"
|
2019-02-12 15:07:10 +01:00
|
|
|
import { SearchQuery } from "../../src/aquarius/query/SearchQuery"
|
2018-11-19 12:16:11 +01:00
|
|
|
import BrizoProvider from "../../src/brizo/BrizoProvider"
|
2018-10-16 14:56:18 +02:00
|
|
|
import ConfigProvider from "../../src/ConfigProvider"
|
2019-02-04 11:46:24 +01:00
|
|
|
import { DDO } from "../../src/ddo/DDO"
|
|
|
|
import { Service } from "../../src/ddo/Service"
|
2018-10-16 14:56:18 +02:00
|
|
|
import Account from "../../src/ocean/Account"
|
2018-10-05 12:34:18 +02:00
|
|
|
import Ocean from "../../src/ocean/Ocean"
|
2018-10-26 13:37:09 +02:00
|
|
|
import SecretStoreProvider from "../../src/secretstore/SecretStoreProvider"
|
2019-02-06 00:38:54 +01:00
|
|
|
import * as signatureHelpers from "../../src/utils/SignatureHelpers"
|
2018-11-19 12:16:11 +01:00
|
|
|
import WebServiceConnectorProvider from "../../src/utils/WebServiceConnectorProvider"
|
2018-10-16 14:56:18 +02:00
|
|
|
import config from "../config"
|
2018-11-07 14:33:56 +01:00
|
|
|
import TestContractHandler from "../keeper/TestContractHandler"
|
2018-10-26 10:40:46 +02:00
|
|
|
import AquariusMock from "../mocks/Aquarius.mock"
|
2018-11-19 12:16:11 +01:00
|
|
|
import BrizoMock from "../mocks/Brizo.mock"
|
2018-10-26 13:37:09 +02:00
|
|
|
import SecretStoreMock from "../mocks/SecretStore.mock"
|
2018-11-19 12:16:11 +01:00
|
|
|
import WebServiceConnectorMock from "../mocks/WebServiceConnector.mock"
|
2019-02-04 11:46:24 +01:00
|
|
|
import { metadataMock } from "../testdata/MetaData"
|
2018-10-05 12:34:18 +02:00
|
|
|
|
2019-02-06 00:38:54 +01:00
|
|
|
use(spies)
|
|
|
|
|
2018-10-05 12:34:18 +02:00
|
|
|
let ocean: Ocean
|
2018-10-16 14:56:18 +02:00
|
|
|
let accounts: Account[]
|
2018-10-17 18:24:01 +02:00
|
|
|
let testPublisher: Account
|
|
|
|
|
2018-10-05 12:34:18 +02:00
|
|
|
describe("Ocean", () => {
|
|
|
|
|
2019-02-04 11:46:24 +01:00
|
|
|
const metadata = metadataMock
|
|
|
|
|
2019-02-06 00:38:54 +01:00
|
|
|
before(async () => {
|
|
|
|
ConfigProvider.setConfig(config)
|
|
|
|
})
|
|
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
|
spy.on(signatureHelpers, "signText", () => `0x${"a".repeat(130)}`)
|
|
|
|
})
|
|
|
|
afterEach(() => {
|
|
|
|
spy.restore()
|
|
|
|
})
|
|
|
|
|
2018-10-26 10:40:46 +02:00
|
|
|
before(async () => {
|
|
|
|
ConfigProvider.setConfig(config)
|
2018-10-26 11:57:26 +02:00
|
|
|
AquariusProvider.setAquarius(new AquariusMock(config))
|
2018-11-19 12:16:11 +01:00
|
|
|
BrizoProvider.setBrizo(new BrizoMock(config))
|
2018-10-26 13:37:09 +02:00
|
|
|
SecretStoreProvider.setSecretStore(new SecretStoreMock(config))
|
2018-11-07 14:33:56 +01:00
|
|
|
await TestContractHandler.prepareContracts()
|
2018-10-26 10:40:46 +02:00
|
|
|
ocean = await Ocean.getInstance(config)
|
|
|
|
accounts = await ocean.getAccounts()
|
|
|
|
|
|
|
|
testPublisher = accounts[0]
|
|
|
|
})
|
2018-10-26 11:57:26 +02:00
|
|
|
|
2018-10-18 13:06:52 +02:00
|
|
|
describe("#getInstance()", () => {
|
2018-11-05 10:01:58 +01:00
|
|
|
it("should get an instance of cean", async () => {
|
2018-10-18 13:06:52 +02:00
|
|
|
|
2018-11-05 10:01:58 +01:00
|
|
|
const oceanInstance: Ocean = await Ocean.getInstance(config)
|
2018-10-18 13:06:52 +02:00
|
|
|
|
2018-11-05 10:01:58 +01:00
|
|
|
assert(oceanInstance)
|
2018-10-18 13:06:52 +02:00
|
|
|
})
|
|
|
|
})
|
|
|
|
|
2018-10-16 14:56:18 +02:00
|
|
|
describe("#getAccounts()", () => {
|
|
|
|
it("should list accounts", async () => {
|
2018-10-05 12:34:18 +02:00
|
|
|
|
2018-10-16 14:56:18 +02:00
|
|
|
const accs: Account[] = await ocean.getAccounts()
|
|
|
|
|
|
|
|
assert(10 === accs.length)
|
|
|
|
assert(0 === (await accs[5].getBalance()).ocn)
|
|
|
|
assert("string" === typeof accs[0].getId())
|
2018-10-05 12:34:18 +02:00
|
|
|
})
|
2018-10-16 14:56:18 +02:00
|
|
|
})
|
2018-10-05 12:34:18 +02:00
|
|
|
|
2019-02-06 00:38:54 +01:00
|
|
|
// TODO: ensure if it should fail or not
|
2018-11-19 12:16:11 +01:00
|
|
|
describe("#resolveDID()", () => {
|
|
|
|
it("should resolve a did to a ddo", async () => {
|
2019-02-04 11:46:24 +01:00
|
|
|
const ddo: DDO = await ocean.registerAsset(metadata, testPublisher)
|
2018-11-19 12:16:11 +01:00
|
|
|
|
|
|
|
const resolvedDDO: DDO = await ocean.resolveDID(ddo.id)
|
|
|
|
|
|
|
|
assert(resolvedDDO)
|
|
|
|
assert(resolvedDDO.id === ddo.id)
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
2019-02-06 00:38:54 +01:00
|
|
|
// TODO: ensure if it should fail or not
|
2018-11-07 14:33:56 +01:00
|
|
|
describe("#registerAsset()", () => {
|
2018-10-16 14:56:18 +02:00
|
|
|
it("should register an asset", async () => {
|
2019-02-04 11:46:24 +01:00
|
|
|
const ddo: DDO = await ocean.registerAsset(metadata, testPublisher)
|
2018-10-16 14:56:18 +02:00
|
|
|
|
2018-11-07 14:33:56 +01:00
|
|
|
assert(ddo)
|
2018-11-05 10:01:58 +01:00
|
|
|
assert(ddo.id.startsWith("did:op:"))
|
2018-10-05 12:34:18 +02:00
|
|
|
})
|
2018-10-16 14:56:18 +02:00
|
|
|
})
|
2018-10-05 12:34:18 +02:00
|
|
|
|
2018-10-26 10:40:46 +02:00
|
|
|
describe("#searchAssets()", () => {
|
|
|
|
it("should search for assets", async () => {
|
|
|
|
const query = {
|
|
|
|
offset: 100,
|
|
|
|
page: 0,
|
|
|
|
query: {
|
|
|
|
value: 1,
|
|
|
|
},
|
|
|
|
sort: {
|
|
|
|
value: 1,
|
|
|
|
},
|
|
|
|
text: "Office",
|
2018-11-05 10:01:58 +01:00
|
|
|
} as SearchQuery
|
2018-10-26 10:40:46 +02:00
|
|
|
|
|
|
|
const assets: any[] = await ocean.searchAssets(query)
|
|
|
|
|
|
|
|
assert(assets)
|
|
|
|
})
|
|
|
|
})
|
2018-11-05 17:50:56 +01:00
|
|
|
|
|
|
|
describe("#searchAssetsByText()", () => {
|
|
|
|
it("should search for assets", async () => {
|
|
|
|
const text = "office"
|
|
|
|
const assets: any[] = await ocean.searchAssetsByText(text)
|
|
|
|
|
|
|
|
assert(assets)
|
|
|
|
})
|
|
|
|
})
|
2018-11-12 12:09:42 +01:00
|
|
|
|
|
|
|
describe("#signServiceAgreement()", () => {
|
|
|
|
it("should sign an service agreement", async () => {
|
|
|
|
const publisher = accounts[0]
|
|
|
|
const consumer = accounts[1]
|
|
|
|
|
2019-02-04 11:46:24 +01:00
|
|
|
const ddo: DDO = await ocean.registerAsset(metadata, publisher)
|
2018-11-12 12:09:42 +01:00
|
|
|
|
2018-11-14 15:44:25 +01:00
|
|
|
const service: Service = ddo.findServiceByType("Access")
|
|
|
|
|
2018-11-12 12:09:42 +01:00
|
|
|
// @ts-ignore
|
2018-11-19 12:16:11 +01:00
|
|
|
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(ddo))
|
2018-11-12 12:09:42 +01:00
|
|
|
|
2019-02-04 11:46:24 +01:00
|
|
|
await consumer.requestTokens(metadata.base.price)
|
2018-11-26 11:04:05 +01:00
|
|
|
|
2019-02-13 14:32:52 +01:00
|
|
|
const signServiceAgreementResult: any = await ocean.signServiceAgreement(ddo.id, service.serviceDefinitionId, consumer)
|
2018-11-12 12:09:42 +01:00
|
|
|
|
2018-11-26 11:04:05 +01:00
|
|
|
assert(signServiceAgreementResult)
|
2019-02-13 14:32:52 +01:00
|
|
|
assert(signServiceAgreementResult.agreementId, "no agreementId")
|
|
|
|
assert(signServiceAgreementResult.signature, "no signature")
|
|
|
|
assert(signServiceAgreementResult.signature.startsWith("0x"))
|
|
|
|
assert(signServiceAgreementResult.signature.length === 132)
|
2018-11-12 12:09:42 +01:00
|
|
|
})
|
|
|
|
})
|
2018-10-05 12:34:18 +02:00
|
|
|
})
|