Skip to content

Commit 4840afd

Browse files
tests: add list functions
1 parent e8ca8bf commit 4840afd

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

services/web/server/tests/unit/with_dbs/04/functions_rpc/test_functions_controller_rest.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
RegisteredProjectFunctionGet,
1919
)
2020
from models_library.api_schemas_webserver.users import MyFunctionPermissionsGet
21+
from pydantic import TypeAdapter
2122
from pytest_simcore.helpers.assert_checks import assert_status
2223
from pytest_simcore.helpers.webserver_users import UserInfoDict
2324
from servicelib.aiohttp import status
@@ -50,13 +51,14 @@ def mock_function() -> dict[str, Any]:
5051

5152

5253
@pytest.mark.parametrize(
53-
"user_role,add_user_function_api_access_rights,expected_register,expected_get,expected_delete,expected_get2",
54+
"user_role,add_user_function_api_access_rights,expected_register,expected_get,expected_list,expected_delete,expected_get2",
5455
[
5556
(
5657
UserRole.USER,
5758
True,
5859
status.HTTP_201_CREATED,
5960
status.HTTP_200_OK,
61+
status.HTTP_200_OK,
6062
status.HTTP_204_NO_CONTENT,
6163
status.HTTP_404_NOT_FOUND,
6264
),
@@ -67,16 +69,18 @@ def mock_function() -> dict[str, Any]:
6769
status.HTTP_403_FORBIDDEN,
6870
status.HTTP_403_FORBIDDEN,
6971
status.HTTP_403_FORBIDDEN,
72+
status.HTTP_403_FORBIDDEN,
7073
),
7174
],
7275
indirect=["add_user_function_api_access_rights"],
7376
)
74-
async def test_register_get_delete_function(
77+
async def test_function_workflow(
7578
client: TestClient,
7679
logged_user: UserInfoDict,
7780
mock_function: dict[str, Any],
7881
expected_register: HTTPStatus,
7982
expected_get: HTTPStatus,
83+
expected_list: HTTPStatus,
8084
expected_delete: HTTPStatus,
8185
expected_get2: HTTPStatus,
8286
add_user_function_api_access_rights: AsyncIterator[None],
@@ -101,6 +105,16 @@ async def test_register_get_delete_function(
101105
retrieved_function = RegisteredProjectFunctionGet.model_validate(data)
102106
assert retrieved_function.uid == returned_function.uid
103107

108+
url = client.app.router["list_functions"].url_for()
109+
response = await client.get(url)
110+
data, error = await assert_status(response, expected_list)
111+
if not error:
112+
retrieved_functions = TypeAdapter(
113+
list[RegisteredProjectFunctionGet]
114+
).validate_python(data)
115+
assert len(retrieved_functions) == 1
116+
assert retrieved_functions[0].uid == returned_function_uid
117+
104118
url = client.app.router["delete_function"].url_for(
105119
function_id=str(returned_function_uid)
106120
)

0 commit comments

Comments
 (0)