Release 1.0.0 with server info console
This commit is contained in:
@@ -104,6 +104,78 @@ class SecurityAndControlApiTests(unittest.IsolatedAsyncioTestCase):
|
||||
response.json()["detail"], "Сервер не настроен: задайте IGNIS_API_KEY"
|
||||
)
|
||||
|
||||
async def test_system_info_returns_installed_server_metadata_without_secrets(
|
||||
self,
|
||||
):
|
||||
with patch.dict(
|
||||
os.environ,
|
||||
{
|
||||
"IGNIS_INSTANCE_NAME": "Home Lab",
|
||||
"APP_TIMEZONE": "Europe/Moscow",
|
||||
"IGNIS_PUBLIC_BASE_URL": "https://ignis.example.local/",
|
||||
"IGNIS_BUILD_VERSION": "1.2.3",
|
||||
"IGNIS_BUILD_DATE": "2026-05-21T10:11:12Z",
|
||||
"IGNIS_GIT_SHA": "abcdef1234567890",
|
||||
"SCAN_NETWORK": "192.168.0.0/24",
|
||||
},
|
||||
clear=False,
|
||||
):
|
||||
response = await self.client.get(
|
||||
"/system/info",
|
||||
headers=self._master_headers(),
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
payload = response.json()
|
||||
self.assertEqual(payload["app_name"], "Ignis Core")
|
||||
self.assertEqual(payload["instance_name"], "Home Lab")
|
||||
self.assertEqual(payload["timezone"], "Europe/Moscow")
|
||||
self.assertEqual(payload["build"]["version"], "1.2.3")
|
||||
self.assertEqual(payload["build"]["build_date"], "2026-05-21T10:11:12Z")
|
||||
self.assertEqual(payload["build"]["git_sha"], "abcdef1234567890")
|
||||
self.assertEqual(
|
||||
payload["urls"]["configured_public_base_url"],
|
||||
"https://ignis.example.local",
|
||||
)
|
||||
self.assertEqual(
|
||||
payload["urls"]["effective_public_base_url"],
|
||||
"https://ignis.example.local",
|
||||
)
|
||||
self.assertEqual(payload["urls"]["observed_base_url"], "http://testserver")
|
||||
self.assertTrue(payload["configuration"]["configured"])
|
||||
self.assertTrue(payload["configuration"]["master_key_configured"])
|
||||
self.assertTrue(payload["configuration"]["scan_network_configured"])
|
||||
self.assertTrue(payload["configuration"]["public_base_url_configured"])
|
||||
self.assertTrue(payload["configuration"]["build_metadata_complete"])
|
||||
self.assertIn("started_at", payload)
|
||||
self.assertNotIn(MASTER_KEY, response.text)
|
||||
self.assertNotIn("api_key", payload)
|
||||
|
||||
async def test_guest_key_can_read_system_info(self):
|
||||
create_response = await self.client.post(
|
||||
"/api-keys",
|
||||
headers=self._master_headers(),
|
||||
params={"name": "wall-panel"},
|
||||
)
|
||||
guest_key = create_response.json()["key"]
|
||||
|
||||
response = await self.client.get(
|
||||
"/system/info",
|
||||
headers={"X-API-Key": guest_key},
|
||||
)
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
payload = response.json()
|
||||
self.assertEqual(payload["app_name"], "Ignis Core")
|
||||
self.assertGreaterEqual(payload["uptime_seconds"], 0)
|
||||
self.assertFalse(payload["diagnostics_visible"])
|
||||
self.assertNotIn("instance_name", payload)
|
||||
self.assertNotIn("timezone", payload)
|
||||
self.assertNotIn("started_at", payload)
|
||||
self.assertNotIn("build", payload)
|
||||
self.assertNotIn("urls", payload)
|
||||
self.assertNotIn("configuration", payload)
|
||||
|
||||
async def test_master_can_create_key_and_list_endpoint_returns_public_id(self):
|
||||
create_response = await self.client.post(
|
||||
"/api-keys",
|
||||
|
||||
Reference in New Issue
Block a user