fix(guardrails): use validateBody() in /api/guardrails/test route (#3621)

Replaces request.json() + TestRequestSchema.parse() pattern with the
canonical validateBody()/isValidationFailure() pattern from
@/shared/validation/helpers, satisfying check:route-validation:t06.
This commit is contained in:
Diego Rodrigues de Sa e Souza
2026-06-11 05:06:58 -03:00
committed by GitHub
parent c315a2394c
commit 88857237a2

View File

@@ -14,6 +14,7 @@ import { CORS_HEADERS, handleCorsOptions } from "@/shared/utils/cors";
import { createErrorResponse } from "@/lib/api/errorResponse";
import { requireManagementAuth } from "@/lib/api/requireManagementAuth";
import { registerDefaultGuardrails } from "@/lib/guardrails/registry";
import { validateBody, isValidationFailure } from "@/shared/validation/helpers";
const TestRequestSchema = z.object({
input: z.union([z.string(), z.record(z.unknown()), z.array(z.unknown())]),
@@ -28,17 +29,19 @@ export async function POST(request: NextRequest) {
const authError = await requireManagementAuth(request);
if (authError) return authError;
let parsed: z.infer<typeof TestRequestSchema>;
let rawBody: unknown;
try {
parsed = TestRequestSchema.parse(await request.json());
rawBody = await request.json();
} catch {
return createErrorResponse({
status: 400,
message: "Invalid request body — expected { input: string | object | array, disabledGuardrails?: string[] }",
type: "invalid_request",
});
return createErrorResponse({ status: 400, message: "Invalid JSON body", type: "invalid_request" });
}
const validation = validateBody(TestRequestSchema, rawBody);
if (isValidationFailure(validation)) {
return createErrorResponse({ status: 400, message: "Invalid request body — expected { input: string | object | array, disabledGuardrails?: string[] }", type: "invalid_request" });
}
const parsed = validation.data;
const registry = registerDefaultGuardrails();
const outcome = await registry.runPreCallHooks(parsed.input, {
disabledGuardrails: parsed.disabledGuardrails,