test: Add tests for ResetRateLimitForIP function
- Test nil globalRateLimitConfig early return (no panic) - Test actual rate limit reset clears IP from limiter - Improves coverage from 80% to 100%
This commit is contained in:
parent
5431ad2595
commit
c6030d1b13
1 changed files with 44 additions and 0 deletions
|
|
@ -420,3 +420,47 @@ func TestUniversalRateLimitMiddleware_HeaderFormat(t *testing.T) {
|
|||
t.Fatalf("header %q should parse as decimal: %v", limitHeader, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResetRateLimitForIP(t *testing.T) {
|
||||
t.Run("nil globalRateLimitConfig does not panic", func(t *testing.T) {
|
||||
// Save current config and restore after test
|
||||
savedConfig := globalRateLimitConfig
|
||||
globalRateLimitConfig = nil
|
||||
defer func() {
|
||||
globalRateLimitConfig = savedConfig
|
||||
}()
|
||||
|
||||
// This should not panic
|
||||
ResetRateLimitForIP("192.168.1.1")
|
||||
})
|
||||
|
||||
t.Run("resets rate limit for specific IP", func(t *testing.T) {
|
||||
InitializeRateLimiters()
|
||||
testIP := "10.0.0.50"
|
||||
limiter := globalRateLimitConfig.AuthEndpoints
|
||||
|
||||
// Make some requests to add this IP to the limiter
|
||||
for i := 0; i < 3; i++ {
|
||||
limiter.Allow(testIP)
|
||||
}
|
||||
|
||||
// Verify IP has attempts recorded
|
||||
limiter.mu.Lock()
|
||||
if _, exists := limiter.attempts[testIP]; !exists {
|
||||
limiter.mu.Unlock()
|
||||
t.Fatal("expected IP to have attempts recorded before reset")
|
||||
}
|
||||
limiter.mu.Unlock()
|
||||
|
||||
// Reset this specific IP
|
||||
ResetRateLimitForIP(testIP)
|
||||
|
||||
// Verify IP is removed from all limiters
|
||||
limiter.mu.Lock()
|
||||
if _, exists := limiter.attempts[testIP]; exists {
|
||||
limiter.mu.Unlock()
|
||||
t.Fatal("expected IP to be cleared after reset")
|
||||
}
|
||||
limiter.mu.Unlock()
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue