- Config ruff dans pyproject.toml : règles E/W/F/I/UP/B, whitelist des appels d'injection FastAPI (Depends/File/Form/Query) pour B008, B904 ignoré (traduction volontaire des exceptions en réponses HTTP) - Auto-fixes : tri des imports, suppression d'imports inutilisés, annotations PEP 604, f-strings sans placeholder, modes open redondants - Suppression de variables inutilisées (config.reset_setting, parser locataires) ruff check . : All checks passed ; 61 tests OK Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
30 lines
789 B
Python
30 lines
789 B
Python
"""Tests de la lecture bornée des uploads."""
|
|
|
|
import asyncio
|
|
import io
|
|
|
|
import pytest
|
|
from fastapi import UploadFile
|
|
|
|
from plesna_gerance.utils.uploads import UploadTooLargeError, read_upload_limited
|
|
|
|
|
|
def _upload(content: bytes) -> UploadFile:
|
|
return UploadFile(filename="x.pdf", file=io.BytesIO(content))
|
|
|
|
|
|
def test_read_upload_under_limit():
|
|
content = b"hello world"
|
|
result = asyncio.run(read_upload_limited(_upload(content), max_size=1024))
|
|
assert result == content
|
|
|
|
|
|
def test_read_upload_over_limit_raises():
|
|
content = b"x" * 2048
|
|
with pytest.raises(UploadTooLargeError):
|
|
asyncio.run(read_upload_limited(_upload(content), max_size=1024))
|
|
|
|
|
|
def test_read_upload_empty():
|
|
assert asyncio.run(read_upload_limited(_upload(b""), max_size=1024)) == b""
|