fix: CameraRecord — reject negative entries/exits via Pydantic Field(ge=0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-14 07:02:51 -07:00
parent 910508194a
commit a8f036f25f
2 changed files with 12 additions and 3 deletions

View File

@@ -11,14 +11,14 @@ import sqlite3
from typing import List from typing import List
from fastapi import Depends from fastapi import Depends
from pydantic import BaseModel from pydantic import BaseModel, Field
class CameraRecord(BaseModel): class CameraRecord(BaseModel):
period_start: int period_start: int
period_end: int period_end: int
entries: int entries: int = Field(ge=0)
exits: int exits: int = Field(ge=0)
class CameraEventsRequest(BaseModel): class CameraEventsRequest(BaseModel):

View File

@@ -89,3 +89,12 @@ def test_entries_exits_stored_correctly():
assert row[0] == 42 assert row[0] == 42
assert row[1] == 39 assert row[1] == 39
assert row[2] == "retailer-123" assert row[2] == "retailer-123"
def test_negative_counts_rejected():
"""Pydantic should reject negative entries/exits."""
from pydantic import ValidationError
from server.camera_endpoint import CameraRecord
with pytest.raises(ValidationError):
CameraRecord(period_start=1712000000, period_end=1712003600,
entries=-1, exits=0)