UNPKG

@lbu/cli

Version:

CLI containing utilities and simple script runner

88 lines (78 loc) 2.04 kB
import { newLogger } from "@lbu/insight"; import { createBodyParsers, session } from "@lbu/server"; import { uuid } from "@lbu/stdlib"; import { cleanupTestPostgresDatabase, createTestPostgresDatabase, FileCache, newMinioClient, newSessionStore, removeBucketAndObjectsInBucket, } from "@lbu/store"; import Axios from "axios"; import axiosCookieJar from "axios-cookiejar-support"; import thoughCookie from "tough-cookie"; import { createApp } from "./api.js"; import { createApiClient } from "./generated/apiClient.js"; import { app, appBucket, ensureBuckets, fileStore, minio, serviceLogger, sessionStore, setApp, setAppBucket, setBodyParsers, setFileCache, setFileStore, setMinio, setServiceLogger, setSessionMiddleware, setSessionStore, setSql, sql, } from "./services/index.js"; /** * */ export async function injectTestServices() { setServiceLogger(newLogger({ ctx: { type: "test-services" } })); setSql(await createTestPostgresDatabase()); setAppBucket(uuid()); setMinio(newMinioClient({})); setSessionStore(newSessionStore(sql)); setFileCache(new FileCache(sql, minio, appBucket)); setApp(createApp()); setBodyParsers(createBodyParsers({})); setSessionMiddleware(session(app, { store: sessionStore })); await ensureBuckets("us-east-1"); } /** * */ export async function cleanupTestServices() { serviceLogger.info("cleanup test services"); await cleanupTestPostgresDatabase(sql); setSql(undefined); await removeBucketAndObjectsInBucket(minio, appBucket); setMinio(undefined); setAppBucket(undefined); } /** * Creates an axios instance with cookie support and injects it into the generated api * client. * * @return {AxiosInstance} */ export function createAndInjectApiClient() { const axiosInstance = Axios.create({ withCredentials: true, }); // Add cookie jar support axiosCookieJar.default(axiosInstance); axiosInstance.defaults.jar = new thoughCookie.CookieJar(); createApiClient(axiosInstance); return axiosInstance; }