"""The agent fleet page opens on the fleet itself: a status column, silent agents first (#5126).""" from datetime import datetime, timedelta, timezone from types import SimpleNamespace as NS from plugins.host_agent.routes import fleet_rows, fleet_state from tests._templates import render_plugin_template def _reg(host_id, seen_ago_s): now = datetime.now(timezone.utc) return NS(host_id=host_id, last_seen_at=None if seen_ago_s is None else now - timedelta(seconds=seen_ago_s), host_ip="10.0.0.5", agent_version="1.4.0", distro="debian") def test_fleet_state(): now = datetime.now(timezone.utc) assert fleet_state(_reg("a", 30), now, 180) == "up" assert fleet_state(_reg("a", 600), now, 180) == "stale" assert fleet_state(_reg("a", None), now, 180) == "pending" async def test_silent_agents_come_first_and_the_table_leads_the_page(app): now = datetime.now(timezone.utc) hosts = {i: NS(id=i, name=n) for i, n in [("h1", "web"), ("h2", "nas"), ("h3", "attic")]} rows = fleet_rows([_reg("h1", 30), _reg("h2", 900), _reg("h3", None)], hosts, now, 180) assert [r["name"] for r in rows] == ["nas", "attic", "web"] async with app.test_request_context("/plugins/host_agent/fleet/"): page = await render_plugin_template(app, "host_agent", "settings_list.html", registrations=rows, new_token=None, install_url=None, ansible_available=False, deploy_targets=[], deploy_groups=[], managed_key_set=False) assert page.index("Status") < page.index('action="/plugins/host_agent/fleet/add-host"') assert 'Silent' in page assert 'Never reported' in page assert 'Reporting' in page assert page.index('href="/hosts/h2">nas') < page.index('href="/hosts/h1">web') assert 'data-confirm="Delete the agent registration for nas?' in page