Example #1
0
    def validate_attendee_request (self, req):
        error_messages = []
        try:
            if 'name' in req.json_body:
                self.validate_attendee_name(req.json_body['name'])
            else:
                error_messages.append(
                    'Name is blank. A value for name is required'
                )
        except ValidationException as e:
            error_messages.append(e.messages)

        try:
            if 'id' in req.json_body:
                self.validate_attendee_id(req.json_body['id'])
            elif 'user_id' in req.cookies:
                self.validate_attendee_id(req.cookies['user_id'])
            else:
                error_messages.append(
                    'A suitable ID could not be found for this request'
                )
        except ValidationException as e:
            error_messages.append(e.messages)

        if error_messages:
            raise ValidationException(error_messages)

        return None
Example #2
0
    def validate_event(self, eventObject):
        '''
        Validates each field of the event object.

        Returns a list of error messages or an empty list if none found.
        '''

        error_messages = []

        # Validate name field
        if 'name' in eventObject:
            if not isinstance(eventObject['name'], str):
                error_messages.append('Name must be a string')

            elif len(eventObject['name']) > self.__event_name_length:
                message = 'Name must be less than {0} characters'.format(
                    self.__event_name_length)
                error_messages.append(message)

            else:
                test = re.search(self.__event_creator_pattern,
                                 eventObject['name'])
                if test == None or test.string != eventObject['name']:
                    error_messages.append(
                        'Name must only contain letters, numbers, spaces, or dashes'
                    )
        else:
            error_messages.append(
                'Name is blank. A value for name is required')

        # Validate creator field
        if 'creator' in eventObject:

            if not isinstance(eventObject['creator'], str):
                error_messages.append('Creator must be a string')

            elif len(eventObject['creator']) > self.__event_creator_length:
                message = 'Creator must be less than {0} characters'.format(
                    self.__event_creator_length)
                error_messages.append(message)

            else:
                test = re.search(self.__event_creator_pattern,
                                 eventObject['creator'])
                if test == None or test.string != eventObject['creator']:
                    error_messages.append(
                        'Creator must only contain letters, numbers, spaces, or dashes'
                    )
        else:
            error_messages.append(
                'Creator is blank. A value for creator is required')

        if error_messages:
            raise ValidationException(error_messages)

        return None
Example #3
0
    def __create_new_user(self, req_body):
        attendee_name = ''
        try:
            if 'creator' in req_body:
                attendee_name = req_body['creator']
            elif 'name' in req_body:
                attendee_name = req_body['name']
        except Exception as e:
            raise ValidationException('Payload was not found in this request')
        else:
            if not attendee_name:
                raise ValidationException(
                    'Name for this user could not be located')

        # create a new user with the provided name
        self.__attendeeValidator.validate_attendee_name(attendee_name)
        att = self.__attendee_dao.save_attendee({'name': attendee_name})

        # return the attendee object
        return att
Example #4
0
    def validate_availability_id(self, availability_id):
        error_messages = []
        # Validate ID field
        if isinstance(availability_id, str):
            test = re.search(self.__availability_id_pattern, availability_id)
            if test == None or test.string != availability_id:
                error_messages.append(
                    'ID must only contain letters or numbers')
        else:
            error_messages.append('Availability ID must be a String')

        if error_messages:
            raise ValidationException(error_messages)
Example #5
0
    def set_user_id(self, req):
        try:
            if os.environ['TEST_DB_FAIL'] == 'True':
                raise ValidationException('mock exception')
        except ValidationException as e:
            raise  # coding=utf-8
        except Exception:
            pass

        req.cookies['user_id'] = const.GOOD_USER_ID
        print('the req:', req)
        print('the req json body:', req.json_body)
        print('the req cookies:', req.cookies)
        return req
Example #6
0
 def validate_field(self, field, value):
     '''
     Generic method for regex field validation
     '''
     error_messages = []
     try:
         if isinstance(value, str):
             test = re.search(field['pattern'], value)
             if test == None or test.string != value:
                 error_messages.append(field['error_message'])
         else:
             error_messages.append(
                 'Field {0} must all be a non-empty string'.format(
                     field['name']))
     except Exception as e:
         print('Error occurred while validating field:', e, field)
     if error_messages:
         raise ValidationException(error_messages)
Example #7
0
    def validate_attendee_name (self, name):
        error_messages = []

        if not isinstance(name, str):
            error_messages.append('Name must be a string')

        elif len(name) > self.__attendee_name_length:
            message = 'Name must be less than {0} characters'.format(
                self.__attendee_name_length
            )
            error_messages.append(message)

        else:
            test = re.search(self.__attendee_name_pattern, name)
            if test == None or test.string != name:
                error_messages.append(
                    'Name must only contain letters, numbers, spaces, or dashes'
                )

        if error_messages:
            raise ValidationException(error_messages)
Example #8
0
    def validate_availability_request(self, req):
        error_messages = []
        try:
            # if POST or PUT validate the ID
            if (req.method == 'POST' or req.method == 'PUT'):
                av_id = req.matchdict['availability_id']
                if av_id:
                    self.validate_availability_id(av_id)
                else:
                    error_messages.append(
                        self.__empty_value_message.format('availability_id'))

            # validate attendee id
            if 'attendee_id' in req.json_body:
                self.__attendee_validator.validate_attendee_id(
                    req.json_body['attendee_id'])
            else:
                error_messages.append(
                    self.__empty_value_message.format('attendee_id'))

            # validate event ID
            if 'event_id' in req.json_body:
                self.__event_validator.validate_event_id(
                    req.json_body['event_id'])
            else:
                error_messages.append(
                    self.__empty_value_message.format('event_id'))

            # validate year
            self.validate_field(self.__year_field, req.json_body['year'])

            # validate january
            self.validate_field(self.__january_field, req.json_body['january'])

            # validate february
            self.validate_field(self.__february_field,
                                req.json_body['february'])

            # validate march
            self.validate_field(self.__march_field, req.json_body['march'])

            # validate april
            self.validate_field(self.__april_field, req.json_body['april'])

            # validate may
            self.validate_field(self.__may_field, req.json_body['may'])

            # validate june
            self.validate_field(self.__june_field, req.json_body['june'])

            # validate july
            self.validate_field(self.__july_field, req.json_body['july'])

            # validate august
            self.validate_field(self.__august_field, req.json_body['august'])

            # validate september
            self.validate_field(self.__september_field,
                                req.json_body['september'])

            # validate october
            self.validate_field(self.__october_field, req.json_body['october'])

            # validate november
            self.validate_field(self.__november_field,
                                req.json_body['november'])

            # validate december
            self.validate_field(self.__december_field,
                                req.json_body['december'])

        except ValidationException as e:
            error_messages.append(e.messages)
        except Exception as e:
            print('Exception during request validation:', e)
            raise ValidationException(
                'An error has occurred. Please try again later.')
        if error_messages:
            raise ValidationException(error_messages)

        return None
Example #9
0
 def validate_event_id(self, event_id):
     error_messages = HashUtils.validate_hash(event_id)
     if error_messages:
         raise ValidationException(error_messages)
     return None