fix(scripts): verify_upload_size case 6 — CL override 대신 실제 body 크기로 슬랙 초과 테스트
httpx 의 h11 레이어가 Content-Length 와 body 길이 불일치를 client-side 에서 LocalProtocolError 로 거절해서, CL 헤더만 override 해 서버 pre-check 경로를 외부에서 격리 테스트하는 것이 불가능했음. 대신 body 자체가 slack 임계치를 초과하는 케이스로 변경 — multipart CL 이 자동으로 `max_bytes * slack_ratio` 를 넘어 서버 pre-check 가 먼저 catch 함. 또한 기존 case 7 (CL 위조) 는 같은 이유로 실현 불가능해 제거. 5 케이스에서 6 케이스로 조정. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -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} ===")
|
||||
|
||||
Reference in New Issue
Block a user