1- from unittest .mock import MagicMock , AsyncMock
1+ import json
2+ from pathlib import Path
3+ from unittest .mock import MagicMock , AsyncMock , mock_open , patch
24
35import base64
46import pytest
2022from symphony .bdk .gen .pod_model .following_list_response import FollowingListResponse
2123from symphony .bdk .gen .pod_model .integer_list import IntegerList
2224from symphony .bdk .gen .pod_model .role_detail_list import RoleDetailList
25+ from symphony .bdk .gen .pod_model .service_account_manifest import ServiceAccountManifest
2326from symphony .bdk .gen .pod_model .string_id import StringId
2427from symphony .bdk .gen .pod_model .user_detail_list import UserDetailList
2528from symphony .bdk .gen .pod_model .user_filter import UserFilter
@@ -78,11 +81,11 @@ def fixture_user_service(user_api, users_api, audit_trail_api, system_api, auth_
7881 audit_trail_api ,
7982 system_api ,
8083 auth_session ,
81- minimal_retry_config ()
84+ minimal_retry_config (),
85+ "manifest.json"
8286 )
8387 return service
8488
85-
8689@pytest .mark .asyncio
8790async def test_list_users_by_ids (users_api , user_service ):
8891 users_api .v3_users_get = AsyncMock ()
@@ -774,3 +777,36 @@ async def test_unsuspend(user_api, user_service):
774777 payload = user_suspension ,
775778 session_token = "session_token"
776779 )
780+
781+ @pytest .mark .asyncio
782+ async def test_get_manifest (user_api , user_service ):
783+ user_api .v1_user_manifest_own_get = AsyncMock ()
784+
785+ await user_service .get_manifest ()
786+
787+ user_api .v1_user_manifest_own_get .assert_called_with (session_token = "session_token" )
788+
789+
790+ @pytest .mark .asyncio
791+ async def test_update_manifest_file (user_api , user_service ):
792+ expected_manifest_data = {"commands" : [
793+ {
794+ "args" : [{"name" : "[query1]" },{"name" : "[query2]" }],
795+ "desc" : "Search users based on name, company or job title" ,
796+ "example" : "/search John Smith" ,
797+ "name" : "search"
798+ }
799+ ]}
800+ mock_file_content_json = json .dumps (expected_manifest_data )
801+
802+ with patch ('pathlib.Path.open' , new_callable = mock_open , read_data = mock_file_content_json ) as mock_path_open :
803+ user_api .v1_user_manifest_own_post = AsyncMock ()
804+
805+
806+ await user_service .update_manifest_from_file ()
807+ mock_path_open .assert_called_once ()
808+
809+ user_api .v1_user_manifest_own_post .assert_called_once_with (
810+ session_token = "session_token" ,
811+ manifest = ServiceAccountManifest (json .dumps (expected_manifest_data ))
812+ )
0 commit comments