Files
ttstd-infinite-canvas/backend/internal/app/registration_limits_test.go

27 lines
709 B
Go

package app
import (
"context"
"testing"
"time"
"yingce/backend/internal/platform"
)
func TestRequestRetryAfterMatchesWindow(t *testing.T) {
s := &Service{coordinator: platform.NewCoordinatorWithRedis(nil, "registration-test")}
ctx := context.Background()
if ok, err := s.AllowRequest(ctx, "email-code:test", 1, time.Hour); err != nil || !ok {
t.Fatal(err)
}
if ok, _ := s.AllowRequest(ctx, "email-code:test", 1, time.Hour); ok {
t.Fatal("limit bypassed")
}
wait := s.RequestRetryAfter(ctx, "email-code:test", time.Hour)
if wait < 59*time.Minute || wait > time.Hour {
t.Fatalf("wrong wait: %v", wait)
}
if s.coordinator.LocalRateCount() != 1 {
t.Fatal("rejection consumed quota")
}
}