From 9cd98c18c7dc75dd03581b25ccc29a5ae429a455 Mon Sep 17 00:00:00 2001 From: Erik Reid <erik.reid@geant.org> Date: Thu, 22 May 2025 10:20:49 +0200 Subject: [PATCH] use pydantic for version, added a test --- mapping_provider/api/common.py | 22 +++++++++++++++------- requirements.txt | 6 ++++++ test/conftest.py | 9 +++++++++ test/test_version.py | 8 ++++++++ 4 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 test/conftest.py create mode 100644 test/test_version.py diff --git a/mapping_provider/api/common.py b/mapping_provider/api/common.py index 9c528b0..3712b8e 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 8cedf04..bb2015e 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 0000000..f9fb990 --- /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 0000000..863570b --- /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()) -- GitLab