Exemplo n.º 1
0
    def test_request_to_dict(self):
        request_factory = RequestFactory()
        request = request_factory.get('/test', data={'foo': 'bar'})

        request_dict = utils.request_to_dict(request)

        self.assertEqual(request_dict['path'], '/test')
        self.assertEqual(len(request_dict['GET']), len(request.GET))
        self.assertEqual(len(request_dict['POST']), len(request.POST))
        self.assertEqual(len(request_dict['COOKIES']), len(request.COOKIES))
        self.assertEqual(len(request_dict['METADATA']), len(request.META))
        self.assertIsNone(request_dict['RAW_METADATA'])
Exemplo n.º 2
0
    def test_request_to_dict_fail(self):
        effects = ('get', 'post', 'cookies', ValueError)
        with patch('audit_tools.audit.utils.fix_dict', side_effect=effects):
            request_factory = RequestFactory()
            request = request_factory.get('/test', data={'foo': 'bar'})

            request_dict = utils.request_to_dict(request)

            self.assertEqual(request_dict['path'], '/test')
            self.assertEqual(request_dict['GET'], 'get')
            self.assertEqual(request_dict['POST'], 'post')
            self.assertEqual(request_dict['COOKIES'], 'cookies')
            self.assertIsNone(request_dict['METADATA'])
            self.assertEqual(len(request_dict['RAW_METADATA']), len(str(filter_request_meta(request.META))))
Exemplo n.º 3
0
    def process_view(self, request, view_func, view_args, view_kwargs):
        """Preprocess request.

        :param request: Http request.
        :type request: django.http.HttpRequest
        :param view_func: View.
        :type view_func: callable
        :param view_args: View arguments.
        :type view_args: list
        :param view_kwargs: View keyword arguments.
        :type view_kwargs: dict
        :return: None
        """
        self._disabled = getattr(view_func, 'disable_audit', False)

        if not self._disabled:
            try:
                view_data = self._extract_view_data(view_func, view_args, view_kwargs)

                self._blacklisted = self._check_blacklist(request.path, view_data['app'])

                msg = "<Process View> View:%s %s", view_data['full_name'], 'BlackList' if self._blacklisted else ''
                logger.debug(msg)

                if not self._blacklisted:
                    self._view = view_data
                    user = self._extract_user_data(request)

                    # Time
                    self._time = {
                        'request': datetime.datetime.now(),
                        'response': None
                    }

                    # Interlink ID
                    interlink_id = get_access_interlink_id()

                    # Create access
                    access = {
                        'interlink_id': interlink_id,
                        'request': request_to_dict(request),
                        'response': None,
                        'time': self._time,
                        'view': self._view,
                        'user': user,
                        'custom': None,
                    }

                    # Extract process data
                    self._process = extract_process_data()

                    # Save Access
                    self._access = create_access(access, self._process)
                    cache.set_last_access(self._access)

                    if not settings.RUN_ASYNC:
                        save_access(self._access)
                    else:
                        save_access.apply_async((self._access, ))
                    logger.info("<Process View> View:%s", self._view['full_name'])

                    logger.debug("View:%s", str(self._view))
            except Exception:
                logger.exception("<Process View>")

        return None