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) } }