TestRateLimiterMemoryStore_TimeOrdering verifies time ordering consistency in rate limiting decisions
(t *testing.T)
| 613 | |
| 614 | // TestRateLimiterMemoryStore_TimeOrdering verifies time ordering consistency in rate limiting decisions |
| 615 | func TestRateLimiterMemoryStore_TimeOrdering(t *testing.T) { |
| 616 | t.Parallel() |
| 617 | |
| 618 | store := NewRateLimiterMemoryStoreWithConfig(RateLimiterMemoryStoreConfig{ |
| 619 | Rate: 1, |
| 620 | Burst: 2, |
| 621 | ExpiresIn: 5 * time.Second, |
| 622 | }) |
| 623 | |
| 624 | currentTime := time.Date(2009, time.November, 10, 23, 0, 0, 0, time.UTC) |
| 625 | store.timeNow = func() time.Time { |
| 626 | return currentTime |
| 627 | } |
| 628 | |
| 629 | // First two requests should succeed (burst=2) |
| 630 | allowed1, _ := store.Allow("user1") |
| 631 | assert.True(t, allowed1, "Request 1 should be allowed (burst)") |
| 632 | |
| 633 | allowed2, _ := store.Allow("user1") |
| 634 | assert.True(t, allowed2, "Request 2 should be allowed (burst)") |
| 635 | |
| 636 | // Third request should be denied |
| 637 | allowed3, _ := store.Allow("user1") |
| 638 | assert.False(t, allowed3, "Request 3 should be denied (burst exhausted)") |
| 639 | |
| 640 | // Advance time by 1 second |
| 641 | currentTime = currentTime.Add(1 * time.Second) |
| 642 | |
| 643 | // Fourth request should succeed |
| 644 | allowed4, _ := store.Allow("user1") |
| 645 | assert.True(t, allowed4, "Request 4 should be allowed (1 token available)") |
| 646 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…