diff --git a/server/camera_endpoint.py b/server/camera_endpoint.py index d5ebe62..8bababb 100644 --- a/server/camera_endpoint.py +++ b/server/camera_endpoint.py @@ -11,14 +11,14 @@ import sqlite3 from typing import List from fastapi import Depends -from pydantic import BaseModel +from pydantic import BaseModel, Field class CameraRecord(BaseModel): period_start: int period_end: int - entries: int - exits: int + entries: int = Field(ge=0) + exits: int = Field(ge=0) class CameraEventsRequest(BaseModel): diff --git a/server/test_camera_endpoint.py b/server/test_camera_endpoint.py index 159fbc7..3917b75 100644 --- a/server/test_camera_endpoint.py +++ b/server/test_camera_endpoint.py @@ -89,3 +89,12 @@ def test_entries_exits_stored_correctly(): assert row[0] == 42 assert row[1] == 39 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)