CoolFace
Apppublic

Steph680/ormuz

sourceHugging Faceupdated 3d agoView on Hugging Face
0likes
test_selfcheck.py65 linesDownload Raw Back to tests
1"""Tests de l'auto-diagnostic (sondes simulées, sans réseau)."""2 3import asyncio4from datetime import timedelta5 6from app import db, selfcheck7from app.state import STATUS, utc_now8 9 10async def _jeton_ok():11    return {"nom": "Jeton Hugging Face", "niveau": "ok", "detail": "simulé"}12 13 14def test_verdict_global_est_le_pire(tmp_path, monkeypatch):15    monkeypatch.setenv("DB_PATH", str(tmp_path / "t.db"))16    monkeypatch.setattr(selfcheck, "_check_jeton_hf", _jeton_ok)17    monkeypatch.setattr(STATUS, "gdelt_last_poll_at", utc_now())18    monkeypatch.setattr(STATUS, "gdelt_last_error", "")19    monkeypatch.setattr(STATUS, "backfill_state", "terminé")20    monkeypatch.setattr(STATUS, "translate_last_error", "")21    monkeypatch.setattr(STATUS, "translate_pending", 0)22 23    async def scenario():24        await db.init_db()25        # Aucune donnée PortWatch : la sonde trafic est rouge -> verdict global bad.26        result = await selfcheck.run_checks()27        assert result["verdict"] == "bad"28        par_nom = {s["nom"]: s["niveau"] for s in result["sondes"]}29        assert par_nom["Trafic PortWatch"] == "bad"30        assert par_nom["Base SQLite"] == "ok"31 32        # Avec du trafic frais, tout passe au vert (sauvegarde en mode dev = warn).33        async with db.connect() as conn:34            await conn.execute(35                "INSERT INTO portwatch_daily (date_utc, n_cargo, n_tanker, n_total)"36                " VALUES (?, 40, 30, 70)",37                ((utc_now().date() - timedelta(days=6)).isoformat(),))38            await conn.commit()39        result = await selfcheck.run_checks()40        par_nom = {s["nom"]: s["niveau"] for s in result["sondes"]}41        assert par_nom["Trafic PortWatch"] == "ok"42        assert result["verdict"] == "warn"  # sauvegarde non configurée en local43 44    asyncio.run(scenario())45 46 47def test_historique_stocke_et_purge(tmp_path, monkeypatch):48    monkeypatch.setenv("DB_PATH", str(tmp_path / "t.db"))49 50    async def scenario():51        await db.init_db()52        # Un vieux verdict au-delà de 7 jours doit être purgé au prochain stockage.53        async with db.connect() as conn:54            await conn.execute(55                "INSERT INTO health_checks (checked_at, verdict, details) VALUES (?, 'ok', '[]')",56                ((utc_now() - timedelta(days=9)).isoformat(),))57            await conn.commit()58        await selfcheck.store_result(59            {"verifie_le": utc_now().isoformat(), "verdict": "warn", "sondes": []})60        hist = await selfcheck.history()61        assert len(hist) == 162        assert hist[0]["verdict"] == "warn"63 64    asyncio.run(scenario())65