Skip to content

Commit 19397c1

Browse files
committed
✨ Refactor: Enhance Postgres settings validation and update test fixtures to use MockType
1 parent b0f654f commit 19397c1

File tree

5 files changed

+17
-7
lines changed

5 files changed

+17
-7
lines changed

packages/service-library/src/servicelib/fastapi/postgres_lifespan.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,14 @@ async def setup_postgres_database(_, state: State) -> AsyncIterator[State]:
2525

2626
with log_context(_logger, logging.INFO, f"{__name__}"):
2727

28-
pg_settings: PostgresSettings = state[
28+
pg_settings: PostgresSettings | None = state[
2929
PostgresLifespanStateKeys.POSTGRES_SETTINGS
3030
]
31+
32+
if pg_settings is None or not isinstance(pg_settings, PostgresSettings):
33+
msg = f"Invalid {pg_settings=} on startup. Postgres cannot be disabled using settings"
34+
raise RuntimeError(msg)
35+
3136
assert isinstance(pg_settings, PostgresSettings) # nosec
3237

3338
async_engine: AsyncEngine = await create_async_engine_and_database_ready(

services/catalog/tests/unit/conftest.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,8 +216,10 @@ def service_caching_disabled(monkeypatch: pytest.MonkeyPatch) -> None:
216216

217217

218218
@pytest.fixture
219-
def postgres_setup_disabled(monkeypatch: pytest.MonkeyPatch) -> None:
220-
monkeypatch.setenv("CATALOG_POSTGRES", "null")
219+
def postgres_setup_disabled(mocker: MockerFixture) -> MockType:
220+
return mocker.patch.object(
221+
simcore_service_catalog.core.application, "postgres_lifespan"
222+
)
221223

222224

223225
@pytest.fixture

services/catalog/tests/unit/test_api_rest.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@
66
import httpx
77
from fastapi import status
88
from fastapi.testclient import TestClient
9+
from pytest_mock import MockType
910

1011

1112
def test_sync_client(
12-
postgres_setup_disabled: None,
13+
postgres_setup_disabled: MockType,
1314
rabbitmq_and_rpc_setup_disabled: None,
1415
background_tasks_setup_disabled: None,
1516
director_setup_disabled: None,
@@ -24,7 +25,7 @@ def test_sync_client(
2425

2526

2627
async def test_async_client(
27-
postgres_setup_disabled: None,
28+
postgres_setup_disabled: MockType,
2829
rabbitmq_and_rpc_setup_disabled: None,
2930
background_tasks_setup_disabled: None,
3031
director_setup_disabled: None,

services/catalog/tests/unit/test_utils_service_extras.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
from httpx import AsyncClient
99
from models_library.api_schemas_directorv2.services import ServiceExtras
1010
from pydantic import TypeAdapter
11+
from pytest_mock import MockType
1112
from respx import MockRouter
1213

1314

@@ -17,7 +18,7 @@ def mock_engine(app: FastAPI) -> None:
1718

1819

1920
async def test_get_service_extras(
20-
postgres_setup_disabled: None,
21+
postgres_setup_disabled: MockType,
2122
mocked_director_service_api: MockRouter,
2223
rabbitmq_and_rpc_setup_disabled: None,
2324
background_tasks_setup_disabled: None,

services/catalog/tests/unit/test_utils_service_labels.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import pytest
88
from fastapi import FastAPI, status
99
from httpx import AsyncClient
10+
from pytest_mock import MockType
1011
from respx import MockRouter
1112

1213

@@ -16,7 +17,7 @@ def mock_engine(app: FastAPI) -> None:
1617

1718

1819
async def test_get_service_labels(
19-
postgres_setup_disabled: None,
20+
postgres_setup_disabled: MockType,
2021
mocked_director_service_api: MockRouter,
2122
rabbitmq_and_rpc_setup_disabled: None,
2223
background_tasks_setup_disabled: None,

0 commit comments

Comments
 (0)