Example #1
0
def validate_post(request_media, session):
    errors = []

    # Validate name
    # -----------------------------------------------------
    name = request_media.get('name')
    error = validate_str('name', name,
                         is_mandatory=True,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH,
                         exists_strategy=exists_name(name, session))
    if error:
        errors.append(error)

    # Validate description
    # -----------------------------------------------------
    description = request_media.get('description')
    error = validate_str('description', description, max_length=constants.GENERAL_DESCRIPTION_MAX_LENGTH)
    if error:
        errors.append(error)

    # Asset category id is mandatory and must be valid
    # -----------------------------------------------------
    category_id = request_media.get('category_id')
    if category_id is None:
        errors.append(build_error(Message.ERR_FIELD_CANNOT_BE_NULL, field_name='categoryId'))
    elif not session.query(ITAssetCategory).get(category_id):
        errors.append(build_error(Message.ERR_FIELD_VALUE_INVALID, field_name='categoryId'))

    return errors
Example #2
0
def validate_patch(request_media, session):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate name if informed
    # -----------------------------------------------------
    if 'name' in request_media:
        name = request_media.get('name')
        error = validate_str('name', name,
                             is_mandatory=True,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH,
                             exists_strategy=exists_name(name, session))
        if error:
            errors.append(error)

    # Validate name if informed
    # -----------------------------------------------------
    if 'description' in request_media:
        description = request_media.get('description')
        error = validate_str('description', description, max_length=constants.GENERAL_DESCRIPTION_MAX_LENGTH)
        if error:
            errors.append(error)

    return errors
Example #3
0
def validate_post(request_media, session):
    errors = []

    # Validate id
    # -----------------------------------------------------
    role_id = request_media.get('id')
    error = validate_number('id',
                            role_id,
                            is_mandatory=True,
                            min_value=1,
                            exists_strategy=exists_role_id(role_id, session))
    if error:
        errors.append(error)

    # Validate name
    # -----------------------------------------------------
    name = request_media.get('name')
    error = validate_str('name',
                         name,
                         is_mandatory=True,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH,
                         exists_strategy=exists_name(name, session))
    if error:
        errors.append(error)

    # Validate description
    # -----------------------------------------------------
    description = request_media.get('description')
    error = validate_str('description',
                         description,
                         max_length=constants.GENERAL_DESCRIPTION_MAX_LENGTH)
    if error:
        errors.append(error)

    return errors
Example #4
0
def validate_post(request_media, session):
    errors = []

    # Validate Tax ID
    # -----------------------------------------------------
    tax_id = request_media.get('tax_id')
    error = validate_str('taxId', tax_id,
                         is_mandatory=True,
                         max_length=constants.TAX_ID_MAX_LENGTH,
                         exists_strategy=exists_tax_id(tax_id, session))
    if error:
        errors.append(error)

    # Validate legal name
    # -----------------------------------------------------
    legal_name = request_media.get('legal_name')
    error = validate_str('legalName', legal_name,
                         is_mandatory=True,
                         min_length=constants.GENERAL_NAME_MIN_LENGTH,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH,
                         exists_strategy=exists_legal_name(legal_name, session))
    if error:
        errors.append(error)

    # Validate trade name
    # -----------------------------------------------------
    trade_name = request_media.get('trade_name')
    error = validate_str('tradeName', trade_name,
                         min_length=constants.GENERAL_NAME_MIN_LENGTH,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH)
    if error:
        errors.append(error)

    return errors
Example #5
0
def validate_post(request_media, session):
    errors = []

    # Validate name
    # -----------------------------------------------------
    full_name = request_media.get('full_name')
    error = validate_str('fullName',
                         full_name,
                         is_mandatory=True,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH)
    if error:
        errors.append(error)

    # Validate email
    # -----------------------------------------------------
    email = request_media.get('email')
    error = validate_str('email',
                         email,
                         is_mandatory=True,
                         max_length=constants.EMAIL_MAX_LENGTH,
                         exists_strategy=exists_email(email, session))
    if error:
        errors.append(error)

    # Validate password
    # -----------------------------------------------------
    password = request_media.get('password')
    error = validate_str('password',
                         password,
                         is_mandatory=True,
                         min_length=constants.PASSWORD_MIN_LENGTH)
    if error:
        errors.append(error)

    # Validate roles
    # -----------------------------------------------------
    roles = request_media.get('roles')
    if roles:
        # Get the system roles (get scalars from tuples returned)
        existing_roles = session.query(SystemRole.id).all()
        existing_roles_ids = [role_id for (role_id, ) in existing_roles]

        # Check if id informed exists
        for idx, role in enumerate(roles):
            if role.get('id') not in existing_roles_ids:
                field_name = 'role[{}].id'.format(idx)
                errors.append(
                    build_error(Message.ERR_FIELD_VALUE_INVALID,
                                field_name=field_name))

    return errors
