From 95ac2f149c9cca28792fe887e61b41da3b0ebe28 Mon Sep 17 00:00:00 2001 From: luvs01 Date: Sun, 9 Aug 2026 15:32:05 +0900 Subject: [PATCH] fix: reject non-object custom model bodies --- src/server/management/model-routes.ts | 6 ++++-- tests/catalog-input-modality-enum.test.ts | 14 ++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) 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", {