deadhead-space-freight-tycoon/apps/server/test/health.test.ts

38 lines
1.3 KiB
TypeScript

import { afterAll, beforeAll, describe, expect, it } from "vitest";
import { buildApp } from "../src/app";
import { loadConfig } from "../src/config";
import { testConfig } from "./helpers";
describe("server skeleton", () => {
const app = buildApp(testConfig());
let baseUrl = "";
beforeAll(async () => {
baseUrl = await app.listen({ host: "127.0.0.1", port: 0 });
});
afterAll(() => app.close());
it("answers the health endpoint over HTTP", async () => {
const response = await fetch(`${baseUrl}/api/health`);
expect(response.status).toBe(200);
expect(await response.json()).toEqual({ status: "ok" });
});
});
describe("config loading", () => {
it("rejects a missing database URL and a short auth secret, listing both", () => {
expect(() =>
loadConfig({ BETTER_AUTH_SECRET: "short", BETTER_AUTH_URL: "http://localhost:3000" }),
).toThrow(/DATABASE_URL[\s\S]*BETTER_AUTH_SECRET|BETTER_AUTH_SECRET[\s\S]*DATABASE_URL/);
});
it("applies defaults", () => {
const config = loadConfig({
DATABASE_URL: "postgres://u:p@localhost:5432/db",
BETTER_AUTH_SECRET: "x".repeat(32),
BETTER_AUTH_URL: "http://localhost:3000",
});
expect(config).toMatchObject({ env: "development", port: 3000, logLevel: "info" });
});
});