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
This commit is contained in:
Boris Bobrov 2016-11-01 16:33:39 +03:00
parent 8a5762fbca
commit b736936e51

View File

@ -25,15 +25,16 @@ class TestLoggingNotifier(base.BaseAuditMiddlewareTest):
super(TestLoggingNotifier, self).setUp() super(TestLoggingNotifier, self).setUp()
@mock.patch('keystonemiddleware.audit._LOG.info') def test_api_request_no_messaging(self):
def test_api_request_no_messaging(self, log): app = self.create_simple_app()
self.create_simple_app().get('/foo/bar',
extra_environ=self.get_environ_header())
# Check first notification with only 'request' with mock.patch('keystonemiddleware.audit._LOG.info') as log:
call_args = log.call_args_list[0][0] app.get('/foo/bar', extra_environ=self.get_environ_header())
self.assertEqual('audit.http.request', call_args[1]['event_type'])
# Check second notification with request + response # Check first notification with only 'request'
call_args = log.call_args_list[1][0] call_args = log.call_args_list[0][0]
self.assertEqual('audit.http.response', call_args[1]['event_type']) 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'])