Files
site/apps/api/tests/core/test_redis.py
T

33 lines
1.1 KiB
Python

from unittest.mock import MagicMock, patch
import pytest
from fastapi import HTTPException, Request
from app.core.config import settings
from app.core.redis import check_rate_limit, client_ip, _buckets
def test_check_rate_limit_uses_memory_fallback(monkeypatch):
monkeypatch.setattr(settings, "enable_rate_limit", True)
_buckets.clear()
with patch("app.core.redis.get_redis_client", return_value=None):
check_rate_limit("memory-key", limit=1, window_seconds=60)
with pytest.raises(HTTPException) as exc:
check_rate_limit("memory-key", limit=1, window_seconds=60)
assert exc.value.status_code == 429
def test_client_ip_honors_trusted_proxy(monkeypatch):
monkeypatch.setattr(settings, "trusted_proxy_ips", "127.0.0.1")
request = MagicMock(spec=Request)
request.headers = {"X-Forwarded-For": "203.0.113.10, 127.0.0.1"}
request.client.host = "127.0.0.1"
assert client_ip(request) == "203.0.113.10"
def test_client_ip_unknown_without_client():
request = MagicMock(spec=Request)
request.headers = {}
request.client = None
assert client_ip(request) == "unknown"