python类Route()的实例源码

handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_handle_exception_with_error(self):
        class HomeHandler(webapp2.RequestHandler):
            def get(self, **kwargs):
                raise TypeError()

        def handle_exception(request, response, exception):
            raise ValueError()

        app = webapp2.WSGIApplication([
            webapp2.Route('/', HomeHandler, name='home'),
        ], debug=False)
        app.error_handlers[500] = handle_exception

        req = webapp2.Request.blank('/')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 500)
handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_custom_method(self):
        class MyHandler(webapp2.RequestHandler):
            def my_method(self):
                self.response.out.write('Hello, custom method world!')

            def my_other_method(self):
                self.response.out.write('Hello again, custom method world!')

        app = webapp2.WSGIApplication([
            webapp2.Route('/', MyHandler, handler_method='my_method'),
            webapp2.Route('/other', MyHandler,
                          handler_method='my_other_method'),
        ])

        req = webapp2.Request.blank('/')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 200)
        self.assertEqual(rsp.body, b'Hello, custom method world!')

        req = webapp2.Request.blank('/other')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 200)
        self.assertEqual(rsp.body, b'Hello again, custom method world!')
handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def test_custom_method_with_string(self):
        handler = 'tests.resources.handlers.CustomMethodHandler:custom_method'

        app = webapp2.WSGIApplication([
            webapp2.Route('/', handler=handler),
            webapp2.Route('/bleh', handler=handler),
        ])

        req = webapp2.Request.blank('/')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 200)
        self.assertEqual(rsp.body, b'I am a custom method.')

        req = webapp2.Request.blank('/bleh')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 200)
        self.assertEqual(rsp.body, b'I am a custom method.')

        self.assertRaises(
            ValueError, webapp2.Route, '/',
            handler=handler,
            handler_method='custom_method'
        )
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def test_repetition_operator(self):
        route = Route(r'/<:\d>', None)
        self.assertEqual(
            route.match(Request.blank('/1')),
            (route, ('1',), {})
        )
        self.assertEqual(
            route.match(Request.blank('/2')),
            (route, ('2',), {})
        )

        route = Route(r'/<:\d{2,3}>', None)
        self.assertEqual(
            route.match(Request.blank('/11')),
            (route, ('11',), {})
        )
        self.assertEqual(
            route.match(Request.blank('/111')),
            (route, ('111',), {})
        )
        self.assertEqual(route.match(Request.blank('/1111')), None)
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_unnamed_variable(self):
        route = Route(r'/<:\d{4}>', None)
        self.assertEqual(
            route.match(Request.blank('/2010')),
            (route, ('2010',), {})
        )
        self.assertEqual(route.match(Request.blank('/aaaa')), None)

        route = Route(r'/<:\d{2}>.<:\d{2}>', None)
        self.assertEqual(
            route.match(Request.blank('/98.99')),
            (route, ('98', '99'), {})
        )
        self.assertEqual(route.match(Request.blank('/aa.aa')), None)

        route = Route(r'/<:\d{2}>.<:\d{2}>/<foo>', None)
        self.assertEqual(
            route.match(Request.blank('/98.99/test')),
            (route, ('98', '99'), {'foo': 'test'})
        )
        self.assertEqual(route.match(Request.blank('/aa.aa/test')), None)
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_positions(self):
        template = '/<:\d+>' * 98
        args = tuple(str(i) for i in range(98))
        url_res = '/' + '/'.join(args)

        route = Route(template, None)
        self.assertEqual(
            route.match(Request.blank(url_res)),
            (route, args, {})
        )
        url = route.build(Request.blank('/'), args, {})
        self.assertEqual(url_res, url)

        args = [str(i) for i in range(1000)]
        random.shuffle(args)
        args = tuple(args[:98])
        url_res = '/' + '/'.join(args)
        self.assertEqual(
            route.match(Request.blank(url_res)),
            (route, args, {})
        )
        url = route.build(Request.blank('/'), args, {})
        self.assertEqual(url_res, url)
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_router_repr(self):
        router = Router(None)
        router.add(Route(r"/hello", None, name="hello", build_only=True))
        router.add(Route(r"/world", None))

        self.assertEqual(
            router.__repr__(),
            """<Router([<Route('/world', None, """
            """name=None, """
            """defaults={}, """
            """build_only=False)>, """
            """<Route('/hello', None, """
            """name='hello', """
            """defaults={}, """
            """build_only=True)>])>"""
        )
