evOo-local/apps/www/src/middleware.test.ts
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

62 lines
1.9 KiB
TypeScript

import { describe, expect, it } from "vitest";
import middleware from "../middleware";
describe("marketing site middleware", () => {
it("negotiates Markdown on the canonical page URL", async () => {
const response = middleware(
new Request("https://evoo.com/", {
headers: { accept: "text/markdown,text/html;q=0.8" },
}),
);
expect(response.status).toBe(200);
expect(response.headers.get("content-type")).toBe(
"text/markdown; charset=utf-8",
);
expect(response.headers.get("vary")).toBe("Accept, Accept-Encoding");
await expect(response.text()).resolves.toContain("# evOo");
});
it("gives generic agent fetches a recoverable Markdown 404", async () => {
const response = middleware(
new Request("https://evoo.com/does-not-exist", {
headers: { accept: "*/*" },
}),
);
expect(response.status).toBe(404);
expect(response.headers.get("content-type")).toBe(
"text/markdown; charset=utf-8",
);
await expect(response.text()).resolves.toContain(
"https://evoo.com/sitemap-index.xml",
);
});
it("returns 406 for representations the site does not provide", async () => {
const response = middleware(
new Request("https://evoo.com/", {
headers: { accept: "application/json" },
}),
);
expect(response.status).toBe(406);
expect(response.headers.get("vary")).toBe("Accept, Accept-Encoding");
await expect(response.text()).resolves.toContain(
"text/html or text/markdown",
);
});
it("continues browser requests with negotiation-safe response headers", () => {
const response = middleware(
new Request("https://evoo.com/", {
headers: { accept: "text/html" },
}),
);
expect(response.status).toBe(200);
expect(response.headers.get("vary")).toBe("Accept, Accept-Encoding");
expect(response.headers.get("link")).toContain("/index.md");
});
});