Skip to content

Commit d0efde9

Browse files
committed
cleanup
1 parent ab23357 commit d0efde9

File tree

1 file changed

+46
-30
lines changed

1 file changed

+46
-30
lines changed

services/web/server/tests/integration/01/test_garbage_collection.py

Lines changed: 46 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
from models_library.projects import ProjectID
2828
from models_library.projects_state import RunningState
2929
from pytest_mock import MockerFixture
30+
from pytest_simcore.helpers import webserver_projects
3031
from pytest_simcore.helpers.webserver_login import log_client_in
31-
from pytest_simcore.helpers.webserver_projects import create_project, empty_project_data
3232
from pytest_simcore.helpers.webserver_users import UserInfoDict
3333
from servicelib.aiohttp import status
3434
from servicelib.aiohttp.application import create_safe_application
@@ -226,7 +226,25 @@ async def login_guest_user(
226226
)
227227

228228

229-
async def new_project(
229+
async def _setup_project_cleanup(
230+
client: TestClient,
231+
project: dict[str, Any],
232+
exit_stack: contextlib.AsyncExitStack,
233+
) -> None:
234+
"""Helper function to setup project cleanup after test completion"""
235+
236+
async def _delete_project(project_uuid):
237+
assert client.app
238+
with contextlib.suppress(ProjectNotFoundError):
239+
# Sometimes the test deletes the project
240+
await _projects_repository.delete_project(
241+
client.app, project_uuid=project_uuid
242+
)
243+
244+
exit_stack.push_async_callback(_delete_project, ProjectID(project["uuid"]))
245+
246+
247+
async def create_standard_project(
230248
client: TestClient,
231249
user: UserInfoDict,
232250
product_name: str,
@@ -235,12 +253,12 @@ async def new_project(
235253
access_rights: dict[str, Any] | None = None,
236254
):
237255
"""returns a project for the given user"""
238-
project_data = empty_project_data()
256+
project_data = webserver_projects.empty_project_data()
239257
if access_rights is not None:
240258
project_data["accessRights"] = access_rights
241259

242260
assert client.app
243-
project = await create_project(
261+
project = await webserver_projects.create_project(
244262
client.app,
245263
project_data,
246264
user["id"],
@@ -259,25 +277,16 @@ async def new_project(
259277
delete=permissions["delete"],
260278
)
261279

262-
# ensures the project is removed after the test
263-
async def _delete_project(project_uuid):
264-
assert client.app
265-
with contextlib.suppress(ProjectNotFoundError):
266-
# Sometimes the test deletes the project
267-
await _projects_repository.delete_project(
268-
client.app, project_uuid=project_uuid
269-
)
270-
271-
exit_stack.push_async_callback(_delete_project, ProjectID(project["uuid"]))
272-
280+
await _setup_project_cleanup(client, project, exit_stack)
273281
return project
274282

275283

276-
async def get_template_project(
284+
async def create_template_project(
277285
client: TestClient,
278286
user: UserInfoDict,
279287
product_name: str,
280288
project_data: ProjectDict,
289+
exit_stack: contextlib.AsyncExitStack,
281290
access_rights=None,
282291
):
283292
"""returns a tempalte shared with all"""
@@ -292,14 +301,17 @@ async def get_template_project(
292301
if access_rights is not None:
293302
project_data["accessRights"].update(access_rights)
294303

295-
return await create_project(
304+
project = await webserver_projects.create_project(
296305
client.app,
297306
project_data,
298307
user["id"],
299308
product_name=product_name,
300309
default_project_json=None,
301310
)
302311

312+
await _setup_project_cleanup(client, project, exit_stack)
313+
return project
314+
303315

304316
async def get_group(client: TestClient, user: UserInfoDict):
305317
"""Creates a group for a given user"""
@@ -513,7 +525,7 @@ async def test_t1_while_guest_is_connected_no_resources_are_removed(
513525
"""while a GUEST user is connected GC will not remove none of its projects nor the user itself"""
514526
assert client.app
515527
logged_guest_user = await login_guest_user(client, exit_stack=exit_stack)
516-
empty_guest_user_project = await new_project(
528+
empty_guest_user_project = await create_standard_project(
517529
client,
518530
logged_guest_user,
519531
osparc_product_name,
@@ -544,7 +556,7 @@ async def test_t2_cleanup_resources_after_browser_is_closed(
544556
"""After a GUEST users with one opened project closes browser tab regularly (GC cleans everything)"""
545557
assert client.app
546558
logged_guest_user = await login_guest_user(client, exit_stack=exit_stack)
547-
empty_guest_user_project = await new_project(
559+
empty_guest_user_project = await create_standard_project(
548560
client,
549561
logged_guest_user,
550562
osparc_product_name,
@@ -600,14 +612,18 @@ async def test_t3_gc_will_not_intervene_for_regular_users_and_their_resources(
600612
number_of_templates = 5
601613
logged_user = await login_user(client, exit_stack=exit_stack)
602614
user_projects = [
603-
await new_project(
615+
await create_standard_project(
604616
client, logged_user, osparc_product_name, tests_data_dir, exit_stack
605617
)
606618
for _ in range(number_of_projects)
607619
]
608620
user_template_projects = [
609-
await get_template_project(
610-
client, logged_user, osparc_product_name, fake_project
621+
await create_template_project(
622+
client,
623+
logged_user,
624+
osparc_product_name,
625+
fake_project,
626+
exit_stack=exit_stack,
611627
)
612628
for _ in range(number_of_templates)
613629
]
@@ -661,7 +677,7 @@ async def test_t4_project_shared_with_group_transferred_to_user_in_group_on_owne
661677
await invite_user_to_group(client, owner=u1, invitee=u3, group=g1)
662678

663679
# u1 creates project and shares it with g1
664-
project = await new_project(
680+
project = await create_standard_project(
665681
client,
666682
u1,
667683
osparc_product_name,
@@ -706,7 +722,7 @@ async def test_t5_project_shared_with_other_users_transferred_to_one_of_them(
706722
assert q_u3
707723

708724
# u1 creates project and shares it with g1
709-
project = await new_project(
725+
project = await create_standard_project(
710726
client,
711727
u1,
712728
osparc_product_name,
@@ -757,7 +773,7 @@ async def test_t6_project_shared_with_group_transferred_to_last_user_in_group_on
757773
await invite_user_to_group(client, owner=u1, invitee=u3, group=g1)
758774

759775
# u1 creates project and shares it with g1
760-
project = await new_project(
776+
project = await create_standard_project(
761777
client,
762778
u1,
763779
osparc_product_name,
@@ -833,7 +849,7 @@ async def test_t7_project_shared_with_group_transferred_from_one_member_to_the_l
833849
await invite_user_to_group(client, owner=u1, invitee=u3, group=g1)
834850

835851
# u1 creates project and shares it with g1
836-
project = await new_project(
852+
project = await create_standard_project(
837853
client,
838854
u1,
839855
osparc_product_name,
@@ -919,7 +935,7 @@ async def test_t8_project_shared_with_other_users_transferred_to_one_of_them_unt
919935
assert q_u3
920936

921937
# u1 creates project and shares it with g1
922-
project = await new_project(
938+
project = await create_standard_project(
923939
client,
924940
u1,
925941
osparc_product_name,
@@ -997,7 +1013,7 @@ async def test_t9_project_shared_with_other_users_transferred_between_them_and_t
9971013
assert q_u3
9981014

9991015
# u1 creates project and shares it with g1
1000-
project = await new_project(
1016+
project = await create_standard_project(
10011017
client,
10021018
u1,
10031019
osparc_product_name,
@@ -1088,7 +1104,7 @@ async def test_t10_owner_and_all_shared_users_marked_as_guests(
10881104
assert q_u3
10891105

10901106
# u1 creates project and shares it with g1
1091-
project = await new_project(
1107+
project = await create_standard_project(
10921108
client,
10931109
u1,
10941110
osparc_product_name,
@@ -1138,7 +1154,7 @@ async def test_t11_owner_and_all_users_in_group_marked_as_guests(
11381154
await invite_user_to_group(client, owner=u1, invitee=u3, group=g1)
11391155

11401156
# u1 creates project and shares it with g1
1141-
project = await new_project(
1157+
project = await create_standard_project(
11421158
client,
11431159
u1,
11441160
osparc_product_name,

0 commit comments

Comments
 (0)