import Koa from "koa"; import { createServer } from "node:http"; import type { AddressInfo } from "node:net"; import { apirouter } from "../../src/webapi/apirouter.js"; import type { BackendDbInterface } from "../../src/db/types/DbInterface.js"; export interface TestServer { url: string; close(): Promise; } export async function createTestServer( db: BackendDbInterface, ): Promise { const app = new Koa(); const router = apirouter(db); app.use(router.routes()); app.use(router.allowedMethods()); const server = createServer(app.callback()); await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)); const { port } = server.address() as AddressInfo; return { url: `http://127.0.0.1:${port}`, close: () => new Promise((resolve, reject) => server.close((err) => (err ? reject(err) : resolve())), ), }; }