Add SNMP profile mapping and fix asset cleanup
This commit is contained in:
@@ -3,7 +3,7 @@ from sqlalchemy import select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.secrets import encrypt_secret
|
||||
from app.models import AlertRule, Asset, Credential, Monitor
|
||||
from app.models import AlertRule, Asset, Credential, Incident, Monitor
|
||||
|
||||
|
||||
def test_create_website_monitor_creates_asset_and_alert_rule(client: TestClient, db_session: Session) -> None:
|
||||
@@ -211,3 +211,41 @@ def test_create_snmp_monitors_rejects_missing_profile(client: TestClient, db_ses
|
||||
)
|
||||
|
||||
assert response.status_code == 404
|
||||
|
||||
|
||||
def test_delete_asset_deletes_attached_monitors_and_resolves_incidents(client: TestClient, db_session: Session) -> None:
|
||||
asset = Asset(name="Router", asset_type="network_device", address="192.0.2.1", status="down", extra={})
|
||||
monitor = Monitor(
|
||||
asset=asset,
|
||||
name="Router ping",
|
||||
monitor_type="ping",
|
||||
target="192.0.2.1",
|
||||
config={},
|
||||
interval_seconds=60,
|
||||
status="down",
|
||||
)
|
||||
db_session.add_all([asset, monitor])
|
||||
db_session.flush()
|
||||
incident = Incident(
|
||||
asset_id=asset.id,
|
||||
monitor_id=monitor.id,
|
||||
alert_rule_id=None,
|
||||
title="Router ping is failing",
|
||||
severity="warning",
|
||||
status="open",
|
||||
details={"last_message": "Ping failed"},
|
||||
)
|
||||
db_session.add(incident)
|
||||
db_session.commit()
|
||||
|
||||
response = client.delete(f"/assets/{asset.id}")
|
||||
|
||||
assert response.status_code == 204
|
||||
assert db_session.get(Asset, asset.id) is None
|
||||
assert db_session.get(Monitor, monitor.id) is None
|
||||
db_session.refresh(incident)
|
||||
assert incident.status == "resolved"
|
||||
assert incident.resolved_at is not None
|
||||
assert incident.asset_id is None
|
||||
assert incident.monitor_id is None
|
||||
assert incident.details["recovery_message"] == "Asset was deleted"
|
||||
|
||||
Reference in New Issue
Block a user