async def test_remove_participant(): thread_id = "19:[email protected]" participant_id = "8:acs:57b9bac9-df6c-4d39-a73b-26e944adf6ea_9b0110-08007f1041" raised = False async def mock_send(*_, **__): return mock_response(status_code=204) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) try: await chat_thread_client.remove_participant( identifier=CommunicationUserIdentifier(participant_id)) except: raised = True assert raised == False
async def test_add_participant(): thread_id = "19:[email protected]" new_participant_id="8:acs:57b9bac9-df6c-4d39-a73b-26e944adf6ea_9b0110-08007f1041" raised = False async def mock_send(*_, **__): return mock_response(status_code=201) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) new_participant = ChatThreadParticipant( user=CommunicationUserIdentifier(new_participant_id), display_name='name', share_history_time=datetime.utcnow()) try: await chat_thread_client.add_participant(new_participant) except: raised = True assert raised == False
async def test_update_message(): thread_id = "19:[email protected]" message_id = '1596823919339' raised = False async def mock_send(*_, **__): return mock_response(status_code=204) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) try: content = "updated message content" await chat_thread_client.update_message(message_id, content=content) except: raised = True assert raised == False
async def test_get_message(): thread_id = "19:[email protected]" message_id='1596823919339' raised = False message_str = "Hi I am Bob." async def mock_send(*_, **__): return mock_response(status_code=200, json_payload={ "id": message_id, "type": "text", "sequenceId": "3", "version": message_id, "content": { "message": message_str, "topic": "Lunch Chat thread", "participants": [ { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b", "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" } ], "initiator": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" }, "senderDisplayName": "Bob", "createdOn": "2021-01-27T01:37:33Z", "senderId": "8:acs:46849534-eb08-4ab7-bde7-c36928cd1547_00000007-e155-1f06-1db7-3a3a0d00004b" }) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) message = None try: message = await chat_thread_client.get_message(message_id) except: raised = True assert raised == False assert message.id == message_id assert message.type == ChatMessageType.TEXT assert message.content.message == message_str assert len(message.content.participants) > 0
async def test_get_message(): thread_id = "19:[email protected]" message_id = '1596823919339' raised = False async def mock_send(*_, **__): return mock_response(status_code=200, json_payload={"id": message_id}) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) message = None try: message = await chat_thread_client.get_message(message_id) except: raised = True assert raised == False assert message.id == message_id
async def send_message_async(self): from azure.communication.chat.aio import ChatThreadClient, CommunicationUserCredential chat_thread_client = ChatThreadClient( self.endpoint, CommunicationUserCredential(self.token), self._thread_id) async with chat_thread_client: # [START send_message] from azure.communication.chat import ChatMessagePriority priority = ChatMessagePriority.NORMAL content = 'hello world' sender_display_name = 'sender name' send_message_result = await chat_thread_client.send_message( content, priority=priority, sender_display_name=sender_display_name) # [END send_message] self._message_id = send_message_result.id print("send_message succeeded, message id:", self._message_id)
async def test_add_participants_w_failed_participants_returns_nonempty_list(): thread_id = "19:[email protected]" new_participant_id="8:acs:57b9bac9-df6c-4d39-a73b-26e944adf6ea_9b0110-08007f1041" raised = False error_message = "some error message" async def mock_send(*_, **__): return mock_response(status_code=201, json_payload={ "invalidParticipants": [ { "code": "string", "message": error_message, "target": new_participant_id, "details": [] } ] }) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) new_participant = ChatThreadParticipant( user=CommunicationUserIdentifier(new_participant_id), display_name='name', share_history_time=datetime.utcnow()) participants = [new_participant] try: result = await chat_thread_client.add_participants(participants) except: raised = True assert raised == False assert len(result) == 1 failed_participant = result[0][0] communication_error = result[0][1] assert new_participant.user.identifier == failed_participant.user.identifier assert new_participant.display_name == failed_participant.display_name assert new_participant.share_history_time == failed_participant.share_history_time assert error_message == communication_error.message
async def test_send_message(): thread_id = "19:[email protected]" message_id='1596823919339' raised = False async def mock_send(*_, **__): return mock_response(status_code=201, json_payload={"id": message_id}) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) create_message_result_id = None try: content='hello world' sender_display_name='sender name' create_message_result_id = await chat_thread_client.send_message( content, sender_display_name=sender_display_name) except: raised = True assert raised == False assert create_message_result_id == message_id
async def test_get_properties(): thread_id = "19:[email protected]" raised = False async def mock_send(*_, **__): return mock_response(status_code=200, json_payload={ "id": thread_id, "topic": "Lunch Chat thread", "createdOn": "2020-10-30T10:50:50Z", "deletedOn": "2020-10-30T10:50:50Z", "createdByCommunicationIdentifier": {"rawId": "string", "communicationUser": {"id": "string"}} }) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) get_thread_result = None try: get_thread_result = await chat_thread_client.get_properties(thread_id) except: raised = True assert raised == False assert get_thread_result.id == thread_id
async def test_send_message_w_invalid_type_throws_error(): thread_id = "19:[email protected]" message_id = '1596823919339' raised = False # the payload is irrelevant - it'll fail before async def mock_send(*_, **__): return mock_response(status_code=201, json_payload={"id": message_id}) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) create_message_result_id = None chat_message_types = [ ChatMessageType.PARTICIPANT_ADDED, ChatMessageType.PARTICIPANT_REMOVED, ChatMessageType.TOPIC_UPDATED, "participant_added", "participant_removed", "topic_updated", "ChatMessageType.TEXT", "ChatMessageType.HTML", "ChatMessageType.PARTICIPANT_ADDED", "ChatMessageType.PARTICIPANT_REMOVED", "ChatMessageType.TOPIC_UPDATED" ] for chat_message_type in chat_message_types: try: content = 'hello world' sender_display_name = 'sender name' create_message_result = await chat_thread_client.send_message( content, chat_message_type=chat_message_type, sender_display_name=sender_display_name) except: raised = True assert raised == True
async def test_send_message_w_type(): thread_id = "19:[email protected]" message_id = '1596823919339' raised = False message_str = "Hi I am Bob." create_message_result_id = None chat_message_types = [ ChatMessageType.TEXT, ChatMessageType.HTML, "text", "html" ] for chat_message_type in chat_message_types: async def mock_send(*_, **__): return mock_response( status_code=201, json_payload={ "id": message_id, "type": chat_message_type, "sequenceId": "3", "version": message_id, "content": { "message": message_str, "topic": "Lunch Chat thread", "participants": [{ "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b", "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" }], "initiator": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" }, "senderDisplayName": "Bob", "createdOn": "2021-01-27T01:37:33Z", "senderId": "8:acs:46849534-eb08-4ab7-bde7-c36928cd1547_00000007-e155-1f06-1db7-3a3a0d00004b" }) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) try: content = 'hello world' sender_display_name = 'sender name' create_message_result = await chat_thread_client.send_message( content, chat_message_type=chat_message_type, sender_display_name=sender_display_name) create_message_result_id = create_message_result.id except: raised = True assert raised == False assert create_message_result_id == message_id
async def test_list_messages_with_start_time(): thread_id = "19:[email protected]" raised = False async def mock_send(*_, **__): return mock_response( status_code=200, json_payload={ "value": [{ "id": "message_id_1", "type": "text", "sequenceId": "3", "version": "message_id_1", "content": { "message": "message_str", "topic": "Lunch Chat thread", "participants": [{ "communicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } }, "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" }], "initiatorCommunicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } } }, "senderDisplayName": "Bob", "createdOn": "2021-01-27T01:37:33Z", "senderCommunicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } }, "deletedOn": "2021-01-27T01:37:33Z", "editedOn": "2021-01-27T01:37:33Z" }, { "id": "message_id_2", "type": "text", "sequenceId": "3", "version": "message_id_2", "content": { "message": "message_str", "topic": "Lunch Chat thread", "participants": [{ "communicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } }, "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" }], "initiatorCommunicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } } }, "senderDisplayName": "Bob", "createdOn": "2021-01-27T01:37:33Z", "senderCommunicationIdentifier": { "rawId": "string", "communicationUser": { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" } }, "deletedOn": "2021-01-27T01:37:33Z", "editedOn": "2021-01-27T01:37:33Z" }] }) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) chat_messages = None try: chat_messages = chat_thread_client.list_messages( start_time=datetime(2020, 8, 17, 18, 0, 0)) except: raised = True assert raised == False items = [] async for item in chat_messages: items.append(item) assert len(items) == 2
async def test_list_messages_with_start_time(): thread_id = "19:[email protected]" raised = False async def mock_send(*_, **__): return mock_response(status_code=200, json_payload={ "value": [ { "id": "message_id1", "type": "text", "sequenceId": "3", "version": "message_id1", "content": { "message": "message_str", "topic": "Lunch Chat thread", "participants": [ { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b", "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" } ], "initiator": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" }, "senderDisplayName": "Bob", "createdOn": "2020-08-17T18:05:44Z", "senderId": "8:acs:46849534-eb08-4ab7-bde7-c36928cd1547_00000007-e155-1f06-1db7-3a3a0d00004b" }, { "id": "message_id2", "type": "text", "sequenceId": "3", "version": "message_id2", "content": { "message": "message_str", "topic": "Lunch Chat thread", "participants": [ { "id": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b", "displayName": "Bob", "shareHistoryTime": "2020-10-30T10:50:50Z" } ], "initiator": "8:acs:8540c0de-899f-5cce-acb5-3ec493af3800_0e59221d-0c1d-46ae-9544-c963ce56c10b" }, "senderDisplayName": "Bob", "createdOn": "2020-08-17T23:13:33Z", "senderId": "8:acs:46849534-eb08-4ab7-bde7-c36928cd1547_00000007-e155-1f06-1db7-3a3a0d00004b" }]}) chat_thread_client = ChatThreadClient("https://endpoint", credential, thread_id, transport=Mock(send=mock_send)) chat_messages = None try: chat_messages = chat_thread_client.list_messages( start_time=datetime(2020, 8, 17, 18, 0, 0) ) except: raised = True assert raised == False items = [] async for item in chat_messages: items.append(item) assert len(items) == 2