The public tree and its history contain only the listed paths. Earlier projection history remains preserved internally. Source-Sha: 913fde029b935671833254797f0f20f1eb9fabba Policy-Sha: 913fde029b935671833254797f0f20f1eb9fabba Tree-Digest: 180ae530c1058a2a5c89837bdce2d323ae83e669e38590ca72e75b8d92b7262f
56 lines
1.7 KiB
Go
56 lines
1.7 KiB
Go
package event
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/Fimeg/RedFlag/agent/internal/models"
|
|
"github.com/gofrs/uuid/v5"
|
|
)
|
|
|
|
func TestLocalHistorySurvivesDeliveryAndRestart(t *testing.T) {
|
|
path := filepath.Join(t.TempDir(), "events.json")
|
|
buffer := NewBuffer(path)
|
|
e := &models.SystemEvent{ID: uuid.Must(uuid.NewV4()), Message: "scan failed", Severity: "error"}
|
|
if err := buffer.BufferEvent(e); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := buffer.Clear(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
reopened := NewBuffer(path)
|
|
history, err := reopened.ReadHistory()
|
|
if err != nil || len(history) != 1 || history[0].ID != e.ID {
|
|
t.Fatalf("history=%v error=%v", history, err)
|
|
}
|
|
if err := reopened.BufferEvent(e); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, err := reopened.GetBufferedEvents(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
history, err = reopened.ReadHistory()
|
|
if err != nil || len(history) != 1 {
|
|
t.Fatalf("retried event duplicated in history: count=%d error=%v", len(history), err)
|
|
}
|
|
}
|
|
|
|
func TestHistoryFailureDoesNotDiscardDeliveryQueue(t *testing.T) {
|
|
buffer := NewBuffer(filepath.Join(t.TempDir(), "events.json"))
|
|
if err := os.WriteFile(buffer.historyPath(), []byte("damaged history"), 0600); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
e := &models.SystemEvent{ID: uuid.Must(uuid.NewV4()), Message: "keep this event"}
|
|
if err := buffer.BufferEvent(e); err == nil {
|
|
t.Fatal("history damage was silent")
|
|
}
|
|
pending, err := buffer.ReadBufferedEvents()
|
|
if err != nil || len(pending) != 1 {
|
|
t.Fatalf("delivery queue lost: count=%d error=%v", len(pending), err)
|
|
}
|
|
data, err := os.ReadFile(buffer.historyPath())
|
|
if err != nil || string(data) != "damaged history" {
|
|
t.Fatal("damaged history was overwritten")
|
|
}
|
|
}
|