main.py 文件源码 项目:professional-services 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def __init__(self):
        """Define routes to handlers."""
        super(DnsSyncApplication, self).__init__([
            ('/push_notification', ComputeEngineActivityPush),
            ('/start_audit_log_loop', audit_log.StartAuditLogLoop),
            ('/logout', auth.Logout),
            ('/auth', auth.Oauth2Callback),
            ('/stop_audit_log_loop', audit_log.StopAuditLogLoop),
            ('/get_zone_config', zones.GetZoneConfig),
            ('/get_projects', zones.GetProjects),
            ('/get_project_zones', zones.GetProjectZones),
            ('/set_zone_config', zones.SetZoneConfig),
            ('/get_audit_log_state', audit_log.GetAuditLogState),
            ('/static/(.+)', AdminStaticFileHandler),
            ('/sync_projects', SyncProjectsWithDns),
            webapp2.Route(
                '/',
                webapp2.RedirectHandler,
                defaults={'_uri': '/static/index.html'}),
            webapp2.Route(
                '/index.html',
                webapp2.RedirectHandler,
                defaults={'_uri': '/static/index.html'}),
            webapp2.Route(
                '/favicon.ico',
                webapp2.RedirectHandler,
                defaults={'_uri': '/static/images/favicon.ico'}),
        ])
extras_routes_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_with_variables_name_and_handler(self):
        router = webapp2.Router([
            PathPrefixRoute('/user/<username:\w+>', [
                HandlerPrefixRoute('apps.users.', [
                    NamePrefixRoute('user-', [
                        webapp2.Route('/', 'UserOverviewHandler', 'overview'),
                        webapp2.Route(
                            '/profile', 'UserProfileHandler', 'profile'),
                        webapp2.Route(
                            '/projects', 'UserProjectsHandler', 'projects'),
                    ]),
                ]),
            ])
        ])

        path = '/user/calvin/'
        match = ((), {'username': 'calvin'})
        self.assertEqual(router.match(webapp2.Request.blank(path))[1:], match)
        self.assertEqual(
            router.build(webapp2.Request.blank('/'),
                         'user-overview', match[0], match[1]),
            path
        )

        path = '/user/calvin/profile'
        match = ((), {'username': 'calvin'})
        self.assertEqual(router.match(webapp2.Request.blank(path))[1:], match)
        self.assertEqual(
            router.build(webapp2.Request.blank('/'),
                         'user-profile', match[0], match[1]),
            path
        )

        path = '/user/calvin/projects'
        match = ((), {'username': 'calvin'})
        self.assertEqual(router.match(webapp2.Request.blank(path))[1:], match)
        self.assertEqual(
            router.build(webapp2.Request.blank('/'),
                         'user-projects', match[0], match[1]),
            path
        )
extras_routes_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_simple(self):
        router = webapp2.Router([
            DomainRoute('<subdomain>.<:.*>', [
                webapp2.Route('/foo', 'FooHandler', 'subdomain-thingie'),
            ])
        ])

        self.assertRaises(
            webapp2.exc.HTTPNotFound,
            router.match, webapp2.Request.blank('/foo'))

        match = router.match(
            webapp2.Request.blank(
                'http://my-subdomain.app-id.appspot.com/foo'))
        self.assertEqual(match[1:], ((), {'subdomain': 'my-subdomain'}))

        match = router.match(
            webapp2.Request.blank(
                'http://another-subdomain.app-id.appspot.com/foo'))
        self.assertEqual(match[1:], ((), {'subdomain': 'another-subdomain'}))

        url = router.build(
            webapp2.Request.blank('/'),
            'subdomain-thingie', (),
            {'_netloc': 'another-subdomain.app-id.appspot.com'}
        )
        self.assertEqual(
            url,
            'http://another-subdomain.app-id.appspot.com/foo'
        )
handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def test_debug_mode(self):
        app = webapp2.WSGIApplication([
            webapp2.Route('/broken', BrokenHandler),
        ], debug=True)
        req = webapp2.Request.blank('/broken')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 500)
handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_factory_2(self):
        """Very crazy stuff. Please ignore it."""
        class MyHandler(object):
            def __init__(self, request, response):
                self.request = request
                self.response = response

            def __new__(cls, *args, **kwargs):
                return cls.create_instance(*args, **kwargs)()

            @classmethod
            def create_instance(cls, *args, **kwargs):
                obj = object.__new__(cls)
                if isinstance(obj, cls):
                    obj.__init__(*args, **kwargs)

                return obj

            def __call__(self):
                return self

            def dispatch(self):
                self.response.write('hello')

        app = webapp2.WSGIApplication([
            webapp2.Route('/', handler=MyHandler),
        ])

        req = webapp2.Request.blank('/')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 200)
        self.assertEqual(rsp.body, b'hello')
handler_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def test_encoding(self):
        class PostHandler(webapp2.RequestHandler):
            def post(self):
                foo = self.request.POST['foo']
                if not foo:
                    foo = 'empty'

                self.response.write(foo)

        app = webapp2.WSGIApplication([
            webapp2.Route('/', PostHandler),
        ], debug=True)

        # foo with umlauts in the vowels.
        value = b'f\xc3\xb6\xc3\xb6'

        rsp = app.get_response(
            '/',
            POST={'foo': value},
            headers=[('Content-Type',
                      'application/x-www-form-urlencoded; charset=utf-8')]
        )
        self.assertEqual(rsp.unicode_body, u'föö')
        self.assertEqual(rsp.body, value)

        rsp = app.get_response(
            '/',
            POST={'foo': value},
            headers=[('Content-Type', 'application/x-www-form-urlencoded')]
        )
        self.assertEqual(rsp.unicode_body, u'föö')
        self.assertEqual(rsp.body, value)
