def run_handler(self, headers): self.response = wsgi_apps._Response(None, False) self.response.headers.update(headers) kernels.run( self.handler(None, wsgi_apps.Response(self.response)), timeout=0.01, )
def run_handler(self, method): self.set_request(REQUEST_METHOD=method) self.response = wsgi_apps._Response(None, False) self.calls.clear() kernels.run( self.handler(self.request, wsgi_apps.Response(self.response)), timeout=0.01, )
def run_handler(self, path): self.set_request(PATH_INFO=path) self.response = wsgi_apps._Response(None, False) self.calls.clear() kernels.run( self.handler(self.request, wsgi_apps.Response(self.response)), timeout=0.01, )
def run_handler(self): self.response = wsgi_apps._Response(unittest.mock.Mock(), True) kernels.run( self.handler(self.request, wsgi_apps.Response(self.response)), timeout=0.01, ) self.response.close() if self.response.file is not None: self.response.file.close()
def test_router(self): self.handler = composers.PathPatternRouter([ (r'/a/p', self.make_noop_handler('/a/p')), (r'/a/q', self.make_noop_handler('/a/q')), (r'/a', self.make_noop_handler('/a')), ]) self.set_request() self.assertEqual(self.request.context.asdict(), {}) self.assertIsNone(composers.group(self.request)) self.assertIsNone(self.request.context.get(composers.PATH_MATCH)) self.assertEqual(composers.get_path_str(self.request), '/foo/bar') self.run_handler('/a/p/x') self.assertEqual(self.calls, ['/a/p']) self.assert_context_keys([composers.PATH_MATCH]) self.assertEqual(composers.get_path_str(self.request), '/x') self.assert_response(consts.Statuses.OK, {}) self.run_handler('/a/q') self.assertEqual(self.calls, ['/a/q']) self.assert_context_keys([composers.PATH_MATCH]) self.assertEqual(composers.get_path_str(self.request), '') self.assert_response(consts.Statuses.OK, {}) self.run_handler('/a/q/') self.assertEqual(self.calls, ['/a/q']) self.assert_context_keys([composers.PATH_MATCH]) self.assertEqual(composers.get_path_str(self.request), '/') self.assert_response(consts.Statuses.OK, {}) self.run_handler('/a/r/foo/bar') self.assertEqual(self.calls, ['/a']) self.assert_context_keys([composers.PATH_MATCH]) self.assertEqual(composers.get_path_str(self.request), '/r/foo/bar') self.assert_response(consts.Statuses.OK, {}) with self.assertRaisesRegex( wsgi_apps.HttpError, r'path does not match any pattern: /foo/bar', ) as cm: self.run_handler('/foo/bar') self.assertEqual(self.calls, []) self.assert_http_error(cm.exception, consts.Statuses.NOT_FOUND, {}) # You cannot override a PATH_MATCH entry in context. self.run_handler('/a/p/x') self.assertIn(composers.PATH_MATCH, self.request.context.asdict()) with self.assertRaisesRegex(AssertionError, r'expect.*not in'): kernels.run( self.handler(self.request, wsgi_apps.Response(self.response)), timeout=0.01, )
def make_response(etag): response = wsgi_apps.Response(wsgi_apps._Response(None, False)) response.headers[consts.HEADER_ETAG] = etag return response