37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
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()
|