Files
minerops/backend/tests/test_agent_registry.py
T
2026-08-27 17:00:56 +00:00

121 lines
3.8 KiB
Python

"""Focused tests for the Agent Management read model."""
import unittest
from uuid import UUID
from app.agent_registry.service import AgentRegistryService
from app.identity import required_api_permission
SITE_ID = UUID("00000000-0000-4000-8000-000000001800")
ZONE_ID = UUID("00000000-0000-4000-8000-000000001801")
class FakeAgentRegistryRepository:
def list_registry(self):
return {
"sites": [
{
"id": SITE_ID,
"name": "Test Site",
}
],
"zones": [
{
"id": ZONE_ID,
"site_id": SITE_ID,
"site_name": "Test Site",
"name": "Network A",
"description": None,
"is_enabled": True,
"assigned_agent_id": "agent-test",
"networks": ["10.50.0.0/24"],
}
],
"agents": [
{
"agent_id": "agent-test",
"display_name": "Test Agent",
"site_id": SITE_ID,
"site_name": "Test Site",
"agent_zone_id": ZONE_ID,
"agent_zone_name": "Network A",
"agent_zone_enabled": True,
"hostname": "test-agent",
"version": "1.0.0-alpha",
"ip_address": "10.50.0.10",
"last_checkin_at": "2026-08-26T20:00:00+00:00",
"credential_state": "active",
"credential_created_at": "2026-08-26T19:00:00+00:00",
"credential_revoked_at": None,
}
],
}
class AgentRegistryServiceTests(unittest.TestCase):
def test_projection_is_factual_and_zone_aware(self):
data = AgentRegistryService(
FakeAgentRegistryRepository()
).list_registry()
self.assertEqual(len(data.agents), 1)
self.assertEqual(len(data.sites), 1)
self.assertEqual(len(data.zones), 1)
agent = data.agents[0]
self.assertEqual(agent.agent_id, "agent-test")
self.assertEqual(agent.credential_state, "active")
self.assertEqual(agent.routing_state, "assigned")
self.assertEqual(
data.zones[0].networks,
["10.50.0.0/24"],
)
def test_unassigned_and_disabled_routing_are_not_fabricated_online_states(self):
repository = FakeAgentRegistryRepository()
repository.list_registry = lambda: {
"sites": [],
"zones": [],
"agents": [
{
"agent_id": "legacy",
"display_name": None,
"site_id": None,
"site_name": "Legacy Site",
"agent_zone_id": None,
"agent_zone_name": None,
"agent_zone_enabled": None,
"hostname": None,
"version": None,
"ip_address": None,
"last_checkin_at": "2026-08-26T20:00:00+00:00",
"credential_state": "legacy",
"credential_created_at": None,
"credential_revoked_at": None,
}
],
}
data = AgentRegistryService(repository).list_registry()
self.assertEqual(
data.agents[0].routing_state,
"unassigned",
)
self.assertEqual(
data.agents[0].credential_state,
"legacy",
)
def test_api_permission_mapping_is_explicit(self):
self.assertEqual(
required_api_permission("GET", "/api/agents"),
"agents.view",
)
if __name__ == "__main__":
unittest.main()