diff --git a/src/server/management/model-routes.ts b/src/server/management/model-routes.ts index de218f205..2eb49fa6c 100644 --- a/src/server/management/model-routes.ts +++ b/src/server/management/model-routes.ts @@ -319,8 +319,9 @@ export async function handleModelRoutes(ctx: ManagementContext): Promise cm.id === id); if (idx === -1) return jsonResponse({ error: "not found" }, 404); diff --git a/tests/catalog-input-modality-enum.test.ts b/tests/catalog-input-modality-enum.test.ts index e13e8762d..3b0afc13e 100644 --- a/tests/catalog-input-modality-enum.test.ts +++ b/tests/catalog-input-modality-enum.test.ts @@ -120,6 +120,20 @@ describe("custom-model API rejects out-of-enum input modalities", () => { expect(persistCalls).toBe(0); }); + test("custom-model writes reject non-object JSON bodies", async () => { + for (const body of [null, [], "model"]) { + persistCalls = 0; + const posted = await callCustomModels("POST", body); + expect(posted?.status).toBe(400); + expect(await posted!.json()).toEqual({ error: "invalid JSON body" }); + + const put = await callCustomModels("PUT", body, "/api/custom-models/existing-uuid"); + expect(put?.status).toBe(400); + expect(await put!.json()).toEqual({ error: "invalid JSON body" }); + expect(persistCalls).toBe(0); + } + }); + test("an accepted modality set still passes", async () => { persistCalls = 0; const res = await callCustomModels("POST", {