Files
ProxmoxDash/alert_events_test.go

59 lines
1.8 KiB
Go

package main
import "testing"
func TestAlertLifecycle(t *testing.T) {
store, err := openStore(":memory:")
if err != nil {
t.Fatal(err)
}
defer store.Close()
alert := Alert{ID: "disk", Severity: "warning", Source: "Диски", Title: "SMART", Message: "Проверьте диск"}
visible, err := store.SyncAlerts([]Alert{alert})
if err != nil || len(visible) != 1 || visible[0].EventID == 0 || visible[0].FirstSeen == 0 || visible[0].LastSeen == 0 {
t.Fatalf("unexpected new alert: %+v %v", visible, err)
}
firstID := visible[0].EventID
if err = store.AcknowledgeAlert(firstID); err != nil {
t.Fatal(err)
}
visible, err = store.SyncAlerts([]Alert{alert})
if err != nil || len(visible) != 0 {
t.Fatalf("acknowledged alert became visible: %+v %v", visible, err)
}
if _, err = store.SyncAlerts(nil); err != nil {
t.Fatal(err)
}
visible, err = store.SyncAlerts([]Alert{alert})
if err != nil || len(visible) != 1 || visible[0].EventID == firstID {
t.Fatalf("recurring alert was not new: %+v %v", visible, err)
}
history, err := store.AlertHistory(20)
if err != nil || len(history) != 2 {
t.Fatalf("unexpected history: %+v %v", history, err)
}
}
func TestPendingEmailAlerts(t *testing.T) {
store, err := openStore(":memory:")
if err != nil {
t.Fatal(err)
}
defer store.Close()
visible, err := store.SyncAlerts([]Alert{{ID: "cpu", Severity: "critical", Source: "CPU", Title: "Load"}})
if err != nil {
t.Fatal(err)
}
pending, err := store.PendingEmailAlerts()
if err != nil || len(pending) != 1 {
t.Fatalf("unexpected pending: %+v %v", pending, err)
}
if err = store.MarkAlertsEmailed(visible); err != nil {
t.Fatal(err)
}
pending, err = store.PendingEmailAlerts()
if err != nil || len(pending) != 0 {
t.Fatalf("emailed alert repeated: %+v %v", pending, err)
}
}