diff --git a/mapping_provider/api/common.py b/mapping_provider/api/common.py index 9c528b0e71b78ccb6f8a8f607359a2013ff60c50..3712b8e96d5cd7a76724cbd7bdbd0f5c0515ef37 100644 --- a/mapping_provider/api/common.py +++ b/mapping_provider/api/common.py @@ -1,14 +1,22 @@ -from importlib.metadata import PackageNotFoundError, version +from importlib.metadata import version from fastapi import APIRouter +from pydantic import BaseModel router = APIRouter() +class Version(BaseModel): + module: str + api: str + + @router.get("/version") -def get_version() -> dict[str, str]: - """Get the version of the package.""" - try: - return {"version": version("mapping_provider")} - except PackageNotFoundError: - return {"version": "unknown"} +def get_version() -> Version: + """ + handler for /version + """ + return Version( + module = version('mapping_provider'), + api = '0.1' + ) diff --git a/requirements.txt b/requirements.txt index 8cedf04a6b774601a712430bfb7494d302f9fb80..bb2015ee9487eb433ea427c9b1981ce044ad2c78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,11 @@ fastapi uvicorn[standard] +requests +jsonschema + +httpx # required for fastapi TestClient +pytest +responses sphinx sphinx-rtd-theme diff --git a/test/conftest.py b/test/conftest.py new file mode 100644 index 0000000000000000000000000000000000000000..f9fb99040ff4536d24da7de34c67190b86c23c17 --- /dev/null +++ b/test/conftest.py @@ -0,0 +1,9 @@ +from fastapi.testclient import TestClient +import pytest + +from mapping_provider import create_app + + +@pytest.fixture +def client(): + return TestClient(create_app()) diff --git a/test/test_version.py b/test/test_version.py new file mode 100644 index 0000000000000000000000000000000000000000..863570b83cc17851e160c1df9ce446668096a40a --- /dev/null +++ b/test/test_version.py @@ -0,0 +1,8 @@ +from mapping_provider.api.common import Version + + +def test_version(client): + rv = client.get("/version") + assert rv.status_code == 200 + assert rv.json() + Version.model_validate(rv.json())