2026-05-09 12:15:44 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
from fixed_window import FixedWindowLimiter
|
|
|
|
|
|
2026-05-09 20:17:23 +00:00
|
|
|
|
2026-05-09 12:15:44 +00:00
|
|
|
def test_limit_respected():
|
|
|
|
|
limiter = FixedWindowLimiter(10, 10)
|
|
|
|
|
try:
|
|
|
|
|
for i in range(9):
|
|
|
|
|
with limiter:
|
|
|
|
|
pass
|
|
|
|
|
except RuntimeError as e:
|
|
|
|
|
assert False, f"Limiter raised an exception -> {e}"
|
2026-05-09 20:17:23 +00:00
|
|
|
|
|
|
|
|
|
2026-05-09 12:15:44 +00:00
|
|
|
def test_limit_enforced():
|
|
|
|
|
limiter = FixedWindowLimiter(10, 10)
|
|
|
|
|
with pytest.raises(RuntimeError) as e:
|
|
|
|
|
for i in range(11):
|
|
|
|
|
with limiter:
|
|
|
|
|
pass
|
|
|
|
|
assert "Rate exceeded" in str(e.value)
|