mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-10-05 20:28:23 +00:00
`inf > 0` is True, so an infinite rate read as a real price: it was imported, served, routed, and would bill an infinite amount. `NaN` is worse — every comparison with it is False, so it slipped past both the negative and the both-zero guards. Rates arrive from upstream catalogs as well as the admin edge, and `json.loads` accepts the bare `NaN`/`Infinity` literals and overflows `1e999` to `inf`, so the finiteness check goes in the catalog import filter and in each resolver rung that reports a resolved price rather than at one entry point. An oversized integer raises `OverflowError` instead of `ValueError`, so coercion catches that too — unhandled it unwound the whole fetch and cost the node an entire upstream catalog over one junk entry. A malformed *cache* rate costs only the cache rate: it is dropped and billing falls back to the full input rate, which is what a missing cache rate means. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011cKHVF5LA7TR5QuYi6ErLM
FastAPI Async Unit Tests
This directory contains async unit tests for the Routstr proxy FastAPI application.
Installation
First, ensure you have the development dependencies installed:
uv pip install -e ".[dev]"
Running Tests
To run all tests:
pytest
To run tests with coverage:
pytest --cov=routstr --cov-report=html
To run specific test files:
pytest tests/test_main.py
pytest tests/test_models.py
pytest tests/test_proxy.py
To run only async tests:
pytest -m asyncio
Test Structure
conftest.py- Pytest fixtures and configurationtest_main.py- Tests for main app endpointstest_account.py- Tests for wallet/account management endpointstest_proxy.py- Tests for the proxy functionality with mocked upstreamtest_models.py- Tests for model pricing and data structures
Key Fixtures
async_client- Async HTTP client for testing FastAPI endpointstest_session- In-memory SQLite database session for teststest_api_key- Pre-configured API key with balanceapi_key_with_balance- API key with sufficient balance for proxy tests
Environment Variables
The tests automatically set up required environment variables in conftest.py. No manual configuration needed.
Writing New Tests
- Use
@pytest.mark.asynciofor async tests - Use the provided fixtures for database and client access
- Mock external dependencies (like upstream API calls)
- Test both success and error cases
- Verify database state changes when applicable