Срез 0 [fix T12.4]: тест суррогата в original_name назван по фактическому поведению

Запрос с одиночным суррогатом в `original_name` отвергается схемой (pydantic `string_unicode`), а не «не ломает
публикацию»: тест переименован в `..._is_schema_mismatch` и проверяет код SCHEMA_MISMATCH, отсутствие ack и `put`.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-04 05:02:43 +04:00
parent 0420c85219
commit d288d19622

View File

@ -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) ---------------------------------------