waterleaf / tests /test_rate_limit.py
hkaraoguz's picture
Deploy Waterleaf challenge app
60e41bb verified
Raw
History Blame Contribute Delete
604 Bytes
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