from uuid import uuid4 from fastapi.testclient import TestClient from pydantic import SecretStr from modelforge_api.api.routes.migrations import get_service from modelforge_api.main import app from modelforge_api.settings import Settings, get_settings _TOKEN = uuid4().hex _HEADERS = {"X-ModelForge-Admin-Token": _TOKEN} def test_migration_plan_index_passes_the_bounded_limit_and_rejects_out_of_range_values() -> None: class IndexService: requested_limit: int | None = None def plans(self, limit: int) -> list[object]: self.requested_limit = limit return [] service = IndexService() app.dependency_overrides[get_settings] = lambda: Settings( _env_file=None, operator_api_key=SecretStr(_TOKEN) ) app.dependency_overrides[get_service] = lambda: service try: client = TestClient(app) response = client.get("/api/v1/admin/migrations/plans?limit=37", headers=_HEADERS) invalid = client.get("/api/v1/admin/migrations/plans?limit=201", headers=_HEADERS) assert response.status_code == 200 assert service.requested_limit == 37 assert invalid.status_code == 422 finally: app.dependency_overrides.clear()