Files
yovision/Bell/internal/alert/alert_test.go
T
QiuSW 8208118904
Harness governance / validate (pull_request) Has been cancelled
feat(bell): add alert acknowledgement vertical slice
2026-08-11 17:01:53 +08:00

44 lines
1.3 KiB
Go

package alert
import (
"os"
"path/filepath"
"testing"
)
func TestLoadRulesRejectsUnknownAndDuplicateValues(t *testing.T) {
path := filepath.Join(t.TempDir(), "rules.json")
valid := `{"version":1,"rules":[{"tenant_id":1,"site_id":2,"rule_key":"zone-entry","display_name":"区域闯入","event_kind":"zone_entry","minimum_severity":"medium","enabled":true,"effective_from":"2026-08-11T00:00:00Z"}]}`
if err := os.WriteFile(path, []byte(valid), 0o600); err != nil {
t.Fatal(err)
}
rules, err := LoadRules(path)
if err != nil || len(rules) != 1 {
t.Fatalf("load valid rules: %v %#v", err, rules)
}
if err := os.WriteFile(path, []byte(`{"version":1,"unknown":true,"rules":[]}`), 0o600); err != nil {
t.Fatal(err)
}
if _, err := LoadRules(path); err == nil {
t.Fatal("unknown rule document property was accepted")
}
if err := os.WriteFile(path, []byte(valid+` trailing`), 0o600); err != nil {
t.Fatal(err)
}
if _, err := LoadRules(path); err == nil {
t.Fatal("trailing rule file data was accepted")
}
}
func TestSeverityRankIsStable(t *testing.T) {
for index, value := range []string{"low", "medium", "high", "critical"} {
rank, ok := SeverityRank(value)
if !ok || rank != index {
t.Fatalf("rank %q: %d %v", value, rank, ok)
}
}
if _, ok := SeverityRank("urgent"); ok {
t.Fatal("unknown severity was accepted")
}
}