response_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_return_is_not_wsgi_app(self):
        class HomeHandler(webapp2.RequestHandler):
            def get(self, **kwargs):
                return ''

        app = webapp2.WSGIApplication([
            webapp2.Route('/', HomeHandler, name='home'),
        ], debug=False)

        req = webapp2.Request.blank('/')
        rsp = req.get_response(app)
        self.assertEqual(rsp.status_int, 500)
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_no_variable(self):
        route = Route(r'/hello', None)
        route, args, kwargs = route.match(Request.blank('/hello'))
        self.assertEqual(kwargs, {})
        url = route.build(Request.blank('/'), (), {})
        self.assertEqual(url, '/hello')

        route = Route(r'/hello/world/', None)
        route, args, kwargs = route.match(Request.blank('/hello/world/'))
        self.assertEqual(kwargs, {})
        url = route.build(Request.blank('/'), (), {})
        self.assertEqual(url, '/hello/world/')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_simple_variable(self):
        route = Route(r'/<foo>', None)
        self.assertEqual(
            route.match(Request.blank('/bar')),
            (route, (), {'foo': 'bar'})
        )
        url = route.build(Request.blank('/'), (), dict(foo='baz'))
        self.assertEqual(url, '/baz')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_expr_variable2(self):
        route = Route(r'/<year:\d{4}>/foo/', None)
        url = route.build(Request.blank('/'), (), dict(year='2010'))
        self.assertEqual(url, '/2010/foo/')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_missing_argument(self):
        route = Route(r'/<:\d{4}>', None)
        self.assertRaises(KeyError, route.build, Request.blank('/'), (), {})

        route = Route(r'/<:\d{4}>/<:\d{2}>', None)
        self.assertRaises(
            KeyError, route.build, Request.blank('/'), (2010,), {})
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_invalid_argument(self):
        route = Route(r'/<:\d{4}>', None)
        self.assertRaises(
            ValueError, route.build, Request.blank('/'), ('20100',), {})
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_build_invalid_argument2(self):
        route = Route(r'/<:\d{4}>', None)
        self.assertRaises(
            ValueError, route.build, Request.blank('/'), ('201a',), {})
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_missing_keyword(self):
        route = Route(r'/<year:\d{4}>', None)
        self.assertRaises(KeyError, route.build, Request.blank('/'), (), {})
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_build_invalid_keyword(self):
        route = Route(r'/<year:\d{4}>', None)
        self.assertRaises(
            ValueError, route.build,
            Request.blank('/'), (), dict(year='20100')
        )
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 17 收藏 0 点赞 0 评论 0
def test_build_invalid_keyword2(self):
        route = Route(r'/<year:\d{4}>', None)
        self.assertRaises(
            ValueError, route.build, Request.blank('/'), (),
            dict(year='201a'))
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_with_unnamed_variable(self):
        route = Route(r'/<:\d{4}>/<month:\d{2}>', None)

        url = route.build(Request.blank('/'), (2010,), dict(month=10))
        self.assertEqual(url, '/2010/10')

        url = route.build(Request.blank('/'), ('1999',), dict(month='07'))
        self.assertEqual(url, '/1999/07')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_default_keyword(self):
        route = Route(r'/<year:\d{4}>/<month:\d{2}>', None,
                      defaults={'month': 10})
        r = Request.blank('/')
        url = route.build(r, (), dict(year='2010'))
        self.assertEqual(url, '/2010/10')

        route = Route(r'/<year:\d{4}>/<month:\d{2}>', None,
                      defaults={'year': 1900})
        url = route.build(Request.blank('/'), (), dict(month='07'))
        self.assertEqual(url, '/1900/07')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_extra_keyword(self):
        route = Route(r'/<year:\d{4}>', None)
        r = Request.blank('/')
        url = route.build(r, (), dict(year='2010', foo='bar'))
        self.assertEqual(url, '/2010?foo=bar')
        # Arguments are sorted.
        url = route.build(
            Request.blank('/'), (),
            dict(year='2010', foo='bar', baz='ding')
        )
        self.assertEqual(url, '/2010?baz=ding&foo=bar')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 19 收藏 0 点赞 0 评论 0
def test_build_int_keyword(self):
        route = Route(r'/<year:\d{4}>', None)
        url = route.build(Request.blank('/'), (), dict(year=2010))
        self.assertEqual(url, '/2010')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_build_int_variable(self):
        route = Route(r'/<:\d{4}>', None)
        url = route.build(Request.blank('/'), (2010,), {})
        self.assertEqual(url, '/2010')
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def test_router_build_error(self):
        router = Router(None)
        router.add(Route('/<year:\d{4}>', None, name='year-page'))

        url = router.build(
            Request.blank('/'), 'year-page', (), dict(year='2010'))

        self.assertEqual(url, '/2010')

        self.assertRaises(
            KeyError,
            router.build,
            Request.blank('/'), 'i-dont-exist', (), dict(year='2010')
        )
routing_test.py 文件源码 项目:webapp2 作者: GoogleCloudPlatform 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def test_reverse_template(self):
        route = Route('/foo', None)
        route.regex
        # Access route.regex just to set the lazy properties.
        self.assertEqual(route.reverse_template, '/foo')

        route = Route('/foo/<bar>', None)
        route.regex
        # Access route.regex just to set the lazy properties.
        self.assertEqual(route.reverse_template, '/foo/%(bar)s')

        route = Route('/foo/<bar>/<baz:\d>', None)
        route.regex
        # Access route.regex just to set the lazy properties.
        self.assertEqual(route.reverse_template, '/foo/%(bar)s/%(baz)s')


问题


面经


文章

微信
公众号

扫码关注公众号