22# pylint:disable=unused-argument
33# pylint:disable=redefined-outer-name
44
5+ import asyncio
56from collections .abc import AsyncIterator , Callable
67from copy import deepcopy
78from pathlib import Path
89
910import pytest
1011from aioresponses import aioresponses
12+ from pytest_simcore .helpers .typing_env import EnvVarsDict
1113from pytest_simcore .helpers .webserver_login import UserInfoDict
1214from pytest_simcore .helpers .webserver_projects import NewProject , delete_all_projects
1315from servicelib .aiohttp .application import create_safe_application
1416from simcore_service_webserver .application_settings import setup_settings
17+ from simcore_service_webserver .application_settings_utils import AppConfigDict
1518from simcore_service_webserver .db .plugin import setup_db
1619from simcore_service_webserver .director_v2 .plugin import setup_director_v2
1720from simcore_service_webserver .login .plugin import setup_login
3538
3639
3740@pytest .fixture
38- def client (
39- event_loop ,
40- aiohttp_client ,
41- app_cfg ,
42- postgres_db ,
43- mocked_dynamic_services_interface ,
44- mock_orphaned_services ,
45- redis_client , # this ensure redis is properly cleaned
46- monkeypatch_setenv_from_app_config : Callable ,
47- ):
48- # config app
41+ def app_environment (
42+ monkeypatch : pytest .MonkeyPatch ,
43+ app_cfg : AppConfigDict ,
44+ app_environment : EnvVarsDict ,
45+ monkeypatch_setenv_from_app_config : Callable [[AppConfigDict ], EnvVarsDict ],
46+ ) -> EnvVarsDict :
4947 cfg = deepcopy (app_cfg )
50- port = cfg [ "main" ][ "port" ]
48+
5149 cfg ["projects" ]["enabled" ] = True
5250 cfg ["resource_manager" ][
5351 "garbage_collection_interval_seconds"
@@ -56,11 +54,25 @@ def client(
5654 "resource_deletion_timeout_seconds"
5755 ] = DEFAULT_GARBAGE_COLLECTOR_DELETION_TIMEOUT_SECONDS # reduce deletion delay
5856
59- monkeypatch_setenv_from_app_config (cfg )
57+ return app_environment | monkeypatch_setenv_from_app_config (cfg )
58+
6059
61- app = create_safe_application (cfg )
60+ @pytest .fixture
61+ def client (
62+ event_loop : asyncio .AbstractEventLoop ,
63+ aiohttp_client : Callable ,
64+ app_cfg : AppConfigDict ,
65+ app_environment : EnvVarsDict ,
66+ postgres_db ,
67+ mocked_dynamic_services_interface ,
68+ mock_orphaned_services ,
69+ redis_client , # this ensure redis is properly cleaned
70+ ):
71+ # config app
72+ app = create_safe_application ()
6273
63- assert setup_settings (app )
74+ settings = setup_settings (app )
75+ assert settings .WEBSERVER_TAGS is not None
6476
6577 # setup app
6678 setup_db (app )
@@ -71,14 +83,16 @@ def client(
7183 setup_resource_manager (app )
7284 setup_socketio (app )
7385 setup_director_v2 (app )
74- setup_tags (app )
75- assert setup_projects (app )
86+ assert setup_tags (app )
87+ setup_projects (app )
7688 setup_products (app )
7789 setup_wallets (app )
7890
7991 # server and client
8092 return event_loop .run_until_complete (
81- aiohttp_client (app , server_kwargs = {"port" : port , "host" : "localhost" })
93+ aiohttp_client (
94+ app , server_kwargs = {"port" : app_cfg ["main" ]["port" ], "host" : "localhost" }
95+ )
8296 )
8397
8498 # teardown here ...
0 commit comments