import { describe, expect, it } from "vitest"; import { createDavFixture, davRequest } from "@tests/worker/helpers/dav"; import { fetchWorker } from "@tests/worker/helpers/http"; import { propfindBody } from "./helpers"; describe("CalDAV discovery", () => { it("advertises CalDAV support with OPTIONS", async () => { const fixture = await createDavFixture(["caldav.full"]); const response = await fetchWorker(davRequest(fixture, "/calendars/", { method: "OPTIONS" })); expect(response.status).toBe(204); expect(response.headers.get("allow")).toContain("REPORT"); expect(response.headers.get("allow")).toContain("MKCOL"); expect(response.headers.get("dav")).toContain("calendar-access"); }); it("discovers the default calendar", async () => { const fixture = await createDavFixture(["caldav.full"]); const response = await fetchWorker( davRequest(fixture, "/calendars/", { method: "PROPFIND", headers: { depth: "1", "content-type": "application/xml" }, body: propfindBody( "", ), }), ); expect(response.status).toBe(207); const xml = await response.text(); expect(xml).toContain("/calendars/default/"); expect(xml).toContain(""); expect(xml).not.toContain(""); expect(xml).toMatch(/]*>sync:\d+<\/CS:getctag>/); }); });