Skip to content

Commit 7f1e7ec

Browse files
committed
refactor: enhance project management in tests with exit stack for cleanup
1 parent d1534da commit 7f1e7ec

File tree

1 file changed

+38
-4
lines changed

1 file changed

+38
-4
lines changed

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

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from aiohttp.test_utils import TestClient
2525
from aioresponses import aioresponses
2626
from models_library.groups import EVERYONE_GROUP_ID, StandardGroupCreate
27+
from models_library.projects import ProjectID
2728
from models_library.projects_state import RunningState
2829
from pytest_mock import MockerFixture
2930
from pytest_simcore.helpers.webserver_login import log_client_in
@@ -44,10 +45,12 @@
4445
from simcore_service_webserver.groups._groups_service import create_standard_group
4546
from simcore_service_webserver.groups.api import add_user_in_group
4647
from simcore_service_webserver.login.plugin import setup_login
48+
from simcore_service_webserver.projects import _projects_repository
4749
from simcore_service_webserver.projects._crud_api_delete import get_scheduled_tasks
4850
from simcore_service_webserver.projects._groups_repository import (
4951
update_or_insert_project_group,
5052
)
53+
from simcore_service_webserver.projects.exceptions import ProjectNotFoundError
5154
from simcore_service_webserver.projects.models import ProjectDict
5255
from simcore_service_webserver.projects.plugin import setup_projects
5356
from simcore_service_webserver.resource_manager.plugin import setup_resource_manager
@@ -228,6 +231,7 @@ async def new_project(
228231
user: UserInfoDict,
229232
product_name: str,
230233
tests_data_dir: Path,
234+
exit_stack: contextlib.AsyncExitStack,
231235
access_rights: dict[str, Any] | None = None,
232236
):
233237
"""returns a project for the given user"""
@@ -254,6 +258,18 @@ async def new_project(
254258
write=permissions["write"],
255259
delete=permissions["delete"],
256260
)
261+
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+
257273
return project
258274

259275

@@ -432,7 +448,7 @@ async def assert_user_in_db(
432448
user_as_dict = dict(user)
433449

434450
# some values need to be transformed
435-
user_as_dict["role"] = user_as_dict["role"].value # type: ignore
451+
user_as_dict["role"] = user_as_dict["role"] # type: ignore
436452
user_as_dict["status"] = user_as_dict["status"].value # type: ignore
437453

438454
assert_dicts_match_by_common_keys(user_as_dict, logged_user)
@@ -498,7 +514,11 @@ async def test_t1_while_guest_is_connected_no_resources_are_removed(
498514
assert client.app
499515
logged_guest_user = await login_guest_user(client, exit_stack=exit_stack)
500516
empty_guest_user_project = await new_project(
501-
client, logged_guest_user, osparc_product_name, tests_data_dir
517+
client,
518+
logged_guest_user,
519+
osparc_product_name,
520+
tests_data_dir,
521+
exit_stack=exit_stack,
502522
)
503523
await assert_users_count(aiopg_engine, 1)
504524
await assert_projects_count(aiopg_engine, 1)
@@ -525,7 +545,11 @@ async def test_t2_cleanup_resources_after_browser_is_closed(
525545
assert client.app
526546
logged_guest_user = await login_guest_user(client, exit_stack=exit_stack)
527547
empty_guest_user_project = await new_project(
528-
client, logged_guest_user, osparc_product_name, tests_data_dir
548+
client,
549+
logged_guest_user,
550+
osparc_product_name,
551+
tests_data_dir,
552+
exit_stack=exit_stack,
529553
)
530554
await assert_users_count(aiopg_engine, 1)
531555
await assert_projects_count(aiopg_engine, 1)
@@ -576,7 +600,9 @@ async def test_t3_gc_will_not_intervene_for_regular_users_and_their_resources(
576600
number_of_templates = 5
577601
logged_user = await login_user(client, exit_stack=exit_stack)
578602
user_projects = [
579-
await new_project(client, logged_user, osparc_product_name, tests_data_dir)
603+
await new_project(
604+
client, logged_user, osparc_product_name, tests_data_dir, exit_stack
605+
)
580606
for _ in range(number_of_projects)
581607
]
582608
user_template_projects = [
@@ -641,6 +667,7 @@ async def test_t4_project_shared_with_group_transferred_to_user_in_group_on_owne
641667
osparc_product_name,
642668
tests_data_dir,
643669
access_rights={str(g1["gid"]): {"read": True, "write": True, "delete": False}},
670+
exit_stack=exit_stack,
644671
)
645672

646673
# mark u1 as guest
@@ -684,6 +711,7 @@ async def test_t5_project_shared_with_other_users_transferred_to_one_of_them(
684711
u1,
685712
osparc_product_name,
686713
tests_data_dir,
714+
exit_stack=exit_stack,
687715
access_rights={
688716
str(q_u2["primary_gid"]): {"read": True, "write": True, "delete": False},
689717
str(q_u3["primary_gid"]): {"read": True, "write": True, "delete": False},
@@ -734,6 +762,7 @@ async def test_t6_project_shared_with_group_transferred_to_last_user_in_group_on
734762
u1,
735763
osparc_product_name,
736764
tests_data_dir,
765+
exit_stack=exit_stack,
737766
access_rights={str(g1["gid"]): {"read": True, "write": True, "delete": False}},
738767
)
739768

@@ -809,6 +838,7 @@ async def test_t7_project_shared_with_group_transferred_from_one_member_to_the_l
809838
u1,
810839
osparc_product_name,
811840
tests_data_dir,
841+
exit_stack=exit_stack,
812842
access_rights={str(g1["gid"]): {"read": True, "write": True, "delete": False}},
813843
)
814844

@@ -894,6 +924,7 @@ async def test_t8_project_shared_with_other_users_transferred_to_one_of_them_unt
894924
u1,
895925
osparc_product_name,
896926
tests_data_dir,
927+
exit_stack=exit_stack,
897928
access_rights={
898929
str(q_u2["primary_gid"]): {"read": True, "write": True, "delete": False},
899930
str(q_u3["primary_gid"]): {"read": True, "write": True, "delete": False},
@@ -971,6 +1002,7 @@ async def test_t9_project_shared_with_other_users_transferred_between_them_and_t
9711002
u1,
9721003
osparc_product_name,
9731004
tests_data_dir,
1005+
exit_stack=exit_stack,
9741006
access_rights={
9751007
str(q_u2["primary_gid"]): {"read": True, "write": True, "delete": False},
9761008
str(q_u3["primary_gid"]): {"read": True, "write": True, "delete": False},
@@ -1061,6 +1093,7 @@ async def test_t10_owner_and_all_shared_users_marked_as_guests(
10611093
u1,
10621094
osparc_product_name,
10631095
tests_data_dir,
1096+
exit_stack=exit_stack,
10641097
access_rights={
10651098
str(q_u2["primary_gid"]): {"read": True, "write": True, "delete": False},
10661099
str(q_u3["primary_gid"]): {"read": True, "write": True, "delete": False},
@@ -1110,6 +1143,7 @@ async def test_t11_owner_and_all_users_in_group_marked_as_guests(
11101143
u1,
11111144
osparc_product_name,
11121145
tests_data_dir,
1146+
exit_stack=exit_stack,
11131147
access_rights={str(g1["gid"]): {"read": True, "write": True, "delete": False}},
11141148
)
11151149

0 commit comments

Comments
 (0)