UNPKG

actionhero

Version:

The reusable, scalable, and quick node.js API server for stateless and stateful applications

104 lines (88 loc) 2.96 kB
import { action, Process, api, Connection, ActionProcessor, } from "./../../src/index"; const actionhero = new Process(); describe("Modules", () => { describe("action", () => { beforeAll(async () => { await actionhero.start(); }); afterAll(async () => { await actionhero.stop(); }); test("actions can be called in-line", async () => { const response = await action.run("randomNumber"); expect(response.randomNumber).toBeGreaterThanOrEqual(0); expect(response.stringRandomNumber).toMatch(/Your random number is/); }); test("in-line actions can accept params", async () => { // @ts-ignore const response = await action.run("cacheTest", null, { key: "testKey", value: "testValue", }); expect(response.cacheTestResults.saveResp).toBe(true); expect(response.cacheTestResults.deleteResp).toBe(true); }); test("in-line actions will fail when required params are missing", async () => { await expect(action.run("cacheTest")).rejects.toThrow( /key is a required parameter for this action/, ); }); describe("middleware", () => { afterEach(() => { api.actions.middleware = {}; api.actions.globalMiddleware = []; }); test("in-line actions run middleware", async () => { action.addMiddleware({ name: "test middleware", global: true, preProcessor: (data: ActionProcessor<any>) => { data.response._preProcessorNote = "note"; }, }); const response = await action.run("randomNumber"); expect(response.randomNumber).toBeGreaterThanOrEqual(0); expect(response._preProcessorNote).toBe("note"); }); test("throwing in middleware halts in-line actions", async () => { action.addMiddleware({ name: "test middleware", global: true, preProcessor: () => { throw new Error("nope"); }, }); await expect(action.run("randomNumber")).rejects.toThrow(/nope/); }); }); describe("connectionProperties", () => { afterEach(() => { api.actions.middleware = {}; api.actions.globalMiddleware = []; }); test("connection properties can be assigned", async () => { action.addMiddleware({ name: "test middleware", global: true, preProcessor: ({ connection }: { connection: Connection }) => { if (!connection?.session?.userId) throw new Error("not logged in"); }, }); await expect(action.run("randomNumber")).rejects.toThrow( /not logged in/, ); // @ts-ignore const response = await action.run("randomNumber", null, null, { session: { userId: 123 }, }); expect(response.randomNumber).toBeGreaterThanOrEqual(0); }); }); }); });