示例#1
0
    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')
示例#2
0
 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())