Example #1
0
    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)
Example #2
0
    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',
            ],
        )
Example #3
0
    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
Example #4
0
    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
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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,
        )
Example #8
0
    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)
Example #9
0
 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)
Example #10
0
 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
Example #11
0
    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)