logs in swos

This commit is contained in:
Mateusz Gruszczyński
2026-04-13 12:18:23 +02:00
parent 4d2356f60b
commit d661079bd1
3 changed files with 95 additions and 4 deletions

View File

@@ -1,3 +1,4 @@
from datetime import datetime
from pathlib import Path
from fastapi.testclient import TestClient
@@ -93,7 +94,7 @@ def test_switchos_connection_probe_is_exposed_in_device_route(monkeypatch):
'test_connection',
lambda db, router, global_settings: {
'success': True,
'tested_at': '2026-04-13T10:00:00',
'tested_at': datetime(2026, 4, 13, 10, 0, 0),
'model': 'SwitchOS',
'uptime': 'HTTP 200',
'hostname': 'MikroTik SwitchOS',
@@ -149,3 +150,60 @@ def test_switchos_binary_backup_is_saved_as_swb(monkeypatch, tmp_path):
assert backup_response.status_code == 200
assert backup_response.json()['backup_type'] == 'binary'
assert backup_response.json()['file_name'].endswith('.swb')
logs_response = client.get('/api/logs', headers=headers)
assert logs_response.status_code == 200
assert any('Binary backup OK for SwitchOS device switch03' in item['message'] for item in logs_response.json())
def test_switchos_connection_test_creates_operation_log(monkeypatch):
from app.services import router_service as router_service_module
monkeypatch.setattr(
router_service_module.router_service,
'probe_connection',
lambda router, global_ssh_key=None, global_settings=None: {
'success': True,
'tested_at': datetime(2026, 4, 13, 10, 0, 0),
'model': 'SwitchOS',
'uptime': 'HTTP 200',
'hostname': 'switch04',
'version': None,
'error': None,
'transport': 'http',
'server': 'MikroTik',
'auth_mode': 'digest',
'http_status': '200',
'backup_available': True,
},
)
with TestClient(app) as client:
_, headers = _login(client)
create_response = client.post(
'/api/routers',
json={
'name': 'switch04',
'device_type': 'switchos',
'host': '192.168.88.5',
'port': 80,
'ssh_user': 'admin',
'ssh_password': 'secret',
'ssh_key': None,
},
headers=headers,
)
assert create_response.status_code == 200
device_id = create_response.json()['id']
response = client.get(f'/api/routers/{device_id}/test-connection', headers=headers)
assert response.status_code == 200
logs_response = client.get('/api/logs', headers=headers)
assert logs_response.status_code == 200
assert any(
'Connection test OK for SwitchOS device switch04' in item['message']
and 'auth=digest' in item['message']
and 'http=200' in item['message']
for item in logs_response.json()
)