feat: add operational panel presentation helpers

This commit is contained in:
gti
2026-09-22 16:59:05 -03:00
parent 9f1c259c3e
commit 0846b9d1b0
6 changed files with 174 additions and 1 deletions
+15 -1
View File
@@ -1,4 +1,5 @@
from datetime import datetime, timedelta, timezone
import pytest
from fastapi.testclient import TestClient
from sqlalchemy import create_engine
@@ -44,14 +45,27 @@ def test_password_and_event_redaction_and_retention():
assert session.get(AgentEvent, old.id) is None and session.get(AgentEvent, keep.id) is not None
def test_local_development_admin_accepts_operator_supplied_short_password():
def test_short_local_password_requires_explicit_setting(monkeypatch):
session_factory = setup_db()
with session_factory() as session:
monkeypatch.delenv("ALLOW_WEAK_DEV_PASSWORD", raising=False)
with pytest.raises(ValueError):
create_admin(session, "admin", "admin")
monkeypatch.setenv("ALLOW_WEAK_DEV_PASSWORD", "1")
admin = create_admin(session, "admin", "admin")
assert admin.username == "admin"
assert verify_password("admin", admin.password_hash)
def test_production_admin_keeps_strong_password_minimum(monkeypatch):
session_factory = setup_db()
with session_factory() as session:
monkeypatch.setenv("APP_ENV", "production")
monkeypatch.setenv("ALLOW_WEAK_DEV_PASSWORD", "1")
with pytest.raises(ValueError):
create_admin(session, "admin", "admin")
def test_health_model_separates_safe_blocked_from_technical_failure():
now = datetime.now(timezone.utc)
recent = SimpleNamespace(last_seen_at=now, failed_products=0, last_job_status="COMPLETED")