Пример #1
0
    def test_should_fail_for_invalid_content(self):
        r_app_type = '%#$@!'
        with self.assertRaises(exceptions.HTTPUnprocessableEntity) as context:
            validation.validate_application_type(r_app_type)

        msg = ('Application type %s may only contain: "a-z A-Z 0-9 _ - ."' %
               r_app_type)

        self.assertEqual(context.exception.description, msg)
Пример #2
0
    def test_should_fail_for_invalid_length(self):
        r_app_type = testing.rand_string(300, 600)
        with self.assertRaises(exceptions.HTTPUnprocessableEntity) as context:
            validation.validate_application_type(r_app_type)

        length = validation.APPLICATION_TYPE_CONSTRAINTS['MAX_LENGTH']
        msg = ('Application type {type} must be '
               '{length} characters or less'.format(type=r_app_type,
                                                    length=length))

        self.assertEqual(context.exception.description, msg)
Пример #3
0
    def new_log(self,
                application_type,
                dimensions,
                payload,
                content_type='application/json',
                validate=True):
        """Creates new log object.

        :param str application_type: origin of the log
        :param dict dimensions: dictionary of dimensions (any data sent to api)
        :param stream payload: stream to read log entry from
        :param str content_type: actual content type used to send data to
                                 server
        :param bool validate: by default True, marks if log should be validated
        :return: log object
        :rtype: dict

        :keyword: log_object
        """

        payload = rest_utils.read_body(payload, content_type)
        if not payload:
            return None

        # normalize_yet_again
        application_type = parse_application_type(application_type)
        dimensions = parse_dimensions(dimensions)

        if validate:
            self._log.debug('Validation enabled, proceeding with validation')
            validation.validate_application_type(application_type)
            validation.validate_dimensions(dimensions)

        self._log.debug(
            'application_type=%s,dimensions=%s' % (
                application_type, dimensions)
        )

        log_object = {}
        if content_type == 'application/json':
            log_object.update(payload)
        else:
            log_object.update({'message': payload})

        validation.validate_log_message(log_object)

        dimensions['component'] = application_type
        log_object.update({'dimensions': dimensions})

        return log_object
Пример #4
0
 def test_should_pass_for_ok_app_type(self):
     r_app_type = 'monasca'
     validation.validate_application_type(r_app_type)
Пример #5
0
 def test_should_pass_for_empty_app_type(self):
     validation.validate_application_type()
     validation.validate_application_type('')