async def test_send_message(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4Message, "message_response/message.json") message = await message_service.send_message("stream_id", "test_message") assert message.message_id == "-AANBHKtUC-2q6_0WSjBGX___pHnSfBKdA" assert message.user.user_id == 7078106482890
async def test_suppress_message(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(MessageSuppressionResponse, "message_response/supress_message.json") suppress_response = await message_service.suppress_message("test-message-id") assert suppress_response.message_id == "test-message-id" assert suppress_response.suppression_date == 1461565603191
async def test_list_messages(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") messages_list = await message_service.list_messages("stream_id") assert len(messages_list) == 1 assert messages_list[0].message_id == "test-message1"
async def test_get_session(session_api, session_service): session_api.v2_sessioninfo_get = AsyncMock() session_api.v2_sessioninfo_get.return_value = get_deserialized_object_from_resource( UserV2, "session/get_session.json") session = await session_service.get_session() assert session.display_name == "Symphony Admin"
async def test_update_message(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4Message, "message_response/update_message.json") message = await message_service.update_message("stream_id", "message_id", "test_message") assert message.message_id == "ikCBeVCgQT876veVzQzOV3___oNI6f8obQ" assert message.user.user_id == 11338713662703
async def test_blast_message(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageBlastResponse, "message_response/blast_message.json") blast_message = await message_service.blast_message(["stream_id1", "stream_id2"], "test_message") assert len(blast_message.messages) == 2 assert blast_message.messages[0].message_id == "-AANBHKtUC-2q6_0WSjBGX___pHnSfBKdA-1" assert blast_message.messages[1].message_id == "-AANBHKtUC-2q6_0WSjBGX___pHnSfBKdA-2"
async def test_search_messages_with_stream_type_text_and_no_sid( mocked_api_client, message_service, stream_type): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") with pytest.raises(ValueError): await message_service.search_messages( MessageSearchQuery(text="some text", stream_type=stream_type))
async def test_search_messages_with_invalid_stream_type( mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") with pytest.raises(ValueError): await message_service.search_messages( MessageSearchQuery(stream_type="invalid"))
async def test_search_messages_with_hashtag(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") messages = await message_service.search_messages( MessageSearchQuery(hashtag="tag")) assert len(messages) == 1 assert messages[0].message_id == "test-message1"
async def test_get_message(mocked_api_client, message_service): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource(V4Message, "message_response/message.json") message = await message_service.get_message("-AANBHKtUC-2q6_0WSjBGX___pHnSfBKdA") assert message.message_id == "-AANBHKtUC-2q6_0WSjBGX___pHnSfBKdA" assert message.timestamp == 1572372615137 assert message.user.user_id == 7078106482890
async def test_list_attachments(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(StreamAttachmentResponse, "message_response/list_attachments.json") attachments = await message_service.list_attachments("stream_id") assert len(attachments) == 2 assert attachments[0].message_id == "PYLHNm/1K6ppeOpj+FbQ" assert attachments[1].file_id == "internal_14362370637825%2FeM6zGAILWFakDObCwMANrw%3D%3D"
async def test_message_receipts(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(MessageReceiptDetailResponse, "message_response/message_receipts.json") message_receipts = await message_service.list_message_receipts("test-message-id") assert message_receipts.creator.id == 7215545058329 assert message_receipts.stream.id == "lFpyw0ATFmji+Cc/cSzbk3///pZkWpe1dA==" assert message_receipts.message_receipt_detail[0].user.id == 7215545058329
async def test_get_message_relationships(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(MessageMetadataResponse, "message_response/message_relationships.json") message_relationships = await message_service.get_message_relationships("TYgOZ65dVsu3SeK7u2YdfH///o6fzBu") assert message_relationships.message_id == "TYgOZ65dVsu3SeK7u2YdfH///o6fzBu" assert message_relationships.parent.message_id == "/rbLQW5UHKZffM0FlLO2rn///o6vTck" assert message_relationships.parent.relationship_type == "REPLY"
async def test_get_message_status(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(MessageStatus, "message_response/message_status.json") message_status = await message_service.get_message_status("test-message-id") assert message_status.author.user_id == "7078106103901" assert len(message_status.read) == 2 assert len(message_status.sent) == 1
async def test_search_messages_with_text_and_sid(mocked_api_client, message_service): mocked_api_client.call_api.return_value = \ get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json") messages = await message_service.search_messages( MessageSearchQuery(text="some text", stream_id="sid")) assert len(messages) == 1 assert messages[0].message_id == "test-message1"
async def test_create_im_admin(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( Stream, "stream/create_im_or_mim.json") user_ids = [12334] stream = await stream_service.create_im_admin(user_ids) streams_api.v1_admin_im_create_post.assert_called_once_with( uid_list=UserIdList(value=user_ids), session_token=SESSION_TOKEN) assert stream.id == "-M8s5WG7K8lAP7cpIiuyTH___oh4zK8EdA"
async def test_send_simple_message_without_mml_tags(message_service): message_service._send_message = AsyncMock( return_value=get_deserialized_object_from_resource( V4Message, "message_response/message.json")) stream_id = "stream_id" await message_service.send_message(stream_id, "Hello") message_service._send_message.assert_called_once_with( stream_id, "<messageML>Hello</messageML>", "", "", [], [])
async def test_blast_simple_message_without_mml_tags(message_service): blast_message_response = get_deserialized_object_from_resource( V4MessageBlastResponse, "message_response/blast_message.json") message_service._blast_message = AsyncMock( return_value=blast_message_response) stream_ids = ["sid1", "sid2"] await message_service.blast_message(stream_ids, "Hello") message_service._blast_message.assert_called_once_with( stream_ids, "<messageML>Hello</messageML>", "", "", [], [])
async def test_create_room(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( V3RoomDetail, "stream/create_room.json") room_attributes = V3RoomAttributes() room_details = await stream_service.create_room(room_attributes) streams_api.v3_room_create_post.assert_called_once_with( payload=room_attributes, session_token=SESSION_TOKEN) assert room_details.room_attributes.name == "New fancy room" assert room_details.room_system_info.id == "7X1cP_3wMD4mr6rcp7j26X___oh4uDkVdA"
async def test_get_room_info(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( V3RoomDetail, "stream/get_room_info.json") room_id = "room_id" room_detail = await stream_service.get_room_info(room_id) streams_api.v3_room_id_info_get.assert_called_once_with( id=room_id, session_token=SESSION_TOKEN) assert room_detail.room_attributes.name == "New room name" assert room_detail.room_system_info.id == "ubaSiuUsc_j-_lVQ8vhAz3___opSJdJZdA"
async def test_get_im_info(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( V1IMDetail, "stream/get_im_info.json") im_id = "im_id" im_details = await stream_service.get_im_info(im_id) streams_api.v1_im_id_info_get.assert_called_once_with( id=im_id, session_token=SESSION_TOKEN) assert im_details.v1_im_attributes.pinned_message_id == "vd7qwNb6hLoUV0BfXXPC43___oPIvkwJbQ" assert im_details.im_system_info.id == "usnBKBkH_BVrGOiVpaupEH___okFfE7QdA"
async def test_set_room_active(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( RoomDetail, "stream/deactivate_room.json") room_id = "room_id" active = False room_detail = await stream_service.set_room_active(room_id, active) streams_api.v1_room_id_set_active_post.assert_called_once_with( id=room_id, active=active, session_token=SESSION_TOKEN) assert not room_detail.room_system_info.active
async def test_get_disclaimer(user_api, user_service): user_api.v1_admin_user_uid_disclaimer_get = AsyncMock() user_api.v1_admin_user_uid_disclaimer_get.return_value = \ get_deserialized_object_from_resource(Disclaimer, "disclaimer/disclaimer.json") disclaimer = await user_service.get_disclaimer(1234) user_api.v1_admin_user_uid_disclaimer_get.assert_called_with( uid=1234, session_token="session_token") assert disclaimer.id == "571d2052e4b042aaf06d2e7a" assert disclaimer.name == "Enterprise Disclaimer"
async def test_update_room(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( V3RoomDetail, "stream/update_room.json") room_id = "room_id" room_attributes = V3RoomAttributes() room_details = await stream_service.update_room(room_id, room_attributes) streams_api.v3_room_id_update_post.assert_called_once_with( id=room_id, payload=room_attributes, session_token=SESSION_TOKEN) assert room_details.room_attributes.name == "Test bot room" assert room_details.room_system_info.id == "ubaSiuUsc_j-_lVQ8vhAz3___opSJdJZdA"
async def test_get_stream(mocked_api_client, stream_service, streams_api): mocked_api_client.call_api.return_value = get_deserialized_object_from_resource( V2StreamAttributes, "stream/get_stream.json") stream_id = "stream_id" stream_attributes = await stream_service.get_stream(stream_id) streams_api.v2_streams_sid_info_get.assert_called_once_with( sid=stream_id, session_token=SESSION_TOKEN) assert stream_attributes.id == "ubaSiuUsc_j-_lVQ8vhAz3___opSJdJZdA" assert stream_attributes.room_attributes.name == "New room name" assert stream_attributes.stream_type.type == "ROOM"
async def test_get_application(application_api, application_service): application_api.v1_admin_app_id_get_get = AsyncMock() application_api.v1_admin_app_id_get_get.return_value = \ get_deserialized_object_from_resource(ApplicationDetail, "application/get_application.json") application_detail = await application_service.get_application( "my-test-app") application_api.v1_admin_app_id_get_get.assert_called_with( session_token="session_token", id="my-test-app") assert application_detail.application_info.app_id == "my-test-app" assert application_detail.description == "get an app"
async def test_list_roles(system_api, user_service): system_api.v1_admin_system_roles_list_get = AsyncMock() system_api.v1_admin_system_roles_list_get.return_value = \ get_deserialized_object_from_resource(RoleDetailList, "user/list_roles.json") role_list = await user_service.list_roles() system_api.v1_admin_system_roles_list_get.assert_called_with( session_token="session_token") assert len(role_list) == 12 assert role_list[0].id == "CONTENT_MANAGEMENT" assert role_list[1].id == "COMPLIANCE_OFFICER"
async def test_list_user_details(user_api, user_service): user_api.v2_admin_user_list_get = AsyncMock() user_api.v2_admin_user_list_get.return_value = get_deserialized_object_from_resource( V2UserDetailList, "user/list_user_detail.json") user_detail_list = await user_service.list_user_details() user_api.v2_admin_user_list_get.assert_called_with( skip=0, limit=50, session_token="session_token") assert len(user_detail_list) == 5 assert user_detail_list[0].user_attributes.user_name == "agentservice" assert user_detail_list[1].user_system_info.id == 9826885173258
async def test_get_user_detail(user_api, user_service): user_api.v2_admin_user_uid_get = AsyncMock() user_api.v2_admin_user_uid_get.return_value = get_deserialized_object_from_resource( V2UserDetail, "user/user_detail.json") user_detail = await user_service.get_user_detail(7215545078461) user_api.v2_admin_user_uid_get.assert_called_with( uid=7215545078461, session_token="session_token") assert user_detail.user_attributes.user_name == "johndoe" assert user_detail.user_system_info.status == "ENABLED" assert len(user_detail.roles.value) == 6
async def test_search_all_messages(mocked_api_client, message_service): mocked_api_client.call_api.side_effect = \ [get_deserialized_object_from_resource(V4MessageList, "message_response/list_messages.json"), V4MessageList(value=[])] chunk_size = 1 message_generator = await message_service.search_all_messages( MessageSearchQuery(hashtag="tag"), chunk_size=chunk_size) messages = [m async for m in message_generator] assert len(messages) == 1 assert messages[0].message_id == "test-message1" assert mocked_api_client.call_api.call_count == 2