From dcfff76d1b38cd913e254f8a1aa47946f81d601a Mon Sep 17 00:00:00 2001 From: Sebastijan K <58827427+sebastijankuzner@users.noreply.github.com> Date: Wed, 20 May 2020 18:28:21 +0200 Subject: [PATCH] feat(core-manager): implement `configuration.getPlugins` action (#3717) --- .../actions/configuration-get-plugins.test.ts | 34 +++++++++++++++++++ .../src/actions/configuration-get-plugins.ts | 21 ++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 __tests__/unit/core-manager/actions/configuration-get-plugins.test.ts create mode 100644 packages/core-manager/src/actions/configuration-get-plugins.ts diff --git a/__tests__/unit/core-manager/actions/configuration-get-plugins.test.ts b/__tests__/unit/core-manager/actions/configuration-get-plugins.test.ts new file mode 100644 index 0000000000..a3e83fa575 --- /dev/null +++ b/__tests__/unit/core-manager/actions/configuration-get-plugins.test.ts @@ -0,0 +1,34 @@ +import "jest-extended"; + +import { Container } from "@packages/core-kernel"; +import { Action } from "@packages/core-manager/src/actions/configuration-get-plugins"; +import { Sandbox } from "@packages/core-test-framework"; + +let sandbox: Sandbox; +let action: Action; + +const mockFilesystem = { + get: jest.fn().mockResolvedValue("file_content"), +}; + +beforeEach(() => { + sandbox = new Sandbox(); + + sandbox.app.bind(Container.Identifiers.FilesystemService).toConstantValue(mockFilesystem); + + action = sandbox.app.resolve(Action); +}); + +describe("Configuration:EnvGet", () => { + it("should have name", () => { + expect(action.name).toEqual("configuration.getPlugins"); + }); + + it("should return plugins.js content", async () => { + sandbox.app.configPath = jest.fn().mockReturnValue("path/to/env/file"); + + const result = await action.execute({}); + + await expect(result).toBe("file_content"); + }); +}); diff --git a/packages/core-manager/src/actions/configuration-get-plugins.ts b/packages/core-manager/src/actions/configuration-get-plugins.ts new file mode 100644 index 0000000000..e8141342f4 --- /dev/null +++ b/packages/core-manager/src/actions/configuration-get-plugins.ts @@ -0,0 +1,21 @@ +import { Application, Container, Contracts } from "@arkecosystem/core-kernel"; +import { Actions } from "../contracts"; + +@Container.injectable() +export class Action implements Actions.Action { + public name = "configuration.getPlugins"; + + @Container.inject(Container.Identifiers.Application) + private readonly app!: Application; + + @Container.inject(Container.Identifiers.FilesystemService) + private readonly filesystem!: Contracts.Kernel.Filesystem; + + public async execute(params: object): Promise { + return await this.getPluginFile(); + } + + public async getPluginFile(): Promise { + return (await this.filesystem.get(this.app.configPath("plugins.js"))).toString(); + } +}