fix: reconcile daily report active users count and list (0.3.5)
Normalize empty-session placeholders; sync stats with report body after ingest. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -134,3 +134,59 @@ def test_normalize_report_body_adds_server_and_collapses_blanks():
|
||||
user_lines = [ln for ln in body.split("\n") if ln.strip().startswith("👤")]
|
||||
assert len(user_lines) == 2
|
||||
assert " 👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (2)" in body
|
||||
|
||||
|
||||
def test_normalize_ssh_active_users_mismatch_count_and_empty_body():
|
||||
host = Host(hostname="srv", display_name="SSH", ipv4="10.0.0.1", product="ssh-monitor")
|
||||
raw = "\n".join(
|
||||
[
|
||||
"📊 ЕЖЕДНЕВНЫЙ ОТЧЕТ SSH МОНИТОРИНГА",
|
||||
"👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (2):",
|
||||
" (нет данных)",
|
||||
]
|
||||
)
|
||||
body = normalize_report_body(raw, host, "ssh")
|
||||
assert "👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (0)" in body
|
||||
assert "(нет данных)" in body
|
||||
assert not any(ln.strip().startswith("👤") for ln in body.split("\n"))
|
||||
|
||||
|
||||
def test_normalize_rdp_empty_active_users_placeholder():
|
||||
host = Host(hostname="gw", display_name="K6A-DC3", ipv4="192.168.160.40", product="rdp-login-monitor")
|
||||
raw = "\n".join(
|
||||
[
|
||||
"📊 ЕЖЕДНЕВНЫЙ ОТЧЕТ МОНИТОРИНГА WINDOWS",
|
||||
"👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (0):",
|
||||
" (нет активных пользователей / RDP-сессий)",
|
||||
]
|
||||
)
|
||||
body = normalize_report_body(raw, host, "windows")
|
||||
assert "👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (0)" in body
|
||||
assert "нет активных пользователей" in body
|
||||
assert "👤 (нет активных" not in body
|
||||
|
||||
|
||||
def test_normalize_daily_report_reconciles_stats_from_body():
|
||||
from app.services.daily_report_format import normalize_daily_report_details
|
||||
|
||||
host = Host(hostname="srv", display_name="SSH", ipv4="10.0.0.2", product="ssh-monitor")
|
||||
details = {
|
||||
"report_body": "\n".join(
|
||||
[
|
||||
"📊 ЕЖЕДНЕВНЫЙ ОТЧЕТ SSH МОНИТОРИНГА",
|
||||
"👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (9):",
|
||||
" (нет данных)",
|
||||
]
|
||||
),
|
||||
"stats": {
|
||||
"successful_ssh": 1,
|
||||
"active_sessions": 9,
|
||||
"active_users": [],
|
||||
"generated_by": "agent",
|
||||
},
|
||||
}
|
||||
out = normalize_daily_report_details(details, host, "report.daily.ssh")
|
||||
assert out is not None
|
||||
assert out["stats"]["active_sessions"] == 0
|
||||
assert out["stats"]["active_users"] == []
|
||||
assert "👥 АКТИВНЫЕ ПОЛЬЗОВАТЕЛИ (0)" in out["report_body"]
|
||||
|
||||
Reference in New Issue
Block a user