Esempio n. 1
0
    def test_should_fail_read_text_for_application_json(self, payload):
        with self.assertRaises(falcon.HTTPBadRequest) as context:
            raw_msg = 'Hello World'
            payload.read.return_value = raw_msg
            ru.read_body(payload, 'application/json')

        self.assertEqual(context.exception.title,
                         'Failed to read body as json')
Esempio n. 2
0
    def test_should_read_text_for_plain_text(self, payload):
        raw_msg = 'Hello World'
        msg = u''.join(raw_msg)

        payload.read.return_value = raw_msg

        self.assertEqual(msg, ru.read_body(payload, 'text/plain'))
Esempio n. 3
0
    def test_should_read_json_for_application_json(self, payload):
        raw_msg = u'{"path":"/var/log/messages","message":"This is message"}'
        json_msg = simplejson.loads(raw_msg, encoding='utf-8')

        payload.read.return_value = raw_msg

        self.assertEqual(json_msg, ru.read_body(payload, 'application/json'))
Esempio n. 4
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')
            Validations.validate_application_type(application_type)
            Validations.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})

        log_object.update({
            'application_type': application_type,
            'dimensions': dimensions
        })

        return log_object