import { describe, expect, it } from "vitest"; import { repos } from "@cfdm/db"; import { buildApp } from "../src/app.js"; import { loadConfig } from "../src/config.js"; async function authHeaders(app: Awaited>) { const config = loadConfig(); const res = await app.inject({ method: "POST", url: "/api/v1/auth/login", payload: { username: config.adminUsername, password: "admin" }, }); expect(res.statusCode).toBe(200); const { token } = res.json() as { token: string }; return { authorization: `Bearer ${token}` }; } describe("subdomains", () => { it("PATCH /subdomains/:id toggles enabled and renames", async () => { const app = await buildApp({ config: { ...loadConfig(), staticDir: null }, memory: true, }); const headers = await authHeaders(app); const domain = repos.createDomain( app.db, null, "example.com", "cf-zone-1", ); const created = repos.createSubdomain( app.db, domain.id, "www", "www.example.com", ); expect(created.enabled).toBe(true); const disableRes = await app.inject({ method: "PATCH", url: `/api/v1/subdomains/${created.id}`, headers, payload: { enabled: false }, }); expect(disableRes.statusCode).toBe(200); expect(disableRes.json().enabled).toBe(false); const renameRes = await app.inject({ method: "PATCH", url: `/api/v1/subdomains/${created.id}`, headers, payload: { name: "api" }, }); expect(renameRes.statusCode).toBe(200); const renamed = renameRes.json(); expect(renamed.name).toBe("api"); expect(renamed.fqdn).toBe("api.example.com"); await app.close(); }); });