def test_middleware_method_verbose(self, internal): sv = inspect.StringVisitor(True, internal) mm = inspect.inspect_middlewares( make_app()).middleware_classes[0].methods[0] assert sv.process(mm) == '{0.function_name} ({0.source_info})'.format( mm)
def test_middleware_tree(self, asgi): mi = inspect.inspect_middlewares( make_app_async() if asgi else make_app()) def test(tl, names, cls): for (t, n, c) in zip(tl, names, cls): assert isinstance(t, inspect.MiddlewareTreeItemInfo) assert t.name == n assert t.class_name == c assert isinstance(mi.middleware_tree, inspect.MiddlewareTreeInfo) test( mi.middleware_tree.request, ['process_request'] * 2, [n + 'Async' if asgi else n for n in ['MyMiddleware', 'OtherMiddleware']], ) test( mi.middleware_tree.resource, ['process_resource'], ['MyMiddlewareAsync' if asgi else 'MyMiddleware'], ) test( mi.middleware_tree.response, [ 'process_response', 'process_response', 'process_response_async' if asgi else 'process_response', ], [ 'OtherMiddlewareAsync' if asgi else 'OtherMiddleware', 'MyMiddlewareAsync' if asgi else 'MyMiddleware', 'CORSMiddleware', ], )
def test_middleware_verbose(self, internal): sv = inspect.StringVisitor(True, internal) m = inspect.inspect_middlewares(make_app()) mt = sv.process(m.middleware_tree) sv.indent += 4 mc = '\n'.join(sv.process(cls) for cls in m.middleware_classes) exp = '{}\n- Middlewares classes:\n{}'.format(mt, mc) assert inspect.StringVisitor(True).process(m) == exp
def test_middleware_class_verbose(self, internal): sv = inspect.StringVisitor(True, internal) mc = inspect.inspect_middlewares(make_app()).middleware_classes[0] mml = [' ├── {}'.format(sv.process(m)) for m in mc.methods][:-1] mml += [' └── {}'.format(sv.process(m)) for m in mc.methods][-1:] exp = '↣ {0.name} ({0.source_info}):\n{1}'.format(mc, '\n'.join(mml)) assert sv.process(mc) == exp
def test_middleware_tree_response_only(self, internal): sv = inspect.StringVisitor(False, internal) mt = inspect.inspect_middlewares(make_app()).middleware_tree mt.request.clear() mt.resource.clear() lines = [] space = ' ' * len(mt.response) lines.append('') lines.append(space + ' ├── Process route responder') lines.append('') for r in mt.response: space = space[:-2] lines.append(space + sv.process(r)) assert sv.process(mt) == '\n'.join(lines)
def test_middleware_tree_no_response(self, internal): sv = inspect.StringVisitor(False, internal) mt = inspect.inspect_middlewares(make_app()).middleware_tree mt.response.clear() lines = [] space = '' for r in mt.request: lines.append(space + sv.process(r)) space += ' ' lines.append('') for r in mt.resource: lines.append(space + sv.process(r)) space += ' ' lines.append('') lines.append(space + ' ├── Process route responder') assert sv.process(mt) == '\n'.join(lines)
def test_middleware(self, asgi): mi = inspect.inspect_middlewares( make_app_async() if asgi else make_app()) def test(m, cn, ml, inte): assert isinstance(m, inspect.MiddlewareClassInfo) assert m.name == cn if inte: assert '_inspect_fixture.py' not in m.source_info else: assert '_inspect_fixture.py' in m.source_info for mm in m.methods: assert isinstance(mm, inspect.MiddlewareMethodInfo) if inte: assert '_inspect_fixture.py' not in mm.source_info else: assert '_inspect_fixture.py' in mm.source_info assert mm.function_name in ml test( mi.middleware_classes[0], 'CORSMiddleware', ['process_response_async'] if asgi else ['process_response'], True, ) test( mi.middleware_classes[1], 'MyMiddlewareAsync' if asgi else 'MyMiddleware', ['process_request', 'process_resource', 'process_response'], False, ) test( mi.middleware_classes[2], 'OtherMiddlewareAsync' if asgi else 'OtherMiddleware', ['process_request', 'process_resource', 'process_response'], False, )
def test_middleware(self, internal): sv = inspect.StringVisitor(False, internal) m = inspect.inspect_middlewares(make_app()) assert sv.process(m) == sv.process(m.middleware_tree)
def test_middleware_tree_item(self, verbose, internal): sv = inspect.StringVisitor(verbose, internal) mt = inspect.inspect_middlewares(make_app()).middleware_tree for r, s in ((mt.request[0], '→'), (mt.resource[0], '↣'), (mt.response[0], '↢')): assert sv.process(r) == '{0} {1.class_name}.{1.name}'.format(s, r)
def test_middleware_class_no_methods(self, internal): sv = inspect.StringVisitor(False, internal) mc = inspect.inspect_middlewares(make_app()).middleware_classes[0] mc.methods.clear() exp = '↣ {0.name}'.format(mc) assert sv.process(mc) == exp
def test_middleware_method(self, internal): sv = inspect.StringVisitor(False, internal) mm = inspect.inspect_middlewares( make_app()).middleware_classes[0].methods[0] assert sv.process(mm) == '{0.function_name}'.format(mm)