class LogSetupMiddlewareTest(TestCase): maxDiff = None def setUp(self, *args, **kwargs): super(LogSetupMiddlewareTest, self).setUp(*args, **kwargs) self.factory = RequestFactory() # LogSetupMiddleware only looks under this module logging_root = __name__ self.middleware = LogSetupMiddleware(root=logging_root) self.filter = RequestFilter(request=None) # Create test logger with a placeholder logger self.logger = logging.getLogger(__name__) self.logger.filters = [] self.logger.addFilter(self.filter) # Stub out original handlers self._original_handlers = logging._handlers self._original_handlerList = logging._handlerList logging._handlers = {} logging._handlerList = [] # Create test handler self.handler = logging.NullHandler() self.handler.filters = [] self.handler.addFilter(self.filter) self.logger.addHandler(self.handler) def tearDown(self, *args, **kwargs): logging._handlers = self._original_handlers logging._handlerList = self._original_handlerList def bound_logger(self, request): loggers = self.middleware.find_loggers_with_filter(RequestFilter) bound_logger, bound_handler = False, False for logger, filters in loggers.items(): if any(f.request == request for f in filters): return True return False def bound_handler(self, request): handlers = self.middleware.find_handlers_with_filter(RequestFilter) for handler, filters in handlers.items(): if any(f.request == request for f in filters): return True return False def assertBound(self, request): self.assertTrue(self.bound_logger(request)) self.assertTrue(self.bound_handler(request)) def assertNotBound(self, request): self.assertFalse(self.bound_logger(request)) self.assertFalse(self.bound_handler(request)) def test_request(self): request = self.factory.get('/') self.assertNotBound(request) response = self.middleware.process_request(request) self.assertBound(request) self.middleware.process_response(request, response) def test_response(self): request = self.factory.get('/') self.assertNotBound(request) response = self.middleware.process_request(request) self.assertBound(request) self.middleware.process_response(request, response) self.assertNotBound(request) def test_exception(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_request(request) self.assertBound(request) self.middleware.process_exception(request, Exception()) self.assertNotBound(request) def test_process_response_alone(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_response(request, HttpResponse('')) self.assertNotBound(request) def test_process_exception_alone(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_exception(request, Exception()) self.assertNotBound(request) def test_find_loggers(self): # Find a subset of loggers self.assertEqual(self.middleware.find_loggers(), {__name__: self.logger}) # Look for all loggers self.middleware.root = '' loggers = self.middleware.find_loggers() self.assertEqual(loggers[''], logging.getLogger('')) self.assertEqual(loggers[__name__], self.logger) def test_find_loggers_with_filter(self): loggers = self.middleware.find_loggers_with_filter(RequestFilter) self.assertEqual(list(loggers.keys()), [self.logger]) self.assertEqual([type(f) for f in loggers[self.logger]], [RequestFilter], loggers[self.logger]) def test_find_handlers(self): # Find our handler self.assertTrue(self.handler in [x() for x in self.middleware.find_handlers()]) def test_find_handlers_with_filter(self): handlers = self.middleware.find_handlers_with_filter(RequestFilter) self.assertTrue(self.handler in handlers)
class LogSetupMiddlewareTest(TestCase): maxDiff = None def setUp(self, *args, **kwargs): super(LogSetupMiddlewareTest, self).setUp(*args, **kwargs) self.factory = RequestFactory() # LogSetupMiddleware only looks under this module logging_root = __name__ self.middleware = LogSetupMiddleware(root=logging_root) self.filter = RequestFilter(request=None) # Create test logger with a placeholder logger self.logger = logging.getLogger(__name__) self.logger.filters = [] self.logger.addFilter(self.filter) # Stub out original handlers self._original_handlers = logging._handlers self._original_handlerList = logging._handlerList logging._handlers = {} logging._handlerList = [] # Create test handler self.handler = NullHandler() self.handler.filters = [] self.handler.addFilter(self.filter) self.logger.addHandler(self.handler) def tearDown(self, *args, **kwargs): logging._handlers = self._original_handlers logging._handlerList = self._original_handlerList def bound_logger(self, request): loggers = self.middleware.find_loggers_with_filter(RequestFilter) bound_logger, bound_handler = False, False for logger, filters in loggers.items(): if any(f.request == request for f in filters): return True return False def bound_handler(self, request): handlers = self.middleware.find_handlers_with_filter(RequestFilter) for handler, filters in handlers.items(): if any(f.request == request for f in filters): return True return False def assertBound(self, request): self.assertTrue(self.bound_logger(request)) self.assertTrue(self.bound_handler(request)) def assertNotBound(self, request): self.assertFalse(self.bound_logger(request)) self.assertFalse(self.bound_handler(request)) def test_request(self): request = self.factory.get('/') self.assertNotBound(request) response = self.middleware.process_request(request) self.assertBound(request) self.middleware.process_response(request, response) def test_response(self): request = self.factory.get('/') self.assertNotBound(request) response = self.middleware.process_request(request) self.assertBound(request) self.middleware.process_response(request, response) self.assertNotBound(request) def test_exception(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_request(request) self.assertBound(request) self.middleware.process_exception(request, Exception()) self.assertNotBound(request) def test_process_response_alone(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_response(request, HttpResponse('')) self.assertNotBound(request) def test_process_exception_alone(self): request = self.factory.get('/') self.assertNotBound(request) self.middleware.process_exception(request, Exception()) self.assertNotBound(request) def test_find_loggers(self): # Find a subset of loggers self.assertEqual(self.middleware.find_loggers(), {__name__: self.logger}) # Look for all loggers self.middleware.root = '' loggers = self.middleware.find_loggers() self.assertEqual(loggers[''], logging.getLogger('')) self.assertEqual(loggers[__name__], self.logger) def test_find_loggers_with_filter(self): loggers = self.middleware.find_loggers_with_filter(RequestFilter) self.assertEqual(loggers.keys(), [self.logger]) self.assertEqual([type(f) for f in loggers[self.logger]], [RequestFilter], loggers[self.logger]) def test_find_handlers(self): # Find our handler self.assertTrue(self.handler in self.middleware.find_handlers()) def test_find_handlers_with_filter(self): handlers = self.middleware.find_handlers_with_filter(RequestFilter) self.assertTrue(self.handler in handlers)