Files
XQKqueue/server/internal/httpapi/limiter_test.go
2026-07-15 11:26:37 +08:00

27 lines
754 B
Go

package httpapi
import (
"testing"
"time"
)
func TestQueryLimiterResetsAfterWindow(t *testing.T) {
now := time.Unix(100, 0)
limiter := newQueryLimiter(func() time.Time { return now }, 2, time.Minute)
if allowed, _ := limiter.allow("phone:test"); !allowed {
t.Fatal("first query should be allowed")
}
if allowed, _ := limiter.allow("phone:test"); !allowed {
t.Fatal("second query should be allowed")
}
if allowed, retry := limiter.allow("phone:test"); allowed || retry <= 0 {
t.Fatalf("third query should be limited with a retry duration, got allowed=%v retry=%s", allowed, retry)
}
now = now.Add(time.Minute)
if allowed, _ := limiter.allow("phone:test"); !allowed {
t.Fatal("query should be allowed after the window resets")
}
}