def test_api_request_failure(self): middleware = audit.AuditMiddleware( FakeFailingApp(), audit_map_file='etc/pycadf/api_audit_map.conf', service_name='pycadf') self.ENV_HEADERS['REQUEST_METHOD'] = 'GET' req = webob.Request.blank('/foo/bar', environ=self.ENV_HEADERS) with mock.patch('oslo.messaging.Notifier.info') as notify: try: middleware(req) self.fail("Application exception has not been re-raised") except Exception: pass # Check first notification with only 'request' call_args = notify.call_args_list[0][0] self.assertEqual(call_args[1], 'http.request') self.assertEqual(set(call_args[2].keys()), set(['request'])) request = call_args[2]['request'] self.assertEqual(request['PATH_INFO'], '/foo/bar') self.assertEqual(request['REQUEST_METHOD'], 'GET') self.assertIn('CADF_EVENT', request) self.assertEqual(request['CADF_EVENT']['outcome'], 'pending') # Check second notification with request + response call_args = notify.call_args_list[1][0] self.assertEqual(call_args[1], 'http.response') self.assertEqual(set(call_args[2].keys()), set(['request', 'exception'])) request = call_args[2]['request'] self.assertEqual(request['PATH_INFO'], '/foo/bar') self.assertEqual(request['REQUEST_METHOD'], 'GET') self.assertIn('CADF_EVENT', request) self.assertEqual(request['CADF_EVENT']['outcome'], 'unknown')
def test_process_response_fail(self): def func_error(self, req, res): raise Exception('error') self.stubs.Set(cadf_api.OpenStackAuditApi, 'mod_audit_event', func_error) middleware = audit.AuditMiddleware( FakeApp(), audit_map_file='etc/pycadf/nova_api_audit_map.conf', service_name='pycadf') req = webob.Request.blank('/foo/bar', environ={'REQUEST_METHOD': 'GET'}) middleware.process_response(req, webob.response.Response())