59 lines
1.8 KiB
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)
|
|
}
|
|
}
|