"""Teste P1-5 (hardening 2026-07-03): plafon global corp cerere (BodyCapMiddleware).""" from __future__ import annotations import io import json import os import tempfile import pytest from fastapi.testclient import TestClient @pytest.fixture() def client(monkeypatch): tmp = tempfile.mkdtemp() monkeypatch.setenv("AUTOPASS_DB_PATH", os.path.join(tmp, "bc.db")) monkeypatch.setenv("AUTOPASS_LOG_DIR", os.path.join(tmp, "logs")) # Prag mic ca sa nu generam MB-uri reale in test. monkeypatch.setenv("AUTOPASS_MAX_REQUEST_BYTES", "1000") from app.config import get_settings get_settings.cache_clear() from app.main import app with TestClient(app) as c: yield c get_settings.cache_clear() def test_multipart_peste_limita_413(client): data = b"x" * 5000 r = client.post( "/v1/import", files={"file": ("mare.csv", io.BytesIO(data), "text/csv")}, ) assert r.status_code == 413 assert r.json()["cod"] == "CERERE_PREA_MARE" def test_json_peste_limita_413(client): payload = {"blob": "x" * 5000} r = client.post( "/v1/prezentari", content=json.dumps(payload), headers={"content-type": "application/json"}, ) assert r.status_code == 413 assert r.json()["cod"] == "CERERE_PREA_MARE" def test_cerere_normala_sub_limita_trece(client): r = client.get("/healthz") assert r.status_code == 200 def test_content_length_mare_body_mic_413_devreme(client): """Content-Length declarat peste limita respinge inainte sa citeasca body-ul, chiar daca body-ul trimis efectiv e mic (client "mincinos").""" r = client.post( "/v1/prezentari", content=b"{}", headers={"content-type": "application/json", "content-length": "999999"}, ) assert r.status_code == 413 assert r.json()["cod"] == "CERERE_PREA_MARE"