All checks were successful
check / check (push) Successful in 33s
Pin golangci-lint to commit c0d3ddc9cf3faa61a4e378e879ece580256d76e5 (v2.12.2) in Dockerfile and script/bootstrap. Set .golangci.yml to the org-standard v2-schema config already used across the org's repos (owner-authorized; the same file is being landed as canonical via a prompts-repo PR). Lint settings live under linters.settings, so the lll, funlen, cyclop, and dupl thresholds are actually applied. The informational gomodguard deprecation warning this config can emit under v2.12 is accepted. Fix all findings surfaced by the now-active thresholds: - goconst: shared constants for repeated status, priority, and DNS fixture strings in watcher.go and the notify, state, and watcher tests - dupl: consolidate duplicated ntfy/slack HTTP-error tests and SendNotification endpoint-error tests behind shared helpers - lll: wrap long test table entries and comments; shorten one inline nolint justification
89 lines
1.5 KiB
Go
89 lines
1.5 KiB
Go
package notify_test
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"sneak.berlin/go/dnswatcher/internal/notify"
|
|
)
|
|
|
|
func TestAlertHistoryEmpty(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
h := notify.NewAlertHistory()
|
|
|
|
entries := h.Recent()
|
|
if len(entries) != 0 {
|
|
t.Fatalf("expected 0 entries, got %d", len(entries))
|
|
}
|
|
}
|
|
|
|
func TestAlertHistoryAddAndRecent(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
h := notify.NewAlertHistory()
|
|
|
|
now := time.Now().UTC()
|
|
|
|
h.Add(notify.AlertEntry{
|
|
Timestamp: now.Add(-2 * time.Minute),
|
|
Title: "first",
|
|
Message: "msg1",
|
|
Priority: prioInfo,
|
|
})
|
|
|
|
h.Add(notify.AlertEntry{
|
|
Timestamp: now.Add(-1 * time.Minute),
|
|
Title: "second",
|
|
Message: "msg2",
|
|
Priority: prioWarning,
|
|
})
|
|
|
|
entries := h.Recent()
|
|
if len(entries) != 2 {
|
|
t.Fatalf("expected 2 entries, got %d", len(entries))
|
|
}
|
|
|
|
// Newest first.
|
|
if entries[0].Title != "second" {
|
|
t.Errorf(
|
|
"expected newest first, got %q", entries[0].Title,
|
|
)
|
|
}
|
|
|
|
if entries[1].Title != "first" {
|
|
t.Errorf(
|
|
"expected oldest second, got %q", entries[1].Title,
|
|
)
|
|
}
|
|
}
|
|
|
|
func TestAlertHistoryOverflow(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
h := notify.NewAlertHistory()
|
|
|
|
const totalEntries = 110
|
|
|
|
// Fill beyond capacity.
|
|
for i := range totalEntries {
|
|
h.Add(notify.AlertEntry{
|
|
Timestamp: time.Now().UTC(),
|
|
Title: "alert",
|
|
Message: "msg",
|
|
Priority: string(rune('0' + i%10)),
|
|
})
|
|
}
|
|
|
|
entries := h.Recent()
|
|
|
|
const maxHistory = 100
|
|
|
|
if len(entries) != maxHistory {
|
|
t.Fatalf(
|
|
"expected %d entries, got %d",
|
|
maxHistory, len(entries),
|
|
)
|
|
}
|
|
}
|