Files
tatlock/tests/models/test_router.py
T
jpmschweitzerandClaude 8b6cff2920 Add application setup and test infrastructure
Application Configuration:
- FastAPI application factory pattern
- CORS middleware for cross-origin support
- Global exception handlers for consistent error responses
  - AppException handler for custom errors
  - RequestValidationError handler for Pydantic validation
  - General exception handler for unexpected errors
- Lifespan management for startup/shutdown events
- Router registration for all API endpoints
- OpenAPI schema with interactive documentation

Models Service:
- Integration with ModelRegistry
- List available models endpoint
- Model capability discovery

Test Infrastructure:
- Pytest configuration with async support
- Test client fixtures for sync and async testing
- Comprehensive main application tests (14 tests):
  - App creation and metadata
  - Router registration verification
  - CORS middleware and functionality
  - Exception handler registration and behavior
  - Lifespan event handling
  - OpenAPI schema generation
  - Documentation accessibility
  - Validation error handling
- Models API tests (2 tests)
- Total: 95 tests, 78.95% coverage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 19:39:02 +01:00

49 lines
1.3 KiB
Python

"""
Tests for models listing router.
"""
import pytest
from fastapi.testclient import TestClient
@pytest.mark.unit
def test_list_models(client: TestClient) -> None:
"""Test listing available models."""
response = client.get("/v1/models")
assert response.status_code == 200
data = response.json()
# Verify response structure
assert data["object"] == "list"
assert "data" in data
assert isinstance(data["data"], list)
# Should have both models from registry
assert len(data["data"]) == 2
# Check for expected model IDs
model_ids = [m["id"] for m in data["data"]]
assert "lorem-tester" in model_ids
assert "tatlock" in model_ids
# Verify model structure
for model in data["data"]:
assert model["object"] == "model"
assert "id" in model
assert "created" in model
assert "owned_by" in model
assert model["owned_by"] == "tatlock"
@pytest.mark.unit
def test_models_endpoint_returns_json(client: TestClient) -> None:
"""Test that models endpoint returns valid JSON."""
response = client.get("/v1/models")
assert response.status_code == 200
assert response.headers["content-type"] == "application/json"
# Should be able to parse as JSON
data = response.json()
assert isinstance(data, dict)