log-guardian/internal/store/store_test.go
WayfinderAK 6f7549d439
All checks were successful
build-image / docker (push) Successful in 53s
Implement phase 1 foundations
2026-07-03 20:14:06 -08:00

39 lines
1.2 KiB
Go

package store
import "testing"
func TestUpsertRuleDefaults(t *testing.T) {
s := NewFileStore(t.TempDir() + "/config.json")
if err := s.UpsertRule(Rule{Name: "API Errors", LogQL: `{service="api"} |= "error"`}); err != nil {
t.Fatal(err)
}
data, err := s.Load()
if err != nil {
t.Fatal(err)
}
if len(data.Rules) != 1 {
t.Fatalf("expected one rule, got %d", len(data.Rules))
}
rule := data.Rules[0]
if rule.ID != "api-errors" || rule.Threshold != 1 || rule.Window != "5m" || rule.Cooldown != "1h" {
t.Fatalf("unexpected defaults: %#v", rule)
}
}
func TestUpsertAlertChannelPreservesSecret(t *testing.T) {
s := NewFileStore(t.TempDir() + "/config.json")
if err := s.UpsertAlertChannel(AlertChannel{ID: "ntfy", Name: "ntfy", Type: "ntfy", Enabled: true, Params: map[string]string{"token": "secret", "topic": "alerts"}}); err != nil {
t.Fatal(err)
}
if err := s.UpsertAlertChannel(AlertChannel{ID: "ntfy", Name: "ntfy", Type: "ntfy", Enabled: true, Params: map[string]string{"topic": "alerts2"}}); err != nil {
t.Fatal(err)
}
data, err := s.Load()
if err != nil {
t.Fatal(err)
}
if got := data.AlertChannels[0].Params["token"]; got != "secret" {
t.Fatalf("secret was not preserved: %q", got)
}
}