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>/);
});
});