Skip to content

Commit 039e14f

Browse files
committed
add test for getting access rights
1 parent 997b55d commit 039e14f

File tree

1 file changed

+51
-6
lines changed

1 file changed

+51
-6
lines changed

services/web/server/tests/unit/with_dbs/01/test_catalog_rest_client.py

Lines changed: 51 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44
from aiohttp.test_utils import TestClient
55
from aioresponses import aioresponses as AioResponsesMock
66
from common_library.users_enums import UserRole
7+
from models_library.api_schemas_catalog.service_access_rights import (
8+
ServiceAccessRightsGet,
9+
)
710
from pytest_simcore.helpers.webserver_login import UserInfoDict
811
from servicelib.aiohttp import status
912
from simcore_service_webserver.catalog.catalog_service import (
13+
get_service_access_rights,
1014
get_services_for_user_in_product,
1115
is_catalog_service_responsive,
1216
)
@@ -16,16 +20,23 @@
1620
"user_role",
1721
[UserRole.USER],
1822
)
23+
@pytest.mark.parametrize(
24+
"backend_status_code", [status.HTTP_200_OK, status.HTTP_500_INTERNAL_SERVER_ERROR]
25+
)
1926
async def test_server_responsive(
20-
client: TestClient, logged_user: UserInfoDict, aioresponses_mocker: AioResponsesMock
27+
client: TestClient,
28+
logged_user: UserInfoDict,
29+
aioresponses_mocker: AioResponsesMock,
30+
backend_status_code: int,
2131
):
22-
aioresponses_mocker.get(
23-
"http://catalog:8000",
24-
status=status.HTTP_200_OK,
25-
)
32+
aioresponses_mocker.get("http://catalog:8000", status=backend_status_code)
2633

2734
assert client.app
28-
assert await is_catalog_service_responsive(app=client.app) == True
35+
is_responsive = await is_catalog_service_responsive(app=client.app)
36+
if backend_status_code == status.HTTP_200_OK:
37+
assert is_responsive == True
38+
else:
39+
assert is_responsive == False
2940

3041

3142
@pytest.mark.parametrize(
@@ -53,3 +64,37 @@ async def test_get_services_for_user_in_product(
5364
product_name="osparc",
5465
only_key_versions=False,
5566
)
67+
68+
69+
@pytest.mark.parametrize(
70+
"user_role",
71+
[UserRole.USER],
72+
)
73+
async def test_get_service_access_rights(
74+
client: TestClient,
75+
logged_user: UserInfoDict,
76+
aioresponses_mocker: AioResponsesMock,
77+
):
78+
url_pattern = re.compile(r"http://catalog:8000/.*")
79+
example = ServiceAccessRightsGet(
80+
service_key="simcore/services/comp/itis/sleeper",
81+
service_version="2.1.4",
82+
gids_with_access_rights={
83+
1: {"execute_access": True},
84+
5: {"execute_access": True},
85+
},
86+
)
87+
aioresponses_mocker.get(
88+
url_pattern,
89+
status=status.HTTP_200_OK,
90+
payload=example.model_dump(),
91+
)
92+
assert client.app
93+
access_rights = await get_service_access_rights(
94+
app=client.app,
95+
user_id=logged_user["id"],
96+
service_key="simcore/services/comp/itis/sleeper",
97+
service_version="2.1.4",
98+
product_name="osparc",
99+
)
100+
assert isinstance(access_rights, ServiceAccessRightsGet)

0 commit comments

Comments
 (0)