feat(api): publish validated OpenAPI contract
CI / validate (push) Successful in 7m15s
Release / release (push) Successful in 11m32s

This commit is contained in:
dmg
2026-09-10 15:11:57 -04:00
parent c2ac2ad16b
commit 47782b3ccc
19 changed files with 2420 additions and 12 deletions
@@ -1,3 +1,4 @@
import { assertResponse } from "@/test/openapi-contract";
import { hashToken } from "@minecraft-account-manager/auth";
import { beforeEach, describe, expect, it, vi } from "vitest";
@@ -38,7 +39,18 @@ vi.mock("@/lib/database", () => ({
},
}));
import { GET, POST } from "./route";
import { GET as routeGet, POST as routePost } from "./route";
async function GET(request: Request) {
const response = routeGet(request);
await assertResponse("/api/velocity/connection", "get", response);
return response;
}
async function POST(request: Request) {
const response = await routePost(request);
await assertResponse("/api/velocity/connection", "post", response);
return response;
}
function validRequest(overrides: Record<string, unknown> = {}) {
return new Request("http://localhost/api/velocity/connection", {
@@ -64,7 +76,7 @@ describe("Velocity connection reporting endpoint", () => {
});
it("rejects methods other than POST with Problem Details", async () => {
const response = GET(new Request("http://localhost/api/velocity/connection"));
const response = await GET(new Request("http://localhost/api/velocity/connection"));
expect(response.status).toBe(405);
expect(response.headers.get("content-type")).toContain("application/problem+json");
expect(response.headers.get("allow")).toBe("POST");