diff --git a/scripts/verify_upload_size.py b/scripts/verify_upload_size.py index 8098556..86d1dff 100644 --- a/scripts/verify_upload_size.py +++ b/scripts/verify_upload_size.py @@ -229,25 +229,19 @@ async def main() -> int: engine = create_async_engine(database_url) session_factory = async_sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) + # CL override + body size mismatch 는 httpx 의 h11 레이어가 client-side 에서 + # LocalProtocolError 로 거절하므로 서버 pre-check 경로를 외부에서 격리 테스트 + # 하기 어렵다. 대신 body 가 정직하게 slack 임계치 초과인 케이스로 pre-check + # 경로도 간접 확인 (body + multipart 오버헤드가 slack 초과 → CL 헤더 자동 + # 계산 시에도 초과되어 pre-check 가 먼저 catch). + slack_over_size = int(max_bytes * SLACK_RATIO) + 1 cases: list[Case] = [ Case(name="0 bytes", size=0, expected_status=400), Case(name="1 byte", size=1, expected_status=201), Case(name="max_bytes minus 1", size=max_bytes - 1, expected_status=201), Case(name="max_bytes exact", size=max_bytes, expected_status=201), Case(name="max_bytes plus 1", size=max_bytes + 1, expected_status=413), - Case( - name="cl slack over (override CL)", - size=100, - expected_status=413, - content_length_override=str(int(max_bytes * SLACK_RATIO) + 1), - ), - Case( - name="cl forge (body > max, CL tiny)", - size=max_bytes + 1, - expected_status={400, 413, 422, 500}, - content_length_override="1024", - skip_reason=None, # best-effort; 실패해도 전체 PASS 판정에는 영향 없음 - ), + Case(name="slack over (body > max*slack)", size=slack_over_size, expected_status=413), ] print(f"=== base_url={base_url} max_bytes={max_bytes} slack={SLACK_RATIO} ===")