import time from l4d2web.services.rate_limit import check_rate_limit def test_under_threshold_allows(): bucket: dict[str, list[float]] = {} for _ in range(3): assert check_rate_limit(bucket, "1.2.3.4", window=60.0, max_attempts=5) is False def test_at_threshold_blocks(): bucket: dict[str, list[float]] = {} for _ in range(5): assert check_rate_limit(bucket, "1.2.3.4", window=60.0, max_attempts=5) is False assert check_rate_limit(bucket, "1.2.3.4", window=60.0, max_attempts=5) is True def test_other_ips_independent(): bucket: dict[str, list[float]] = {} for _ in range(5): check_rate_limit(bucket, "1.2.3.4", window=60.0, max_attempts=5) assert check_rate_limit(bucket, "5.6.7.8", window=60.0, max_attempts=5) is False def test_old_attempts_expire(): bucket: dict[str, list[float]] = {} for _ in range(5): check_rate_limit(bucket, "1.2.3.4", window=0.05, max_attempts=5) time.sleep(0.1) assert check_rate_limit(bucket, "1.2.3.4", window=0.05, max_attempts=5) is False