Ejemplo n.º 1
0
    def test_simple_match(self):
        '''Check simple case of match'''

        app = web.match('/first', 'first') | (lambda env, data, nx: Response())

        self.assertEqual(web.ask(app, '/first').status_int, 200)
        self.assertEqual(web.ask(app, '/second'), None)
Ejemplo n.º 2
0
 def test_host10(self):
     app = web.cases ( 
             web.subdomain(u'bla') 
                 | web.match('/', 'bla') 
                 | (lambda e,d,n: Response(body='bla') ),
             web.subdomain(u'localhost')
                 | web.match('/', 'localhost')
                 | (lambda e,d,n: Response(body='localhost'))
             )
     self.assertEqual(web.ask(app, 'http://bla/').body, 'bla')
     self.assertEqual(web.ask(app, '/').body, 'localhost')
Ejemplo n.º 3
0
    def test_not_found(self):
        '''Check int converter with handler which accepts params'''

        def handler(env, data, nx):
            return Response()

        app = web.cases(
            web.match('/first', 'first') | handler,
            web.match('/second/<int:id>', 'second') | handler)

        self.assert_(web.ask(app, '/second/42/') is None)
        self.assert_(web.ask(app, '/second/42s') is None)
Ejemplo n.º 4
0
    def test_int_converter(self):
        '''Check int converter'''

        def handler(env, data, nx):
            self.assertEqual(data.id, 42)
            return Response()

        app = web.cases(
            web.match('/first', 'first') | handler,
            web.match('/second/<int:id>', 'second') | handler)

        web.ask(app, '/second/42')
Ejemplo n.º 5
0
    def test_multiple_int_convs(self):
        '''Check multiple int converters'''

        def handler(env, data, nx):
            self.assertEqual(data.id, 42)
            self.assertEqual(data.param, 23)
            return Response()

        app = web.cases(
            web.match('/first', 'first') | handler,
            web.match('/second/<int:id>/<int:param>', 'second') | handler)

        web.ask(app, '/second/42/23')
Ejemplo n.º 6
0
 def test_unicode(self):
     '''IRI tests'''
     app = web.subdomain(u'рф') | web.subdomain(u'сайт') | web.match('/', 'site') | (lambda e,d,n: Response() )
     encoded = 'http://xn--80aswg.xn--p1ai/'
     self.assertEqual(web.Reverse.from_handler(app)('site').get_readable(), u'http://сайт.рф/')
     self.assertEqual(web.Reverse.from_handler(app)('site'), encoded)
     self.assertNotEqual(web.ask(app, encoded), None)
Ejemplo n.º 7
0
    def test_unicode(self):
        '''Routing rules with unicode'''
        # XXX move to urltemplate and reverse tests?
        app = web.cases(
            web.prefix(u'/հայերեն') | web.cases(
                web.match(u'/%', 'percent') | (lambda e,d,n: Response())
            )
        )
        encoded = '/%D5%B0%D5%A1%D5%B5%D5%A5%D6%80%D5%A5%D5%B6/%25'

        self.assertEqual(web.Reverse.from_handler(app)('percent'), encoded)
        self.assertEqual(web.Reverse.from_handler(app)('percent').get_readable(), u'/հայերեն/%')

        self.assertNotEqual(web.ask(app, encoded), None)

        # ???
        # rctx have prefixes, so we need new one
        self.assertEqual(web.ask(app, encoded).status_int, 200)
Ejemplo n.º 8
0
    def test_prefix_root(self):
        '''Prefix root'''

        def handler(env, data, nx):
            self.assertEqual(env.request.prefixed_path, '/')
            return Response()

        app = web.cases(
            web.match('/', 'index') | handler,
            web.prefix('/docs') | web.cases(
                web.match('/', 'docs') | handler,
                web.match('/item', 'doc') | handler,
                web.prefix('/tags') | web.cases(
                    web.match('/', 'tags') | handler,
                    web.match('/tag', 'tag') | handler)))

        self.assertEqual(web.ask(app, '/docs'), None)
        self.assertEqual(web.ask(app, '/docs/').status_int, 200)
        self.assertEqual(web.ask(app, '/docs/tags'), None)
        self.assertEqual(web.ask(app, '/docs/tags/').status_int, 200)
        self.assertEqual(web.ask(app, '/docs/tags/asdasd'), None)
Ejemplo n.º 9
0
    def test_prefix_leaf(self):
        '''Simple prefix'''

        def handler(env, data, nx):
            self.assertEqual(env.request.prefixed_path, '/item')
            return Response()

        app = web.cases(
            web.match('/', 'index'),
            web.prefix('/docs') | web.cases(
                web.match('/', 'docs') | handler,
                web.match('/item', 'doc') | handler,
                web.prefix('/tags') | web.cases(
                    web.match('/', 'tags') | handler,
                    web.match('/tag', 'tag') | handler)))

        self.assertEqual(web.ask(app, '/docs/item').status_int, 200)
Ejemplo n.º 10
0
    def test_subdomain(self):
        '''Subdomain filter'''

        def handler(env, data, nx):
            self.assertEqual(env.request.path, '/')
            return Response()

        app = web.subdomain('host') | web.cases(
            web.subdomain('') | web.match('/', 'index') | handler,
            web.subdomain('k') | web.cases(
                web.subdomain('l') | web.cases(
                    web.match('/', 'l') | handler,
                ),
                web.subdomain('') | web.match('/', 'k') | handler))

        self.assertEqual(web.ask(app, 'http://host/').status_int, 200)
        self.assertEqual(web.ask(app, 'http://k.host/').status_int, 200)
        self.assertEqual(web.ask(app, 'http://l.k.host/').status_int, 200)
        self.assertEqual(web.ask(app, 'http://x.l.k.host/').status_int, 200)
        self.assert_(web.ask(app, 'http://x.k.host/') is None)
        self.assert_(web.ask(app, 'http://lk.host/') is None)
        self.assert_(web.ask(app, 'http://mhost/') is None)