Beispiel #1
0
def create_excluded_resources_handler(event, context):
    trace_id = eventhelper.get_trace_id(event)
    user_id = trace_id
    email = eventhelper.get_email(event)
    organization_id = eventhelper.get_organization_id(event)
    project_id = eventhelper.get_project_id(event)
    coop_id = eventhelper.get_coop_id(event)
    check_item_code = eventhelper.get_check_item_code(event)

    # Get logging
    pm_logger = common_utils.begin_logger(trace_id, __name__,
                                          inspect.currentframe())

    # アクセス権限チェックを行います。
    response_authority = checkauthority.authority(trace_id, user_id,
                                                  organization_id,
                                                  Authority.Editor)
    if response_authority:
        return common_utils.response(response_authority, pm_logger)

    # return response data
    response = checkitemsettings_logic.create_excluded_resources(
        trace_id, user_id, organization_id, project_id, coop_id,
        check_item_code, email, event['body'])
    return common_utils.response(response, pm_logger)
    def test_create_excluded_resources_case_parse_json_error(self):
        body_object = '{"json_invalid"}'
        # mock object
        patch_query_awscoop_coop_key = patch(
            "premembers.repository.pm_awsAccountCoops.query_awscoop_coop_key")

        # start mock object
        mock_query_awscoop_coop_key = patch_query_awscoop_coop_key.start()
        # mock function error_exception
        mock_error_exception = mock_common_utils.mock_error_exception(self)

        # mock data
        mock_query_awscoop_coop_key.return_value = data_pm_aws_account_coops

        # addCleanup stop mock object
        self.addCleanup(patch_query_awscoop_coop_key.stop)

        # call Function test
        response = checkitemsettings_logic.create_excluded_resources(
            trace_id, user_id, organization_id, project_id, coop_id,
            check_item_code, mail_address, body_object)

        # assert output function
        # check call function common write log error
        mock_error_exception.assert_called_once()

        # check response
        message_202 = MsgConst.ERR_REQUEST_202
        actual_response_body = json.loads(response["body"])
        self.assertEqual(actual_response_body["code"], message_202["code"])
        self.assertEqual(actual_response_body["message"],
                         message_202["message"])
        self.assertEqual(actual_response_body["description"],
                         message_202["description"])
        self.assertEqual(response["statusCode"], HTTPStatus.BAD_REQUEST.value)
    def test_create_excluded_resources_case_error_create_excluded_resourcess(
            self):
        trace_id = user_id_authority_owner
        param_body = {
            "regionName": region_name,
            "resourceName": resource_name,
            "resourceType": resource_type,
            "exclusionComment": exclusion_comment
        }
        body_object = json.dumps(param_body)

        # mock object
        patch_query_awscoop_coop_key = patch(
            "premembers.repository.pm_awsAccountCoops.query_awscoop_coop_key")
        patch_query_filter_region_name_and_resource_name = patch(
            "premembers.repository.pm_exclusionResources.query_filter_region_name_and_resource_name"
        )
        patch_create_pm_exclusionResources = patch(
            "premembers.repository.pm_exclusionResources.create")

        # mock function error_exception
        mock_error_exception = mock_common_utils.mock_error_exception(self)
        mock_query_awscoop_coop_key = patch_query_awscoop_coop_key.start()
        mock_query_filter_region_name_and_resource_name = patch_query_filter_region_name_and_resource_name.start(
        )
        mock_create_pm_exclusionResources = patch_create_pm_exclusionResources.start(
        )

        # mock data
        mock_query_awscoop_coop_key.return_value = data_pm_aws_account_coops
        mock_query_filter_region_name_and_resource_name.return_value = None
        mock_create_pm_exclusionResources.side_effect = Exception()

        # addCleanup stop mock object
        self.addCleanup(patch_query_awscoop_coop_key.stop)
        self.addCleanup(patch_query_filter_region_name_and_resource_name.stop)
        self.addCleanup(patch_create_pm_exclusionResources.stop)

        # call Function test
        actual_response = checkitemsettings_logic.create_excluded_resources(
            trace_id, user_id_authority_owner, organization_id, project_id,
            coop_id, check_item_code, mail_address, body_object)

        # assert output function
        # check call function common write log error
        mock_error_exception.assert_called_once()

        # assert output function
        actual_response_body = json.loads(actual_response["body"])
        err_db_403 = MsgConst.ERR_DB_403
        self.assertEqual(err_db_403["code"], actual_response_body["code"])
        self.assertEqual(err_db_403["message"],
                         actual_response_body["message"])
        self.assertEqual(err_db_403["description"],
                         actual_response_body["description"])
        self.assertEqual(HTTPStatus.INTERNAL_SERVER_ERROR.value,
                         actual_response["statusCode"])
    def test_create_excluded_resources_case_error_validate_param_lenght_exclusion_comment_is_301(
            self):
        trace_id = user_id_authority_owner
        param_body = {
            "regionName":
            region_name,
            "resourceType":
            resource_type,
            "resourceName":
            resource_name,
            "exclusionComment":
            "チェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントメントトチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントメントトチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントチェック項目除外コメントメントトト"
        }
        body_object = json.dumps(param_body)

        # mock object
        patch_query_awscoop_coop_key = patch(
            "premembers.repository.pm_awsAccountCoops.query_awscoop_coop_key")

        # mock function error_exception
        mock_error_validate = mock_common_utils.mock_error_validate(self)
        mock_query_awscoop_coop_key = patch_query_awscoop_coop_key.start()

        # mock data
        mock_query_awscoop_coop_key.return_value = data_pm_aws_account_coops

        # addCleanup stop mock object
        self.addCleanup(patch_query_awscoop_coop_key.stop)

        # call Function test
        actual_response = checkitemsettings_logic.create_excluded_resources(
            trace_id, user_id_authority_owner, organization_id, project_id,
            coop_id, check_item_code, mail_address, body_object)

        # assert output function
        # check call function common write log error
        mock_error_validate.assert_called_once()

        # check response
        response_body = json.loads(actual_response["body"])
        message_201 = MsgConst.ERR_REQUEST_201
        self.assertEqual(response_body["code"], message_201["code"])
        self.assertEqual(response_body["message"], message_201["message"])
        self.assertEqual(actual_response["statusCode"],
                         HTTPStatus.UNPROCESSABLE_ENTITY.value)

        actual_response_error = response_body["errors"]
        err_val_303 = MsgConst.ERR_VAL_303
        self.assertEqual(err_val_303["code"], actual_response_error[0]["code"])
        self.assertEqual("exclusionComment", actual_response_error[0]["field"])
        self.assertEqual(param_body["exclusionComment"],
                         actual_response_error[0]["value"])
        self.assertEqual(err_val_303["message"].format(300),
                         actual_response_error[0]["message"])
    def test_create_excluded_resources_case_get_record_aws_account_coops_is_zero(
            self):
        # mock object
        patch_query_awscoop_coop_key = patch(
            "premembers.repository.pm_awsAccountCoops.query_awscoop_coop_key")

        # start mock object
        mock_query_awscoop_coop_key = patch_query_awscoop_coop_key.start()
        mock_error_common = mock_common_utils.mock_error_common(self)

        # mock data
        mock_query_awscoop_coop_key.return_value = []

        # addCleanup stop mock object
        self.addCleanup(patch_query_awscoop_coop_key.stop)

        body_object = json.dumps(param_body)

        # call Function test
        actual_response = checkitemsettings_logic.create_excluded_resources(
            trace_id, user_id, organization_id, project_id, coop_id,
            check_item_code, mail_address, body_object)

        # assert output function
        # check call function common write log error
        mock_error_common.assert_called_once()

        # assert output function
        actual_response_body = json.loads(actual_response["body"])
        err_aws_401 = MsgConst.ERR_AWS_401
        self.assertEqual(err_aws_401["code"], actual_response_body["code"])
        self.assertEqual(err_aws_401["message"],
                         actual_response_body["message"])
        self.assertEqual(err_aws_401["description"],
                         actual_response_body["description"])
        self.assertEqual(HTTPStatus.UNPROCESSABLE_ENTITY.value,
                         actual_response["statusCode"])