UNPKG

actionhero

Version:

actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks

78 lines (62 loc) 2.38 kB
import { promisify } from "util"; import * as fs from "fs"; import * as path from "path"; import { Process } from "./../../src/index"; import { buildConfig } from "./../../src/modules/config"; const actionhero = new Process(); let config; let configFolders; const newConfigFolderPaths = [ path.join(__dirname, "first_config"), path.join(__dirname, "second_config"), ]; const routeFilesContent = [ "export const DEFAULT = {\n routes: (api) => {\n return {\n\n get: [\n { path: '/api-status', action: 'status' }\n ]\n\n }\n }\n}\n", "export const DEFAULT= {\n routes: (api) => {\n return {\n\n get: [\n { path: '/random-number', action: 'randomNumber' }\n ]\n\n }\n }\n}\n", ]; const createRouteFile = async (newConfigFolderPath, routeFileContent) => { try { await promisify(fs.mkdir)(newConfigFolderPath); } catch (ex) {} try { const newRoutesFilePath = path.join(newConfigFolderPath, "routes.ts"); await promisify(fs.writeFile)(newRoutesFilePath, routeFileContent, { encoding: "utf-8", }); } catch (ex) {} }; const removeRouteFile = async (newConfigFolderPath) => { try { const newRoutesFilePath = path.join(newConfigFolderPath, "routes.ts"); await promisify(fs.unlink)(newRoutesFilePath); } catch (ex) {} try { await promisify(fs.rmdir)(newConfigFolderPath); } catch (ex) {} }; describe("Core: config folders", () => { beforeAll(async () => { configFolders = process.env.ACTIONHERO_CONFIG; await removeRouteFile(newConfigFolderPaths[0]); await removeRouteFile(newConfigFolderPaths[1]); await createRouteFile(newConfigFolderPaths[0], routeFilesContent[0]); await createRouteFile(newConfigFolderPaths[1], routeFilesContent[1]); process.env.ACTIONHERO_CONFIG = newConfigFolderPaths.join(","); await actionhero.start(); config = buildConfig(); }); afterAll(async () => { await actionhero.stop(); await removeRouteFile(newConfigFolderPaths[0]); await removeRouteFile(newConfigFolderPaths[1]); process.env.ACTIONHERO_CONFIG = configFolders; }); test("routes should be rebuilt and contain both paths", async () => { expect(config.routes).toEqual({ get: [ { path: "/api-status", action: "status" }, { path: "/random-number", action: "randomNumber" }, ], }); }); });