From 43119ed6062df950174731b36a8b6e9b8616f378 Mon Sep 17 00:00:00 2001 From: Sebastian Gerske Date: Fri, 26 Oct 2018 11:57:26 +0200 Subject: [PATCH] added fetch mock --- src/ConfigProvider.ts | 2 +- src/aquarius/Aquarius.ts | 28 ++++++++--------------- src/aquarius/AquariusConnector.ts | 14 ++++++++++++ src/aquarius/AquariusConnectorProvider.ts | 23 +++++++++++++++++++ src/aquarius/AquariusProvider.ts | 3 ++- test/aquarius/Aquarius.test.ts | 16 ++++++------- test/mocks/AquariusConnector.mock.ts | 17 ++++++++++++++ test/ocean/Asset.test.ts | 2 +- test/ocean/Ocean.test.ts | 4 ++-- test/ocean/Order.test.ts | 2 +- 10 files changed, 79 insertions(+), 32 deletions(-) create mode 100644 src/aquarius/AquariusConnector.ts create mode 100644 src/aquarius/AquariusConnectorProvider.ts create mode 100644 test/mocks/AquariusConnector.mock.ts diff --git a/src/ConfigProvider.ts b/src/ConfigProvider.ts index ed09436..d133fc8 100644 --- a/src/ConfigProvider.ts +++ b/src/ConfigProvider.ts @@ -2,7 +2,7 @@ import Config from "./models/Config" export default class ConfigProvider { - public static getConfig() { + public static getConfig(): Config { return ConfigProvider.config } diff --git a/src/aquarius/Aquarius.ts b/src/aquarius/Aquarius.ts index 26f7375..bc213a4 100644 --- a/src/aquarius/Aquarius.ts +++ b/src/aquarius/Aquarius.ts @@ -1,25 +1,21 @@ -import fetch from "node-fetch" -import ConfigProvider from "../ConfigProvider" +import Config from "../models/Config" import Logger from "../utils/Logger" +import AquariusConnectorProvider from "./AquariusConnectorProvider" export default class Aquarius { private url: string - constructor() { + constructor(config: Config) { - this.url = ConfigProvider.getConfig().aquariusUri + this.url = config.aquariusUri } public async getAccessUrl(accessToken: any, payload: any): Promise { - const accessUrl = await fetch(`${accessToken.service_endpoint}/${accessToken.resource_id}`, { - method: "POST", - body: payload, - headers: { - "Content-type": "application/json", - }, - }) + const accessUrl = await AquariusConnectorProvider.getConnector().post( + `${accessToken.service_endpoint}/${accessToken.resource_id}`, + payload) .then((response: any) => { if (response.ok) { return response.text() @@ -39,13 +35,9 @@ export default class Aquarius { public async queryMetadata(query): Promise { - const result = await fetch(this.url + "/api/v1/aquarius/assets/metadata/query", { - method: "POST", - body: JSON.stringify(query), - headers: { - "Content-type": "application/json", - }, - }) + const result = await AquariusConnectorProvider.getConnector().post( + this.url + "/api/v1/aquarius/assets/metadata/query", + JSON.stringify(query)) .then((response: any) => { if (response.ok) { return response.json() diff --git a/src/aquarius/AquariusConnector.ts b/src/aquarius/AquariusConnector.ts new file mode 100644 index 0000000..247799d --- /dev/null +++ b/src/aquarius/AquariusConnector.ts @@ -0,0 +1,14 @@ +import fetch from "node-fetch" + +export default class AquariusConnector { + + public post(url, payload) { + return fetch(url, { + method: "POST", + body: payload, + headers: { + "Content-type": "application/json", + }, + }) + } +} diff --git a/src/aquarius/AquariusConnectorProvider.ts b/src/aquarius/AquariusConnectorProvider.ts new file mode 100644 index 0000000..edc9d1f --- /dev/null +++ b/src/aquarius/AquariusConnectorProvider.ts @@ -0,0 +1,23 @@ +import Logger from "../utils/Logger" +import AquariusConnector from "./AquariusConnector" + +export default class AquariusConnectorProvider { + + public static setConnector(connector: AquariusConnector) { + + Logger.log("setting", typeof connector.constructor.name) + + AquariusConnectorProvider.connector = connector + } + + public static getConnector() { + + if (!AquariusConnectorProvider.connector) { + AquariusConnectorProvider.connector = new AquariusConnector() + } + Logger.log("getting", typeof AquariusConnectorProvider.connector.constructor.name) + return AquariusConnectorProvider.connector + } + + private static connector: AquariusConnector = null +} diff --git a/src/aquarius/AquariusProvider.ts b/src/aquarius/AquariusProvider.ts index c6f1ec6..e881643 100644 --- a/src/aquarius/AquariusProvider.ts +++ b/src/aquarius/AquariusProvider.ts @@ -1,3 +1,4 @@ +import ConfigProvider from "../ConfigProvider" import Aquarius from "./Aquarius" export default class AquariusProvider { @@ -10,7 +11,7 @@ export default class AquariusProvider { public static getAquarius() { if (!AquariusProvider.aquarius) { - AquariusProvider.aquarius = new Aquarius() + AquariusProvider.aquarius = new Aquarius(ConfigProvider.getConfig()) } return AquariusProvider.aquarius } diff --git a/test/aquarius/Aquarius.test.ts b/test/aquarius/Aquarius.test.ts index 5e78ab1..9a4529e 100644 --- a/test/aquarius/Aquarius.test.ts +++ b/test/aquarius/Aquarius.test.ts @@ -1,18 +1,18 @@ import * as assert from "assert" import Aquarius from "../../src/aquarius/Aquarius" -import ConfigProvider from "../../src/ConfigProvider" +import AquariusConnectorProvider from "../../src/aquarius/AquariusConnectorProvider" import config from "../config" +import AquariusConnectorMock from "../mocks/AquariusConnector.mock" + +before(() => { + AquariusConnectorProvider.setConnector(new AquariusConnectorMock()) +}) describe("Aquarius", () => { - before(() => { + describe("#queryMetadata()", async () => { - ConfigProvider.setConfig(config) - }) - - describe("#queryMetadata()queryMetadata", async () => { - - const aquarius: Aquarius = new Aquarius() + const aquarius: Aquarius = new Aquarius(config) const query = { offset: 100, diff --git a/test/mocks/AquariusConnector.mock.ts b/test/mocks/AquariusConnector.mock.ts new file mode 100644 index 0000000..5e0db38 --- /dev/null +++ b/test/mocks/AquariusConnector.mock.ts @@ -0,0 +1,17 @@ +import AquariusConnector from "../../src/aquarius/AquariusConnector" + +export default class AquariusConnectorMock extends AquariusConnector { + + public async post(url: string, payload: any) { + + return { + ok: true, + json: () => { + return [] + }, + text: () => { + return "" + }, + } + } +} diff --git a/test/ocean/Asset.test.ts b/test/ocean/Asset.test.ts index cf85365..1554a03 100644 --- a/test/ocean/Asset.test.ts +++ b/test/ocean/Asset.test.ts @@ -23,7 +23,7 @@ describe("Asset", () => { before(async () => { ConfigProvider.setConfig(config) - AquariusProvider.setAquarius(new AquariusMock()) + AquariusProvider.setAquarius(new AquariusMock(config)) await ContractHandler.deployContracts() ocean = await Ocean.getInstance(config) diff --git a/test/ocean/Ocean.test.ts b/test/ocean/Ocean.test.ts index 297e035..905a0ef 100644 --- a/test/ocean/Ocean.test.ts +++ b/test/ocean/Ocean.test.ts @@ -23,7 +23,7 @@ describe("Ocean", () => { before(async () => { ConfigProvider.setConfig(config) - AquariusProvider.setAquarius(new AquariusMock()) + AquariusProvider.setAquarius(new AquariusMock(config)) await ContractHandler.deployContracts() ocean = await Ocean.getInstance(config) accounts = await ocean.getAccounts() @@ -31,7 +31,7 @@ describe("Ocean", () => { testPublisher = accounts[0] testAsset = new Asset(name, description, price, testPublisher) }) - + describe("#getInstance()", () => { it("should list accounts", async () => { diff --git a/test/ocean/Order.test.ts b/test/ocean/Order.test.ts index 1f2ff09..262f6f3 100644 --- a/test/ocean/Order.test.ts +++ b/test/ocean/Order.test.ts @@ -26,7 +26,7 @@ describe("Order", () => { before(async () => { ConfigProvider.setConfig(config) - AquariusProvider.setAquarius(new AquariusMock()) + AquariusProvider.setAquarius(new AquariusMock(config)) await ContractHandler.deployContracts() ocean = await Ocean.getInstance(config) accounts = await ocean.getAccounts()