Example #6
0
def validate_patch(request_media, it_asset_instance, organization_code,
                   session):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate external identifier if informed
    # There MUST NOT exist the same (IT asset id + external identifier) combination in organization except itself
    # -----------------------------------------------------
    if 'external_identifier' in request_media:
        external_identifier = request_media.get('external_identifier')
        error = validate_str('externalIdentifier',
                             external_identifier,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH)
        if error:
            errors.append(error)
        elif exists_other_it_asset(session, organization_code,
                                   it_asset_instance, external_identifier):
            errors.append(
                build_error(Message.ERR_FIELD_VALUE_ALREADY_EXISTS,
                            field_name='externalIdentifier'))

    return errors
Example #7
0
def validate_post(request_media, organization_code, session):
    errors = []

    # Validate IT asset id
    # -----------------------------------------------------
    it_asset_id = request_media.get('it_asset_id')
    if it_asset_id is None:
        errors.append(
            build_error(Message.ERR_FIELD_CANNOT_BE_NULL,
                        field_name='itAssetId'))
    elif not session.query(ITAsset).get(it_asset_id):
        errors.append(
            build_error(Message.ERR_FIELD_VALUE_INVALID,
                        field_name='itAssetId'))

    # Validate external identifier if informed
    # There MUST NOT exist the same (IT asset id + external identifier) combination in organization
    # -----------------------------------------------------
    external_identifier = request_media.get('external_identifier')
    error = validate_str('externalIdentifier',
                         external_identifier,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH)
    if error:
        errors.append(error)
    elif exists_it_asset(session, organization_code, it_asset_id,
                         external_identifier):
        errors.append(
            build_error(Message.ERR_FIELD_VALUE_ALREADY_EXISTS,
                        field_name='externalIdentifier'))

    return errors
def validate_post(request_media, session):
    errors = []

    # Validate name
    # -----------------------------------------------------
    name = request_media.get('name')
    error = validate_str('name',
                         name,
                         is_mandatory=True,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH,
                         exists_strategy=exists_name(name, session))
    if error:
        errors.append(error)

    # Category id is mandatory, must be valid and must be available
    # -----------------------------------------------------
    category_id = request_media.get('id')
    error = validate_number('id',
                            category_id,
                            is_mandatory=True,
                            min_value=1,
                            exists_strategy=lambda: session.query(
                                ITAssetCategory).get(category_id))
    if errors:
        errors.append(error)

    return errors
Example #9
0
def validate_patch(request_media, session):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate name if informed
    # -----------------------------------------------------
    if 'full_name' in request_media:
        email = request_media.get('full_name')
        error = validate_str('fullName',
                             email,
                             is_mandatory=True,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH)
        if error:
            errors.append(error)

    # Validate email if informed
    # -----------------------------------------------------
    if 'email' in request_media:
        email = request_media.get('email')
        error = validate_str('email',
                             email,
                             is_mandatory=True,
                             max_length=constants.EMAIL_MAX_LENGTH,
                             exists_strategy=exists_email(email, session))
        if error:
            errors.append(error)

    # Validate password if informed
    # -----------------------------------------------------
    if 'password' in request_media:
        password = request_media.get('password')
        error = validate_str('password',
                             password,
                             is_mandatory=True,
                             min_length=constants.PASSWORD_MIN_LENGTH)
        if error:
            errors.append(error)

    return errors
Example #10
0
def validate_patch(request_media, session):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate Tax ID if informed
    # -----------------------------------------------------
    if 'tax_id' in request_media:
        tax_id = request_media.get('tax_id')
        error = validate_str('taxId', tax_id,
                             is_mandatory=True,
                             max_length=constants.TAX_ID_MAX_LENGTH,
                             exists_strategy=exists_tax_id(tax_id, session))
        if error:
            errors.append(error)

    # Validate legal name if informed
    # -----------------------------------------------------
    if 'legal_name' in request_media:
        legal_name = request_media.get('legal_name')
        error = validate_str('legalName', legal_name,
                             is_mandatory=True,
                             min_length=constants.GENERAL_NAME_MIN_LENGTH,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH,
                             exists_strategy=exists_legal_name(legal_name, session))
        if error:
            errors.append(error)

    # Validate trade name if informed
    # -----------------------------------------------------
    if 'trade_name' in request_media:
        trade_name = request_media.get('trade_name')
        error = validate_str('tradeName', trade_name,
                             min_length=constants.GENERAL_NAME_MIN_LENGTH,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH)
        if error:
            errors.append(error)

    return errors
