File size: 604 Bytes
60e41bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from waterleaf.rate_limit import SlidingWindowRateLimiter


def test_rate_limiter_blocks_after_limit_inside_window():
    limiter = SlidingWindowRateLimiter(limit=2, window_seconds=60)

    assert limiter.allow("203.0.113.10", now=100.0) is True
    assert limiter.allow("203.0.113.10", now=110.0) is True
    assert limiter.allow("203.0.113.10", now=120.0) is False


def test_rate_limiter_expires_old_attempts():
    limiter = SlidingWindowRateLimiter(limit=1, window_seconds=60)

    assert limiter.allow("203.0.113.10", now=100.0) is True
    assert limiter.allow("203.0.113.10", now=161.0) is True