コード例 #1
0
    def test_get_message(self, authenticate_mock, get_mock):
        """ Test Get Message"""
        print("Test Get 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)

            get_mock.return_value = generate_response(content, 200)

            response = MS_graph_helper.get_message("*****@*****.**", "AAA")
            assert response.status_code == 200
            assert response.content["displayName"] == "Tester"

            get_mock.return_value = generate_response(content, 404)
            response = MS_graph_helper.get_message("*****@*****.**", "AAA")
            assert response.status_code == 404
            assert response.content["displayName"] == "Tester"

            get_mock.return_value = generate_response(content, 300)
            response = MS_graph_helper.get_message("*****@*****.**", "AAA")

        except IntegrationError as err:
            assert True
    def _exchange_online_get_message_function(self, event, *args, **kwargs):
        """Function: This function returns the contents of an Exchange Online message."""
        try:
            # Initialize the results payload
            rp = ResultPayload(CONFIG_DATA_SECTION, **kwargs)

            # Validate fields
            validate_fields(['exo_email_address', 'exo_messages_id'], kwargs)

            # Get the function parameters:
            email_address = kwargs.get("exo_email_address")  # text
            message_id = kwargs.get("exo_messages_id")  # text

            LOG.info(u"exo_email_address: %s", email_address)
            LOG.info(u"exo_messages_id: %s", message_id)

            yield StatusMessage(
                u"Starting get message for email address: {}".format(
                    email_address))

            # 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.get_message(email_address, message_id)

            response_json = response.json()
            results = rp.done(True, response_json)

            # Add pretty printed string for easier to read output text in note.
            pretty_string = json.dumps(response_json,
                                       ensure_ascii=False,
                                       sort_keys=True,
                                       indent=4,
                                       separators=(',', ': '))
            results['pretty_string'] = pretty_string

            yield StatusMessage(
                u"Returning results for get message for email address: {}".
                format(email_address))

            LOG.debug(json.dumps(pretty_string))

            # Produce a FunctionResult with the results
            yield FunctionResult(results)
        except Exception as err:
            LOG.error(err)
            yield FunctionError(err)