diff --git a/fastapi_traffic/backends/memory.py b/fastapi_traffic/backends/memory.py index f69dea2..6279656 100644 --- a/fastapi_traffic/backends/memory.py +++ b/fastapi_traffic/backends/memory.py @@ -134,6 +134,19 @@ class MemoryBackend(Backend): self._cleanup_task = None await self.clear() + async def ping(self) -> bool: + """Check if the backend is available. Always returns True for memory backend.""" + return True + + async def get_stats(self) -> dict[str, Any]: + """Get statistics about the rate limit storage.""" + async with self._lock: + return { + "total_keys": len(self._data), + "max_size": self._max_size, + "backend": "memory", + } + def __len__(self) -> int: """Return the number of stored entries.""" return len(self._data) diff --git a/pyproject.toml b/pyproject.toml index 8fa716f..123d3ae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,12 +94,15 @@ reportMissingImports = false [tool.pytest.ini_options] asyncio_mode = "auto" +asyncio_default_fixture_loop_scope = "function" testpaths = ["tests"] addopts = "-v --tb=short" [dependency-groups] dev = [ "fastapi>=0.128.0", + "httpx>=0.28.1", "pytest>=9.0.2", + "pytest-asyncio>=1.3.0", "uvicorn>=0.40.0", ] diff --git a/uv.lock b/uv.lock index d896f6e..d1987f1 100644 --- a/uv.lock +++ b/uv.lock @@ -247,7 +247,9 @@ redis = [ [package.dev-dependencies] dev = [ { name = "fastapi" }, + { name = "httpx" }, { name = "pytest" }, + { name = "pytest-asyncio" }, { name = "uvicorn" }, ] @@ -273,7 +275,9 @@ provides-extras = ["redis", "fastapi", "all", "dev"] [package.metadata.requires-dev] dev = [ { name = "fastapi", specifier = ">=0.128.0" }, + { name = "httpx", specifier = ">=0.28.1" }, { name = "pytest", specifier = ">=9.0.2" }, + { name = "pytest-asyncio", specifier = ">=1.3.0" }, { name = "uvicorn", specifier = ">=0.40.0" }, ]