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

177 lines
5.6 KiB
TypeScript
Raw Normal View History

2018-10-18 09:19:10 +02:00
import {assert} from "chai"
2018-10-26 10:40:46 +02:00
import AquariusProvider from "../../src/aquarius/AquariusProvider"
2018-11-05 10:01:58 +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"
2018-11-05 10:01:58 +01:00
import DDO from "../../src/ddo/DDO"
import MetaData from "../../src/ddo/MetaData"
2018-11-14 15:44:25 +01:00
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"
import ServiceAgreement from "../../src/ocean/ServiceAgreements/ServiceAgreement"
2018-10-26 13:37:09 +02:00
import SecretStoreProvider from "../../src/secretstore/SecretStoreProvider"
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"
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"
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", () => {
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))
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
describe("#getInstance()", () => {
2018-11-05 10:01:58 +01:00
it("should get an instance of cean", async () => {
2018-11-05 10:01:58 +01:00
const oceanInstance: Ocean = await Ocean.getInstance(config)
2018-11-05 10:01:58 +01:00
assert(oceanInstance)
})
})
2018-10-16 14:56:18 +02:00
describe("#getAccounts()", () => {
2018-10-05 12:34:18 +02:00
2018-10-16 14:56:18 +02:00
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
2018-11-19 12:16:11 +01:00
describe("#resolveDID()", () => {
it("should resolve a did to a ddo", async () => {
const metaData: MetaData = new MetaData()
const ddo: DDO = await ocean.registerAsset(metaData, testPublisher)
const resolvedDDO: DDO = await ocean.resolveDID(ddo.id)
assert(resolvedDDO)
assert(resolvedDDO.id === ddo.id)
})
})
describe("#registerAsset()", () => {
2018-10-16 14:56:18 +02:00
it("should register an asset", async () => {
const metaData: MetaData = new MetaData()
const ddo: DDO = await ocean.registerAsset(metaData, testPublisher)
2018-10-16 14:56:18 +02: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)
})
})
describe("#searchAssetsByText()", () => {
it("should search for assets", async () => {
const text = "office"
const assets: any[] = await ocean.searchAssetsByText(text)
assert(assets)
})
})
describe("#signServiceAgreement()", () => {
it("should sign an service agreement", async () => {
const publisher = accounts[0]
const consumer = accounts[1]
2018-11-26 11:04:05 +01:00
const metaData = new MetaData()
const ddo: DDO = await ocean.registerAsset(metaData, publisher)
2018-11-14 15:44:25 +01:00
const service: Service = ddo.findServiceByType("Access")
// @ts-ignore
2018-11-19 12:16:11 +01:00
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(ddo))
2018-11-26 11:04:05 +01:00
await consumer.requestTokens(metaData.base.price)
const signServiceAgreementResult: any = await ocean.signServiceAgreement(ddo.id,
2018-11-14 15:44:25 +01:00
service.serviceDefinitionId, consumer)
2018-11-26 11:04:05 +01:00
assert(signServiceAgreementResult)
assert(signServiceAgreementResult.serviceAgreementId, "no serviceAgreementId")
assert(signServiceAgreementResult.serviceAgreementSignature, "no serviceAgreementSignature")
assert(signServiceAgreementResult.serviceAgreementSignature.startsWith("0x"))
assert(signServiceAgreementResult.serviceAgreementSignature.length === 132)
})
})
describe("#executeServiceAgreement()", () => {
it("should execute an service agreement", async () => {
const publisher = accounts[0]
const consumer = accounts[1]
const ddo: DDO = await ocean.registerAsset(new MetaData(), publisher)
2018-11-14 15:44:25 +01:00
const service: Service = ddo.findServiceByType("Access")
// @ts-ignore
2018-11-19 12:16:11 +01:00
WebServiceConnectorProvider.setConnector(new WebServiceConnectorMock(ddo))
2018-11-14 15:44:25 +01:00
const signServiceAgreementResult: any = await ocean.signServiceAgreement(ddo.id,
service.serviceDefinitionId, consumer)
2018-11-14 15:44:25 +01:00
const serviceAgreement: ServiceAgreement = await ocean.executeServiceAgreement(ddo.id,
service.serviceDefinitionId, signServiceAgreementResult.serviceAgreementId,
signServiceAgreementResult.serviceAgreementSignature, consumer, publisher)
assert(serviceAgreement)
})
})
2018-10-05 12:34:18 +02:00
})