发布 0.1.0:通知渠道、告警规则、令牌版本与安全加固
This commit is contained in:
@@ -142,3 +142,48 @@ func TestKeepAuditEvent(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestAuditCursorAdvance(t *testing.T) {
|
||||
now := time.Date(2026, 7, 10, 12, 0, 0, 0, time.UTC)
|
||||
base := AuditCursor{
|
||||
Start: now.Add(-24 * time.Hour),
|
||||
End: now,
|
||||
WindowHours: 24,
|
||||
}
|
||||
cases := []struct {
|
||||
name string
|
||||
cur AuditCursor
|
||||
empty bool
|
||||
wantHours int
|
||||
wantDone bool
|
||||
}{
|
||||
{"有事件重置 24h 窗", AuditCursor{Start: base.Start, End: base.End, WindowHours: 96}, false, 24, false},
|
||||
{"空窗倍增", base, true, 48, false},
|
||||
{"倍增封顶 720h", AuditCursor{Start: base.Start, End: base.End, WindowHours: 512}, true, 720, false},
|
||||
{"窗宽缺省按 24h 起算", AuditCursor{Start: base.Start, End: base.End}, true, 48, false},
|
||||
{"越过保留期即尽头", AuditCursor{Start: now.AddDate(0, 0, -366), End: now.AddDate(0, 0, -365), WindowHours: 24}, false, 0, true},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
next, done := tc.cur.advance(now, tc.empty)
|
||||
if done != tc.wantDone {
|
||||
t.Fatalf("done = %v, want %v", done, tc.wantDone)
|
||||
}
|
||||
if done {
|
||||
return
|
||||
}
|
||||
if next.WindowHours != tc.wantHours {
|
||||
t.Fatalf("WindowHours = %d, want %d", next.WindowHours, tc.wantHours)
|
||||
}
|
||||
if !next.End.Equal(tc.cur.Start) {
|
||||
t.Fatalf("新窗 End = %v, 应紧邻上窗 Start %v", next.End, tc.cur.Start)
|
||||
}
|
||||
if got := next.End.Sub(next.Start); got != time.Duration(tc.wantHours)*time.Hour {
|
||||
t.Fatalf("窗宽 = %v, want %dh", got, tc.wantHours)
|
||||
}
|
||||
if next.Page != "" {
|
||||
t.Fatalf("新窗应清空窗内游标, got %q", next.Page)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user