Example #11
0
def validate_patch(request_media, session):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate name if informed
    # -----------------------------------------------------
    if 'name' in request_media:
        name = request_media.get('name')
        error = validate_str('name', name,
                             is_mandatory=True,
                             max_length=constants.GENERAL_NAME_MAX_LENGTH,
                             exists_strategy=exists_name(name, session))
        if error:
            errors.append(error)

    # Validate description if informed
    # -----------------------------------------------------
    if 'description' in request_media:
        description = request_media.get('description')
        error = validate_str('description', description, max_length=constants.GENERAL_DESCRIPTION_MAX_LENGTH)
        if error:
            errors.append(error)

    # Validate asset category id if informed
    # -----------------------------------------------------
    if 'category_id' in request_media:
        category_id = request_media.get('category_id')

        # Cannot be null if informed and must be valid
        if category_id is None:
            errors.append(build_error(Message.ERR_FIELD_CANNOT_BE_NULL, field_name='categoryId'))
        elif not session.query(ITAssetCategory).get(category_id):
            errors.append(build_error(Message.ERR_FIELD_VALUE_INVALID, field_name='categoryId'))

    return errors
Example #12
0
def validate_post(request_media, session):
    errors = []

    # Validate name
    # -----------------------------------------------------
    name = request_media.get('name')
    error = validate_str('name',
                         name,
                         is_mandatory=True,
                         max_length=constants.GENERAL_NAME_MAX_LENGTH,
                         exists_strategy=exists_name(name, session))
    if error:
        errors.append(error)

    return errors
Example #13
0
def validate_post(request_media):
        errors = []

        if not request_media:
            errors.append(build_error(Message.ERR_NO_CONTENT))
            return errors

        # Validate email
        # -----------------------------------------------------
        email = request_media.get('email')
        error = validate_str('email', email, is_mandatory=True)
        if error:
            errors.append(error)
            return errors

        # Validate password
        # -----------------------------------------------------
        password = request_media.get('password')
        error = validate_str('password', password, is_mandatory=True)
        if error:
            errors.append(error)
            return errors

        return errors
def validate_post(request_media):
    errors = []

    # Validate description if informed
    # -----------------------------------------------------
    description = request_media.get('description')
    error = validate_str('description',
                         description,
                         max_length=constants.ANALYSIS_DESCRIPTION_MAX_LENGTH)
    if error:
        errors.append(error)

    # Validate scopes if informed
    # -----------------------------------------------------
    scopes = request_media.get('scopes') or []
    for i, scope in enumerate(scopes):

        scope_i = f'scopes[{i}]'

        # departmentId is the minimum scope that must be informed
        if scope.get('department_id') is None:
            errors.append(
                build_error(Message.ERR_FIELD_CANNOT_BE_NULL,
                            field_name=f'{scope_i}.departmentId'))

        # macroprocessId cannot be null when processId is filled
        if scope.get('macroprocess_id') is None and scope.get(
                'process_id') is not None:
            errors.append(
                build_error(Message.ERR_FIELD_CANNOT_BE_NULL,
                            field_name=f'{scope_i}.macroprocessId'))

        # Validate if values are numbers greater than 0
        errors.append(
            validate_number(f'{scope_i}.departmentId',
                            scope.get('department_id'),
                            min_value=1))
        errors.append(
            validate_number(f'{scope_i}.macroprocessId',
                            scope.get('macroprocess_id'),
                            min_value=1))
        errors.append(
            validate_number(f'{scope_i}.processId',
                            scope.get('process_id'),
                            min_value=1))

    # Remove None's before returning
    return [err for err in errors if err is not None]
def validate_patch(request_media):
    errors = []

    if not request_media:
        errors.append(build_error(Message.ERR_NO_CONTENT))
        return errors

    # Validate description if informed
    # -----------------------------------------------------
    if 'description' in request_media:
        description = request_media.get('description')
        error = validate_str(
            'description',
            description,
            max_length=constants.ANALYSIS_DESCRIPTION_MAX_LENGTH)
        if error:
            errors.append(error)

    return errors
Example #16
0
def validate_post(request_media, it_asset_instance_id, organization_code, session):
    errors = []

    # Validate mitigation control id
    # -----------------------------------------------------
    mitigation_control_id = request_media.get('mitigation_control_id')
    if mitigation_control_id is None:
        errors.append(build_error(Message.ERR_FIELD_CANNOT_BE_NULL, field_name='mitigationControlId'))
    elif not session.query(MitigationControl).get(mitigation_control_id):
        errors.append(build_error(Message.ERR_FIELD_VALUE_INVALID, field_name='mitigationControlId'))
    elif find_mitigation_control_in_it_asset(mitigation_control_id, it_asset_instance_id, organization_code, session):
        errors.append(build_error(Message.ERR_FIELD_VALUE_ALREADY_EXISTS, field_name='mitigationControlId'))

    # Validate description if informed
    # -----------------------------------------------------
    description = request_media.get('description')
    error = validate_str('description', description, max_length=constants.GENERAL_DESCRIPTION_MAX_LENGTH)
    if error:
        errors.append(error)

    return errors