From b736936e51df4043c5fddc094355584de831185c Mon Sep 17 00:00:00 2001 From: Boris Bobrov Date: Tue, 1 Nov 2016 16:33:39 +0300 Subject: [PATCH] Mock log only after app creation The unit test that is getting fixed fails with error: AttributeError: None does not have the attribute 'info' It happens because _LOG.info is being patched at the moment when _LOG is None. For a reason, this doesn't happen always. For example, the problem was gone after a recheck in https://review.openstack.org/#/c/391130/. Patch log only after app creation. This seems to be a common pattern across all other tests involving mock, for example, in test_conf_middleware_log_and_default_as_messaging. Change-Id: Ia48520d6835c5712d77e182cffbf50cc6b56b9ce --- .../tests/unit/audit/test_logging_notifier.py | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/keystonemiddleware/tests/unit/audit/test_logging_notifier.py b/keystonemiddleware/tests/unit/audit/test_logging_notifier.py index f0174ad3..08018616 100644 --- a/keystonemiddleware/tests/unit/audit/test_logging_notifier.py +++ b/keystonemiddleware/tests/unit/audit/test_logging_notifier.py @@ -25,15 +25,16 @@ class TestLoggingNotifier(base.BaseAuditMiddlewareTest): super(TestLoggingNotifier, self).setUp() - @mock.patch('keystonemiddleware.audit._LOG.info') - def test_api_request_no_messaging(self, log): - self.create_simple_app().get('/foo/bar', - extra_environ=self.get_environ_header()) + def test_api_request_no_messaging(self): + app = self.create_simple_app() - # Check first notification with only 'request' - call_args = log.call_args_list[0][0] - self.assertEqual('audit.http.request', call_args[1]['event_type']) + with mock.patch('keystonemiddleware.audit._LOG.info') as log: + app.get('/foo/bar', extra_environ=self.get_environ_header()) - # Check second notification with request + response - call_args = log.call_args_list[1][0] - self.assertEqual('audit.http.response', call_args[1]['event_type']) + # Check first notification with only 'request' + call_args = log.call_args_list[0][0] + self.assertEqual('audit.http.request', call_args[1]['event_type']) + + # Check second notification with request + response + call_args = log.call_args_list[1][0] + self.assertEqual('audit.http.response', call_args[1]['event_type'])