Skip to content

Commit 75ab60b

Browse files
committed
mvoes setup to conftest
1 parent 12f467b commit 75ab60b

File tree

3 files changed

+240
-276
lines changed

3 files changed

+240
-276
lines changed

services/web/server/tests/unit/with_dbs/04/studies_dispatcher/conftest.py

Lines changed: 232 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
1+
# pylint: disable=protected-access
12
# pylint: disable=redefined-outer-name
3+
# pylint: disable=too-many-arguments
24
# pylint: disable=unused-argument
35
# pylint: disable=unused-variable
4-
# pylint: disable=too-many-arguments
56

7+
from collections.abc import Iterator
8+
from contextlib import ExitStack
69

710
import pytest
11+
import sqlalchemy as sa
12+
from pytest_simcore.helpers.faker_factories import (
13+
random_service_access_rights,
14+
random_service_consume_filetype,
15+
random_service_meta_data,
16+
)
817
from pytest_simcore.helpers.monkeypatch_envs import setenvs_from_dict
18+
from pytest_simcore.helpers.postgres_tools import sync_insert_and_get_row_lifespan
919
from pytest_simcore.helpers.typing_env import EnvVarsDict
20+
from simcore_postgres_database.models.services import (
21+
services_access_rights,
22+
services_meta_data,
23+
)
24+
from simcore_postgres_database.models.services_consume_filetypes import (
25+
services_consume_filetypes,
26+
)
1027
from simcore_service_webserver.studies_dispatcher.settings import (
1128
StudiesDispatcherSettings,
1229
)
@@ -53,3 +70,217 @@ def app_environment(
5370
print(plugin_settings.model_dump_json(indent=1))
5471

5572
return {**app_environment, **envs_plugins, **envs_studies_dispatcher}
73+
74+
75+
@pytest.fixture(scope="module")
76+
def services_metadata_in_db(
77+
postgres_db: sa.engine.Engine,
78+
) -> Iterator[list[dict]]:
79+
"""Pre-populate services metadata table with test data maintaining original structure."""
80+
services_data = [
81+
random_service_meta_data(
82+
key="simcore/services/dynamic/raw-graphs",
83+
version="2.11.1",
84+
name="2D plot",
85+
description="2D plots powered by RAW Graphs",
86+
thumbnail=None,
87+
),
88+
random_service_meta_data(
89+
key="simcore/services/dynamic/bio-formats-web",
90+
version="1.0.1",
91+
name="bio-formats",
92+
description="Bio-Formats image viewer",
93+
thumbnail="https://www.openmicroscopy.org/img/logos/bio-formats.svg",
94+
),
95+
random_service_meta_data(
96+
key="simcore/services/dynamic/jupyter-octave-python-math",
97+
version="1.6.9",
98+
name="JupyterLab Math",
99+
description="JupyterLab Math with octave and python",
100+
thumbnail=None,
101+
),
102+
random_service_meta_data(
103+
key="simcore/services/dynamic/s4l-ui-modeling",
104+
version="3.2.300",
105+
name="Hornet Flow",
106+
description="Hornet Flow UI for Sim4Life",
107+
thumbnail=None,
108+
),
109+
]
110+
111+
with ExitStack() as stack:
112+
created_services = []
113+
for service_data in services_data:
114+
row = stack.enter_context(
115+
sync_insert_and_get_row_lifespan(
116+
postgres_db,
117+
table=services_meta_data,
118+
values=service_data,
119+
pk_cols=[services_meta_data.c.key, services_meta_data.c.version],
120+
)
121+
)
122+
created_services.append(row)
123+
124+
yield created_services
125+
126+
127+
@pytest.fixture(scope="module")
128+
def services_consume_filetypes_in_db(
129+
postgres_db: sa.engine.Engine, services_metadata_in_db: list[dict]
130+
) -> Iterator[list[dict]]:
131+
"""Pre-populate services consume filetypes table with test data."""
132+
filetypes_data = [
133+
random_service_consume_filetype(
134+
service_key="simcore/services/dynamic/bio-formats-web",
135+
service_version="1.0.1",
136+
service_display_name="bio-formats",
137+
service_input_port="input_1",
138+
filetype="PNG",
139+
preference_order=0,
140+
is_guest_allowed=True,
141+
),
142+
random_service_consume_filetype(
143+
service_key="simcore/services/dynamic/raw-graphs",
144+
service_version="2.11.1",
145+
service_display_name="RAWGraphs",
146+
service_input_port="input_1",
147+
filetype="CSV",
148+
preference_order=0,
149+
is_guest_allowed=True,
150+
),
151+
random_service_consume_filetype(
152+
service_key="simcore/services/dynamic/bio-formats-web",
153+
service_version="1.0.1",
154+
service_display_name="bio-formats",
155+
service_input_port="input_1",
156+
filetype="JPEG",
157+
preference_order=0,
158+
is_guest_allowed=True,
159+
),
160+
random_service_consume_filetype(
161+
service_key="simcore/services/dynamic/raw-graphs",
162+
service_version="2.11.1",
163+
service_display_name="RAWGraphs",
164+
service_input_port="input_1",
165+
filetype="TSV",
166+
preference_order=0,
167+
is_guest_allowed=True,
168+
),
169+
random_service_consume_filetype(
170+
service_key="simcore/services/dynamic/raw-graphs",
171+
service_version="2.11.1",
172+
service_display_name="RAWGraphs",
173+
service_input_port="input_1",
174+
filetype="XLSX",
175+
preference_order=0,
176+
is_guest_allowed=True,
177+
),
178+
random_service_consume_filetype(
179+
service_key="simcore/services/dynamic/raw-graphs",
180+
service_version="2.11.1",
181+
service_display_name="RAWGraphs",
182+
service_input_port="input_1",
183+
filetype="JSON",
184+
preference_order=0,
185+
is_guest_allowed=True,
186+
),
187+
random_service_consume_filetype(
188+
service_key="simcore/services/dynamic/jupyter-octave-python-math",
189+
service_version="1.6.9",
190+
service_display_name="JupyterLab Math",
191+
service_input_port="input_1",
192+
filetype="PY",
193+
preference_order=0,
194+
is_guest_allowed=False,
195+
),
196+
random_service_consume_filetype(
197+
service_key="simcore/services/dynamic/jupyter-octave-python-math",
198+
service_version="1.6.9",
199+
service_display_name="JupyterLab Math",
200+
service_input_port="input_1",
201+
filetype="IPYNB",
202+
preference_order=0,
203+
is_guest_allowed=False,
204+
),
205+
random_service_consume_filetype(
206+
service_key="simcore/services/dynamic/s4l-ui-modeling",
207+
service_version="3.2.300",
208+
service_display_name="Hornet Flow",
209+
service_input_port="input_1",
210+
filetype="HORNET_REPO",
211+
preference_order=0,
212+
is_guest_allowed=False,
213+
),
214+
]
215+
216+
with ExitStack() as stack:
217+
created_filetypes = []
218+
for filetype_data in filetypes_data:
219+
row = stack.enter_context(
220+
sync_insert_and_get_row_lifespan(
221+
postgres_db,
222+
table=services_consume_filetypes,
223+
values=filetype_data,
224+
pk_cols=[
225+
services_consume_filetypes.c.service_key,
226+
services_consume_filetypes.c.service_version,
227+
services_consume_filetypes.c.filetype,
228+
],
229+
)
230+
)
231+
created_filetypes.append(row)
232+
233+
yield created_filetypes
234+
235+
236+
@pytest.fixture(scope="module")
237+
def services_access_rights_in_db(
238+
postgres_db: sa.engine.Engine, services_metadata_in_db: list[dict]
239+
) -> Iterator[list[dict]]:
240+
"""Pre-populate services access rights table with test data."""
241+
access_rights_data = [
242+
random_service_access_rights(
243+
key="simcore/services/dynamic/raw-graphs",
244+
version="2.11.1",
245+
gid=1, # everyone group
246+
execute_access=True,
247+
write_access=False,
248+
product_name="osparc",
249+
),
250+
random_service_access_rights(
251+
key="simcore/services/dynamic/jupyter-octave-python-math",
252+
version="1.6.9",
253+
gid=1, # everyone group
254+
execute_access=True,
255+
write_access=False,
256+
product_name="osparc",
257+
),
258+
random_service_access_rights(
259+
key="simcore/services/dynamic/s4l-ui-modeling",
260+
version="3.2.300",
261+
gid=1, # everyone group
262+
execute_access=True,
263+
write_access=False,
264+
product_name="osparc",
265+
),
266+
]
267+
268+
with ExitStack() as stack:
269+
created_access_rights = []
270+
for access_data in access_rights_data:
271+
row = stack.enter_context(
272+
sync_insert_and_get_row_lifespan(
273+
postgres_db,
274+
table=services_access_rights,
275+
values=access_data,
276+
pk_cols=[
277+
services_access_rights.c.key,
278+
services_access_rights.c.version,
279+
services_access_rights.c.gid,
280+
services_access_rights.c.product_name,
281+
],
282+
)
283+
)
284+
created_access_rights.append(row)
285+
286+
yield created_access_rights

0 commit comments

Comments
 (0)