feat(deploy): add portable external-service stack

This commit is contained in:
2026-07-11 22:12:21 +02:00
parent 715de6649b
commit 767df63a33
7 changed files with 265 additions and 1 deletions
+25 -1
View File
@@ -2,9 +2,33 @@ import { test, expect } from "vitest";
import { buildApp } from "../src/app.js";
import { loadConfig } from "../src/config.js";
test("GET /health ritorna ok", async () => {
test("GET /health reports process readiness without external services", async () => {
const app = buildApp(loadConfig({ THT_HARNESS_DIR: "/tmp/h" }));
const res = await app.inject({ method: "GET", url: "/health" });
expect(res.statusCode).toBe(200);
expect(res.headers["content-type"]).toContain("application/json");
expect(res.json()).toEqual({ status: "ok" });
});
test("SSE response headers are flushed before the first event", async () => {
const app = buildApp(loadConfig({ THT_HARNESS_DIR: "/tmp/h" }));
await app.listen({ port: 0, host: "127.0.0.1" });
const port = (app.server.address() as { port: number }).port;
const controller = new AbortController();
try {
const response = await Promise.race([
fetch(`http://127.0.0.1:${port}/sessions/header-probe/events`, {
signal: controller.signal,
}),
new Promise<never>((_, reject) =>
setTimeout(() => reject(new Error("SSE headers were not flushed")), 250),
),
]);
expect(response.headers.get("content-type")).toContain("text/event-stream");
expect(response.headers.get("cache-control")).toBe("no-cache");
} finally {
controller.abort();
await app.close();
}
});