From 6e779742d8990423e545c726c11aa5047beb1f34 Mon Sep 17 00:00:00 2001 From: rcourtman Date: Mon, 1 Dec 2025 16:12:50 +0000 Subject: [PATCH] test: Add comprehensive tests for AcknowledgeAlert and UnacknowledgeAlert functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TestAcknowledgeAlertNotFound: tests error path when alert doesn't exist - TestUnacknowledgeAlertNotFound: tests error path when alert doesn't exist - TestUnacknowledgeAlertSuccess: tests successful unacknowledgement with state verification Coverage improvement: - AcknowledgeAlert: 92.3% → 100% - UnacknowledgeAlert: 41.7% → 100% - alerts package: 52.6% → 52.8% --- internal/alerts/alerts_test.go | 68 ++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/internal/alerts/alerts_test.go b/internal/alerts/alerts_test.go index 202ce81..7090ece 100644 --- a/internal/alerts/alerts_test.go +++ b/internal/alerts/alerts_test.go @@ -4053,3 +4053,71 @@ func TestHandleHostOnline(t *testing.T) { } }) } + +func TestAcknowledgeAlertNotFound(t *testing.T) { + t.Parallel() + m := NewManager() + + err := m.AcknowledgeAlert("nonexistent-alert", "user1") + + if err == nil { + t.Fatal("expected error when acknowledging nonexistent alert") + } + if !strings.Contains(err.Error(), "alert not found") { + t.Errorf("expected 'alert not found' error, got: %v", err) + } +} + +func TestUnacknowledgeAlertNotFound(t *testing.T) { + t.Parallel() + m := NewManager() + + err := m.UnacknowledgeAlert("nonexistent-alert") + + if err == nil { + t.Fatal("expected error when unacknowledging nonexistent alert") + } + if !strings.Contains(err.Error(), "alert not found") { + t.Errorf("expected 'alert not found' error, got: %v", err) + } +} + +func TestUnacknowledgeAlertSuccess(t *testing.T) { + t.Parallel() + m := NewManager() + + // Create and acknowledge an alert first + alertID := "test-alert-123" + now := time.Now() + m.activeAlerts[alertID] = &Alert{ + ID: alertID, + Acknowledged: true, + AckTime: &now, + AckUser: "user1", + } + m.ackState[alertID] = ackRecord{acknowledged: true, user: "user1", time: now} + + // Unacknowledge the alert + err := m.UnacknowledgeAlert(alertID) + + if err != nil { + t.Fatalf("unexpected error unacknowledging alert: %v", err) + } + + // Verify alert state was updated + alert := m.activeAlerts[alertID] + if alert.Acknowledged { + t.Error("expected Acknowledged to be false") + } + if alert.AckTime != nil { + t.Error("expected AckTime to be nil") + } + if alert.AckUser != "" { + t.Errorf("expected AckUser to be empty, got: %s", alert.AckUser) + } + + // Verify ackState was removed + if _, exists := m.ackState[alertID]; exists { + t.Error("expected ackState entry to be deleted") + } +}