Release v4928.1.4.2 stable
This commit is contained in:
68
tests/test_v480_operational_automation_audit_recovery.py
Normal file
68
tests/test_v480_operational_automation_audit_recovery.py
Normal file
@@ -0,0 +1,68 @@
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def read(path: str) -> str:
|
||||
return (ROOT / path).read_text(encoding="utf-8")
|
||||
|
||||
|
||||
def test_v480_outbox_stale_recovery_service_and_worker_are_present():
|
||||
service = read("app/integration_outbox_service.py")
|
||||
worker = read("scripts/process_outbox.py")
|
||||
script = read("scripts/recover_stale_outbox.py")
|
||||
assert "def recover_stale_processing_outbox" in service
|
||||
assert "OUTBOX_STALE_PROCESSING_MINUTES" in service
|
||||
assert "OUTBOX_STALE_RECOVERY_MODE" in service
|
||||
assert "manual_only" in service
|
||||
assert "retry_pending" in service
|
||||
assert "mark_failed" in service
|
||||
assert "recover_stale_processing_outbox" in worker
|
||||
assert "OUTBOX_RECOVER_STALE_BEFORE_PROCESS" in worker
|
||||
assert "recover_stale_processing_outbox" in script
|
||||
|
||||
|
||||
def test_v480_operator_audit_service_and_sensitive_actions_are_audited():
|
||||
audit = read("app/operator_audit_service.py")
|
||||
tasks = read("app/task_service.py")
|
||||
outbox_page = read("app/admin_ui/pages/outbox.py")
|
||||
assert "def record_operator_action" in audit
|
||||
assert "event_type = 'operator_action'" in audit
|
||||
assert "task_completed" in tasks
|
||||
assert "task_skipped" in tasks
|
||||
assert "task_reclassified" in tasks
|
||||
assert "outbox_reprocess_requested" in outbox_page
|
||||
assert "outbox_marked_failed" in outbox_page
|
||||
assert "outbox_ignored" in outbox_page
|
||||
|
||||
|
||||
def test_v480_sensitive_actions_have_htmx_confirmation():
|
||||
tasks_page = read("app/admin_ui/pages/tasks.py")
|
||||
outbox_page = read("app/admin_ui/pages/outbox.py")
|
||||
assert "hx-confirm=\"Confirmar conclusão desta tarefa?\"" in tasks_page
|
||||
assert "hx-confirm=\"Ignorar esta tarefa?" in tasks_page
|
||||
assert "hx-confirm=\"Guardar reclassificação manual desta tarefa?\"" in tasks_page
|
||||
assert "hx-confirm=\"Reprocessar este item da outbox?\"" in outbox_page
|
||||
assert "hx-confirm=\"Ignorar este item da outbox?\"" in outbox_page
|
||||
assert "hx-confirm=\"Marcar este item como failed?\"" in outbox_page
|
||||
|
||||
|
||||
def test_v480_operational_health_and_operations_filters_are_expanded():
|
||||
ops = read("app/admin_ui/view_models/operations.py")
|
||||
service = read("app/operations_service.py")
|
||||
system = read("app/admin_ui/pages/system.py")
|
||||
assert "Ambíguas" in ops
|
||||
assert "Atrasadas" in ops
|
||||
assert "is_overdue" in ops
|
||||
assert "operator_actions_24h" in service
|
||||
assert "outbox_stale" in service
|
||||
assert "Outbox stale" in system
|
||||
assert "Ações operador 24h" in system
|
||||
|
||||
|
||||
def test_v480_documentation_exists():
|
||||
doc = read("docs/CLIENTFLOW_V480_OPERATIONAL_AUTOMATION_AUDIT_RECOVERY.md")
|
||||
assert "Operational Automation, Audit & Recovery" in doc
|
||||
assert "OUTBOX_STALE_PROCESSING_MINUTES" in doc
|
||||
assert "operator_action" in doc
|
||||
assert "hx-confirm" in doc
|
||||
Reference in New Issue
Block a user