From 8efd4ad0abcf535fbc9ee73ac5e841c4dabd946c Mon Sep 17 00:00:00 2001 From: m4 Date: Fri, 24 Jul 2026 09:45:57 +0800 Subject: [PATCH] fix(image-gen): wrap corrupt-config GET in the 422 error envelope --- EvoScientist/model_registry/http_api.py | 4 ++++ tests/test_image_generation_http.py | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/EvoScientist/model_registry/http_api.py b/EvoScientist/model_registry/http_api.py index f953c77..9376841 100644 --- a/EvoScientist/model_registry/http_api.py +++ b/EvoScientist/model_registry/http_api.py @@ -658,6 +658,10 @@ class ModelRegistryHttpApi: response = await asyncio.to_thread(self._image_generation_response) except ModelRegistryError as exc: return _error_response(exc, request_id) + except ImageGenError as exc: + return _error_response( + ModelRegistryError(VALIDATION_FAILED, str(exc)), request_id + ) return JSONResponse(response) async def put_image_generation(self, request: Request) -> Response: diff --git a/tests/test_image_generation_http.py b/tests/test_image_generation_http.py index c2b71f5..42e5f01 100644 --- a/tests/test_image_generation_http.py +++ b/tests/test_image_generation_http.py @@ -226,3 +226,15 @@ def test_read_scope_cannot_write(client): json=_settings_payload(), ) assert response.status_code == 403 + + +def test_get_corrupt_section_returns_422_envelope(client, config_path): + config_path.write_text( + "image_generation:\n models:\n - id: gpt-image-2\n provider: midjourney\n", + encoding="utf-8", + ) + response = client.get("/api/image-generation", headers=_admin_headers()) + assert response.status_code == 422 + body = response.json() + assert body["code"] == "VALIDATION_FAILED" + assert "midjourney" not in json.dumps(body)