1818 RegisteredProjectFunctionGet ,
1919)
2020from models_library .api_schemas_webserver .users import MyFunctionPermissionsGet
21+ from pydantic import TypeAdapter
2122from pytest_simcore .helpers .assert_checks import assert_status
2223from pytest_simcore .helpers .webserver_users import UserInfoDict
2324from 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