def _exchange_online_move_message_to_folder_function(self, event, *args, **kwargs): """Function: This function will move an Exchange Online message to the specified folder in the users mailbox.""" try: # Initialize the results payload rp = ResultPayload(CONFIG_DATA_SECTION, **kwargs) # Validate fields validate_fields(['exo_email_address', 'exo_messages_id', 'exo_destination_mailfolder_id'], kwargs) # Get the function parameters: email_address = kwargs.get("exo_email_address") # text message_id = kwargs.get("exo_messages_id") # text mailfolders_id = kwargs.get("exo_mailfolders_id") # text destination_id = kwargs.get("exo_destination_mailfolder_id") # text LOG.info(u"exo_email_address: %s", email_address) LOG.info(u"exo_messages_id: %s", message_id) LOG.info(u"exo_mailfolders_id: %s", mailfolders_id) LOG.info(u"exo_destination_id: %s", destination_id) yield StatusMessage(u"Starting move message for email address: {} to mail folder {}".format(email_address, destination_id)) # Get the MS Graph helper class MS_graph_helper = MSGraphHelper(self.options.get("microsoft_graph_token_url"), self.options.get("microsoft_graph_url"), self.options.get("tenant_id"), self.options.get("client_id"), self.options.get("client_secret"), self.options.get("max_messages"), self.options.get("max_users"), RequestsCommon(self.opts, self.options).get_proxies()) # Call MS Graph API to get the user profile response = MS_graph_helper.move_message(email_address, mailfolders_id, message_id, destination_id) # If message was deleted a 201 code is returned. if response.status_code == 201: success = True new_message_id = response.json().get('id') response_json = {'new_message_id': new_message_id} else: success = False response_json = response.json() results = rp.done(success, response_json) yield StatusMessage(u"Returning delete results for email address: {}".format(email_address)) # Produce a FunctionResult with the results yield FunctionResult(results) except Exception as err: LOG.error(err) yield FunctionError(err)
def test_move_message(self, authenticate_mock, post_mock): """ Test Move Message""" print("Test Move Message\n") content = {"displayName": "Tester"} try: authenticate_mock.return_value = True MS_graph_helper = MSGraphHelper( MOCKED_OPTS.get("microsoft_graph_token_url"), MOCKED_OPTS.get("microsoft_graph_url"), MOCKED_OPTS.get("tenant_id"), MOCKED_OPTS.get("client_id"), MOCKED_OPTS.get("client_secret"), MOCKED_OPTS.get("max_messages"), MOCKED_OPTS.get("max_users"), MOCKED_OPTS.get("max_retries_total"), MOCKED_OPTS.get("max_retries_backoff_factor"), MOCKED_OPTS.get("max_batched_requests"), None) post_mock.return_value = generate_response(content, 201) response = MS_graph_helper.move_message( "*****@*****.**", None, "AAA", {'name': "recoverableitemsdeletions"}) assert response.status_code == 201 assert response.content["displayName"] == "Tester" post_mock.return_value = generate_response(content, 404) response = MS_graph_helper.move_message( "*****@*****.**", None, "AAA", {'name': "recoverableitemsdeletions"}) assert response.status_code == 404 assert response.content["displayName"] == "Tester" post_mock.return_value = generate_response(content, 300) response = MS_graph_helper.move_message( "*****@*****.**", None, "AAA", {'name': "recoverableitemsdeletions"}) except IntegrationError as err: assert True