From 0544f7218a72984b589c12c2333e49b6b2c697ea Mon Sep 17 00:00:00 2001 From: "Aaron D. Lee" Date: Fri, 3 Apr 2026 17:38:10 -0400 Subject: [PATCH] feat(F4): add SecurityConfig model to VigilarConfig --- tests/unit/test_config.py | 14 ++++++++++++++ vigilar/config.py | 8 ++++++++ 2 files changed, 22 insertions(+) diff --git a/tests/unit/test_config.py b/tests/unit/test_config.py index ae2c928..a26cfb6 100644 --- a/tests/unit/test_config.py +++ b/tests/unit/test_config.py @@ -82,6 +82,20 @@ class TestPetActivityConfig: assert cfg.zoomie_threshold == 0.8 +def test_security_config_defaults(): + from vigilar.config import SecurityConfig + sc = SecurityConfig() + assert sc.pin_hash == "" + assert sc.recovery_passphrase_hash == "" + + +def test_vigilar_config_has_security(): + from vigilar.config import VigilarConfig + cfg = VigilarConfig() + assert cfg.security.pin_hash == "" + assert cfg.security.recovery_passphrase_hash == "" + + class TestCameraConfigLocation: def test_default_location_is_interior(self): from vigilar.config import CameraConfig diff --git a/vigilar/config.py b/vigilar/config.py index 7da3cd1..b7e9a81 100644 --- a/vigilar/config.py +++ b/vigilar/config.py @@ -282,6 +282,13 @@ class PetsConfig(BaseModel): activity: PetActivityConfig = Field(default_factory=PetActivityConfig) +# --- Security Config --- + +class SecurityConfig(BaseModel): + pin_hash: str = "" + recovery_passphrase_hash: str = "" + + # --- Rule Config --- class RuleCondition(BaseModel): @@ -328,6 +335,7 @@ class VigilarConfig(BaseModel): vehicles: VehicleConfig = Field(default_factory=VehicleConfig) health: HealthConfig = Field(default_factory=HealthConfig) pets: PetsConfig = Field(default_factory=PetsConfig) + security: SecurityConfig = Field(default_factory=SecurityConfig) cameras: list[CameraConfig] = Field(default_factory=list) sensors: list[SensorConfig] = Field(default_factory=list) sensor_gpio: SensorGPIOConfig = Field(default_factory=SensorGPIOConfig, alias="sensors.gpio")