Files
clientflow_backend/tests/test_v42_review_fixes.py
2026-06-09 22:55:58 +01:00

41 lines
1.6 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
def test_outbox_dry_run_has_explicit_non_sent_state():
text = (ROOT / "scripts" / "process_outbox.py").read_text()
service = (ROOT / "app" / "integration_outbox_service.py").read_text()
assert "mark_outbox_dry_run" in text
assert 'status="dry_run"' in service
assert "OUTBOX_DRY_RUN=true; ação não executada" in service
def test_jasmin_quotation_idempotency_is_deterministic():
text = (ROOT / "app" / "jasmin_service.py").read_text()
assert 'idempotency_key=f"jasmin:quotation:{opportunity_id}"' in text
assert 'idempotency_key=f"jasmin:quotation:{opportunity_id}:{uuid.uuid4()}"' not in text
def test_admin_token_setting_is_wired():
config = (ROOT / "app" / "config.py").read_text()
dashboard = (ROOT / "app" / "admin_dashboard.py").read_text()
assert "clientflow_admin_token" in config
assert "require_admin_access" in dashboard
assert "X-ClientFlow-Admin-Token" in dashboard
def test_outbox_operational_states_are_visible():
service = (ROOT / "app" / "integration_outbox_service.py").read_text()
dashboard = (ROOT / "app" / "admin_dashboard.py").read_text()
for state in ["blocked", "dry_run", "cancelled", "processing"]:
assert state in service
assert state in dashboard
def test_internal_api_uses_admin_token_when_configured():
text = (ROOT / "app" / "api" / "internal.py").read_text()
assert "require_internal_access" in text
assert "X-ClientFlow-Admin-Token" in text
assert "dependencies=[Depends(require_internal_access)]" in text