Skip to content

Commit 7383098

Browse files
committed
✨ feat(tests): Update service name and refactor hostname generation for wb-auth service
1 parent 0d155c8 commit 7383098

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

packages/pytest-simcore/src/pytest_simcore/environment_configs.py

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
from typing import Any
1010

1111
import pytest
12+
from faker import Faker
1213

1314
from .helpers.monkeypatch_envs import load_dotenv, setenvs_from_dict
1415
from .helpers.typing_env import EnvVarsDict
@@ -112,7 +113,7 @@ def service_name(project_slug_dir: Path) -> str:
112113

113114

114115
@pytest.fixture(scope="session")
115-
def services_docker_compose_dict(services_docker_compose_file: Path) -> EnvVarsDict:
116+
def docker_compose_services_dict(services_docker_compose_file: Path) -> EnvVarsDict:
116117
# NOTE: By keeping import here, this library is ONLY required when the fixture is used
117118
import yaml
118119

@@ -121,9 +122,28 @@ def services_docker_compose_dict(services_docker_compose_file: Path) -> EnvVarsD
121122
return content
122123

123124

125+
@pytest.fixture
126+
def docker_compose_service_hostname(
127+
faker: Faker, service_name: str, docker_compose_services_dict: dict[str, Any]
128+
) -> str:
129+
"""Evaluates `hostname` from docker-compose service"""
130+
hostname_template = docker_compose_services_dict["services"][service_name][
131+
"hostname"
132+
]
133+
134+
# Generate fake values to replace Docker Swarm template variables
135+
node_hostname = faker.hostname(levels=1)
136+
task_slot = faker.random_int(min=0, max=10)
137+
138+
# Replace the Docker Swarm template variables with faker values
139+
return hostname_template.replace("{{.Node.Hostname}}", node_hostname).replace(
140+
"{{.Task.Slot}}", str(task_slot)
141+
)
142+
143+
124144
@pytest.fixture
125145
def docker_compose_service_environment_dict(
126-
services_docker_compose_dict: dict[str, Any],
146+
docker_compose_services_dict: dict[str, Any],
127147
env_devel_dict: EnvVarsDict,
128148
service_name: str,
129149
env_devel_file: Path,
@@ -133,7 +153,7 @@ def docker_compose_service_environment_dict(
133153
- env_devel_dict in environment_configs plugin
134154
- service_name needs to be defined
135155
"""
136-
service = services_docker_compose_dict["services"][service_name]
156+
service = docker_compose_services_dict["services"][service_name]
137157

138158
def _substitute(key, value) -> tuple[str, str]:
139159
if m := re.match(r"\${([^{}:-]\w+)", f"{value}"):

services/docker-compose.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1110,6 +1110,14 @@ services:
11101110
WEBSERVER_APP_FACTORY_NAME: WEBSERVER_AUTHZ_APP_FACTORY
11111111
WEBSERVER_LOGLEVEL: ${WB_AUTH_LOGLEVEL}
11121112

1113+
# WEBSERVER_DB
1114+
POSTGRES_DB: ${POSTGRES_DB}
1115+
POSTGRES_ENDPOINT: ${POSTGRES_ENDPOINT}
1116+
POSTGRES_HOST: ${POSTGRES_HOST}
1117+
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
1118+
POSTGRES_PORT: ${POSTGRES_PORT}
1119+
POSTGRES_USER: ${POSTGRES_USER}
1120+
11131121
# WEBSERVER_REST
11141122
REST_SWAGGER_API_DOC_ENABLED: 0
11151123

services/web/server/tests/unit/with_dbs/03/test_login_auth_app.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,14 @@
2525

2626
@pytest.fixture
2727
def service_name() -> str:
28-
return "wb-authz"
28+
return "wb-auth"
2929

3030

3131
@pytest.fixture
3232
def app_environment_for_wb_authz_service_dict(
3333
docker_compose_service_environment_dict: EnvVarsDict,
34-
service_name: str,
35-
faker: Faker,
34+
docker_compose_service_hostname: str,
3635
) -> EnvVarsDict:
37-
hostname, task_slot = faker.hostname(levels=0), faker.random_int(min=0, max=10)
3836

3937
assert (
4038
docker_compose_service_environment_dict["WEBSERVER_APP_FACTORY_NAME"]
@@ -43,7 +41,7 @@ def app_environment_for_wb_authz_service_dict(
4341

4442
return {
4543
**docker_compose_service_environment_dict,
46-
"HOSTNAME": f"auth-{hostname}-{task_slot}", # TODO: load from docker-compose
44+
"HOSTNAME": docker_compose_service_hostname,
4745
# TODO: add everything coming from Dockerfile?
4846
}
4947

@@ -70,6 +68,9 @@ def app_environment_for_wb_authz_service(
7068
)
7169

7270
assert service_name == settings.WEBSERVER_HOST
71+
assert settings.WEBSERVER_DB is not None
72+
assert settings.WEBSERVER_SESSION is not None
73+
assert settings.WEBSERVER_SECURITY is not None
7374

7475
return mocked_envs
7576

0 commit comments

Comments
 (0)