From d288d196220b73deabe8eee9deb1743130920fa4 Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 4 Oct 2026 05:02:43 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D1=80=D0=B5=D0=B7=200=20[fix=20T12.4]:?= =?UTF-8?q?=20=D1=82=D0=B5=D1=81=D1=82=20=D1=81=D1=83=D1=80=D1=80=D0=BE?= =?UTF-8?q?=D0=B3=D0=B0=D1=82=D0=B0=20=D0=B2=20original=5Fname=20=D0=BD?= =?UTF-8?q?=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=20=D0=BF=D0=BE=20=D1=84=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=BC=D1=83=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B2=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Запрос с одиночным суррогатом в `original_name` отвергается схемой (pydantic `string_unicode`), а не «не ломает публикацию»: тест переименован в `..._is_schema_mismatch` и проверяет код SCHEMA_MISMATCH, отсутствие ack и `put`. Co-Authored-By: Claude Fable 5.1 --- api/tests/unit/test_worker.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/api/tests/unit/test_worker.py b/api/tests/unit/test_worker.py index c4e865e..7ea88fb 100644 --- a/api/tests/unit/test_worker.py +++ b/api/tests/unit/test_worker.py @@ -567,14 +567,19 @@ async def test_lone_surrogate_in_is_error_message_does_not_break_publishing(make assert body["error"]["message"].endswith(" tail") -async def test_lone_surrogate_in_original_name_does_not_break_publishing(make_env: EnvFactory) -> None: +async def test_lone_surrogate_in_original_name_is_schema_mismatch(make_env: EnvFactory) -> None: + """Одиночный суррогат в `original_name` схема запроса не пропускает (pydantic `string_unicode`): SCHEMA_MISMATCH + без ack и без файла в горячей папке; сам конверт публикуется.""" env = await make_env() request = env.request(original_name="скан\udc80.pdf") data = json.dumps(request, ensure_ascii=True).encode("ascii") # в JSON суррогат приходит экранированным await env.deliver(data) await asyncio.wait_for(env.worker.wait_idle(), 5) - [(_, body)] = env.results(request["job_id"]) - assert body["status"] == "error" + job_id = request["job_id"] + [(_, body)] = env.results(job_id) + assert_error(body, ErrorCode.SCHEMA_MISMATCH, raw=False) + assert env.acks(job_id) == [] + assert env.hotfolder.puts == [] # --- остановка и прямой вызов handle (параллелизм — test_worker_concurrency.py) ---------------------------------------