53 lines · 2.2 KB · TypeScript
RawDownload
import { describe, expect, it } from "@effect/vitest"; import { buildDocsUpstream, isDocsPath } from "./docs"; // The docs proxy claims `/docs` and forwards it to Mintlify. Two things must// hold: the path matcher catches the docs tree without swallowing the app-owned// `/api/docs` (Swagger) or unrelated `/docs`-prefixed words, and the rewritten// upstream request points at Mintlify with the path preserved and the session// cookie stripped.describe("isDocsPath", () => {  const docs = ["/docs", "/docs/", "/docs/quickstart", "/docs/guides/auth"];  for (const pathname of docs) {    it(`proxies ${pathname} to Mintlify`, () => {      expect(isDocsPath(pathname)).toBe(true);    });  }   // `/api/docs` is the app-owned Swagger UI — it must reach the Effect handler,  // not Mintlify. `/docsmith` guards against a bare `startsWith("/docs")` that  // would capture unrelated words.  const notDocs = ["/api/docs", "/docsmith", "/", "/home", "/login", "/mcp"];  for (const pathname of notDocs) {    it(`leaves ${pathname} alone`, () => {      expect(isDocsPath(pathname)).toBe(false);    });  }}); describe("buildDocsUpstream", () => {  const upstreamFor = (url: string, headers?: HeadersInit) =>    buildDocsUpstream(new Request(url, { headers }));   it("swaps the origin to Mintlify over https while preserving path + query", () => {    const upstream = new URL(upstreamFor("https://executor.sh/docs/guides/auth?theme=dark").url);    expect(upstream.hostname).toBe("executor.mintlify.dev");    expect(upstream.protocol).toBe("https:");    expect(upstream.pathname).toBe("/docs/guides/auth");    expect(upstream.search).toBe("?theme=dark");  });   it("forwards the public host so Mintlify can build canonical links", () => {    const upstream = upstreamFor("https://executor.sh/docs");    expect(upstream.headers.get("x-forwarded-host")).toBe("executor.sh");    expect(upstream.headers.get("x-forwarded-proto")).toBe("https");  });   it("strips the cookie so the session never leaks to the docs origin", () => {    const upstream = upstreamFor("https://executor.sh/docs", {      cookie: "wos-session=secret",    });    expect(upstream.headers.has("cookie")).toBe(false);  });});