Exemple #1
0
 def test_incorrect_value(self):
     'Incorrect url encoded value'
     t = UrlTemplate('/<name>')
     value = quote(u'/имя'.encode('utf-8'))[:-1]
     self.assertEqual(t.match(value), (value, {
         'name': u'\u0438\u043c\ufffd%8'
     }))
Exemple #2
0
 def test_match_from_begining_without_params(self):
     'UrlTemplate match method without params (from begining of str)'
     ut = UrlTemplate('simple', match_whole_str=False)
     self.assertEqual(ut.match('simple'), ('simple', {}))
     self.assertEqual(ut.match('simple/sdffds'), ('simple', {}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/'), (None, {}))
Exemple #3
0
 def test_multiple_converters(self):
     'Multiple converters'
     t = UrlTemplate('/<name>/text/<action>')
     self.assertEqual(t.match('/this/text/edit'), ('/this/text/edit', {
         'name': 'this',
         'action': 'edit'
     }))
Exemple #4
0
 def test_incorrect_urlencoded_path(self):
     'Incorrect url encoded path'
     t = UrlTemplate('/<name>')
     value = quote(u'/имя'.encode('utf-8')) + '%r1'
     self.assertEqual(t.match(value), (value, {
         'name': u'\u0438\u043c\u044f%r1'
     }))
Exemple #5
0
 def test_unicode(self):
     'Unicode values of converters'
     t = UrlTemplate('/<name>/text/<action>')
     url = quote(u'/имя/text/действие'.encode('utf-8'))
     self.assertEqual(t.match(url), (url, {
         'name': u'имя',
         'action': u'действие'
     }))
Exemple #6
0
 def test_multiple_converters_postfix(self):
     'Multiple converters with postfix data'
     t = UrlTemplate('/<name>/text/<action>/post')
     self.assertEqual(t.match('/this/text/edit/post'),
                      ('/this/text/edit/post', {
                          'name': 'this',
                          'action': 'edit'
                      }))
     self.assertEqual(t.match('/this/text/edit'), (None, {}))
Exemple #7
0
    def test_redefine_converters(self):
        from iktomi.web.url_converters import Integer

        class DoubleInt(Integer):
            def to_python(self, value, env=None):
                return Integer.to_python(self, value, env) * 2
            def to_url(self, value):
                return str(value / 2)

        ut = UrlTemplate('/simple/<int:id>',
                         converters={'int': DoubleInt})
        self.assertEqual(ut(id=2), '/simple/1')
        self.assertEqual(ut.match('/simple/1'), ('/simple/1', {'id': 2}))
Exemple #8
0
    def test_redefine_converters(self):
        from iktomi.web.url_converters import Integer

        class DoubleInt(Integer):
            def to_python(self, value, env=None):
                return Integer.to_python(self, value, env) * 2

            def to_url(self, value):
                return str(value // 2)

        ut = UrlTemplate('/simple/<int:id>', converters={'int': DoubleInt})
        self.assertEqual(ut(id=2), '/simple/1')
        self.assertEqual(ut.match('/simple/1'), ('/simple/1', {'id': 2}))
Exemple #9
0
 def test_match_from_begining_with_params(self):
     'UrlTemplate match method with params (from begining of str)'
     ut = UrlTemplate('/simple/<int:id>', match_whole_str=False)
     self.assertEqual(ut.match('/simple/2'), ('/simple/2', {'id': 2}))
     self.assertEqual(ut.match('/simple/2/sdfsf'), ('/simple/2', {'id': 2}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/d'), (None, {}))
     self.assertEqual(ut.match('/simple/d/sdfsdf'), (None, {}))
Exemple #10
0
 def test_converter_with_args(self):
     'Converter with args'
     class Conv(Converter):
         def __init__(self, *items):
             self.items = items
         def to_python(self, value, **kw):
             if value not in self.items:
                 raise ConvertError(self, value)
             return value
     t = UrlTemplate(u'/<conv(u"text", u"тест", noquote):name>',
                     converters={'conv': Conv})
     value = quote(u'/имя'.encode('utf-8'))
     self.assertEqual(t.match(value), (None, {}))
     value = quote(u'/text'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'text'}))
     value = quote(u'/тест'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'тест'}))
     value = quote(u'/noquote'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'noquote'}))
Exemple #11
0
 def test_match_from_begining_without_params(self):
     'UrlTemplate match method without params (from begining of str)'
     ut = UrlTemplate('simple', match_whole_str=False)
     self.assertEqual(ut.match('simple'), ('simple', {}))
     self.assertEqual(ut.match('simple/sdffds'), ('simple', {}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/'), (None, {}))
Exemple #12
0
 def test_match_from_begining_with_params(self):
     'UrlTemplate match method with params (from begining of str)'
     ut = UrlTemplate('/simple/<int:id>', match_whole_str=False)
     self.assertEqual(ut.match('/simple/2'), ('/simple/2', {'id':2}))
     self.assertEqual(ut.match('/simple/2/sdfsf'), ('/simple/2', {'id':2}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/d'), (None, {}))
     self.assertEqual(ut.match('/simple/d/sdfsdf'), (None, {}))
Exemple #13
0
    def test_anonymous(self):
        class SimpleConv(Converter):
            regex = '.+'

        convs = {'string': SimpleConv}

        ut = UrlTemplate('/simple/<id>')

        regexp = construct_re(ut.template, converters=convs, anonymous=True)[0]
        self.assertEqual(regexp.pattern, r'^\/simple\/.+')

        regexp = construct_re(ut.template, converters=convs,
                              anonymous=False)[0]
        self.assertEqual(regexp.pattern, r'^\/simple\/(?P<id>.+)')
Exemple #14
0
 def test_converter_with_args(self):
     'Converter with args'
     class Conv(Converter):
         def __init__(self, *items):
             self.items = items
         def to_python(self, value, **kw):
             if value not in self.items:
                 raise ConvertError(self, value)
             return value
     t = UrlTemplate(u'/<conv(u"text", u"тест", noquote):name>',
                     converters={'conv': Conv})
     value = quote(u'/имя'.encode('utf-8'))
     self.assertEqual(t.match(value), (None, {}))
     value = quote(u'/text'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'text'}))
     value = quote(u'/тест'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'тест'}))
     value = quote(u'/noquote'.encode('utf-8'))
     self.assertEqual(t.match(value), (value, {'name': u'noquote'}))
Exemple #15
0
 def test_default_converter(self):
     'Default converter test'
     t = UrlTemplate('/<name>')
     self.assertEqual(t.match('/somevalue'), ('/somevalue', {'name': 'somevalue'}))
Exemple #16
0
 def test_match_without_params(self):
     'UrlTemplate match method without params'
     ut = UrlTemplate('simple')
     self.assertEqual(ut.match('simple'), ('simple', {}))
     self.assertEqual(ut.match('/simple'), (None, {}))
Exemple #17
0
 def test_match_with_params(self):
     'UrlTemplate match method with params'
     ut = UrlTemplate('/simple/<int:id>')
     self.assertEqual(ut.match('/simple/2'), ('/simple/2', {'id':2}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/d'), (None, {}))
Exemple #18
0
 def test_incorrect_urlencoded_path(self):
     'Incorrect url encoded path'
     t = UrlTemplate('/<name>')
     value = quote(u'/имя'.encode('utf-8'))+'%r1'
     self.assertEqual(t.match(value), (value, {'name': u'\u0438\u043c\u044f%r1'}))
Exemple #19
0
 def test_var_name_with_underscore(self):
     ut = UrlTemplate('<message_uid>')
     self.assertEqual(ut(message_uid='uid'), 'uid')
Exemple #20
0
 def test_unicode(self):
     'Unicode values of converters'
     t = UrlTemplate('/<name>/text/<action>')
     url = quote(u'/имя/text/действие'.encode('utf-8'))
     self.assertEqual(t.match(url), (url, {'name': u'имя', 'action': u'действие'}))
Exemple #21
0
 def test_incorrect_value(self):
     'Incorrect url encoded value'
     t = UrlTemplate('/<name>')
     value = quote(u'/имя'.encode('utf-8'))[:-1]
     self.assertEqual(t.match(value), (value, {'name': u'\u0438\u043c\ufffd%8'}))
Exemple #22
0
 def test_multiple_converters(self):
     'Multiple converters'
     t = UrlTemplate('/<name>/text/<action>')
     self.assertEqual(t.match('/this/text/edit'), ('/this/text/edit', {'name': 'this', 'action': 'edit'}))
Exemple #23
0
 def test_multiple_converters_postfix(self):
     'Multiple converters with postfix data'
     t = UrlTemplate('/<name>/text/<action>/post')
     self.assertEqual(t.match('/this/text/edit/post'), ('/this/text/edit/post', {'name': 'this', 'action': 'edit'}))
     self.assertEqual(t.match('/this/text/edit'), (None, {}))
Exemple #24
0
 def test_empty_match(self):
     'UrlTemplate match method with empty template'
     ut = UrlTemplate('')
     self.assertEqual(ut.match(''), ('', {}))
     self.assertEqual(ut.match('/'), (None, {}))
Exemple #25
0
 def test_match_with_params(self):
     'UrlTemplate match method with params'
     ut = UrlTemplate('/simple/<int:id>')
     self.assertEqual(ut.match('/simple/2'), ('/simple/2', {'id': 2}))
     self.assertEqual(ut.match('/simple'), (None, {}))
     self.assertEqual(ut.match('/simple/d'), (None, {}))
Exemple #26
0
 def test_only_converter_is_present(self):
     ut = UrlTemplate('<int:id>')
     self.assertEqual(ut(id=2), '2')
Exemple #27
0
 def test_static_text(self):
     'Simple text match'
     t = UrlTemplate('/test/url')
     self.assertEqual(t.match('/test/url'), ('/test/url', {}))
Exemple #28
0
 def test_empty_match(self):
     'UrlTemplate match method with empty template'
     ut = UrlTemplate('')
     self.assertEqual(ut.match(''), ('', {}))
     self.assertEqual(ut.match('/'), (None, {}))
Exemple #29
0
 def test_builder_with_params(self):
     'UrlTemplate builder method (with params)'
     ut = UrlTemplate('/simple/<int:id>/data')
     self.assertEqual(ut(id=2), '/simple/2/data')
Exemple #30
0
 def test_builder_without_params(self):
     'UrlTemplate builder method (without params)'
     ut = UrlTemplate('/simple')
     self.assertEqual(ut(), '/simple')
Exemple #31
0
 def test_incorrect_url_template1(self):
     'Incorrect url template 1'
     self.assertRaises(ValueError, lambda: UrlTemplate('/<:name>/'))
Exemple #32
0
 def test_default_converter(self):
     ut = UrlTemplate('<message>')
     self.assertEqual(ut(message='hello'), 'hello')
Exemple #33
0
 def test_match(self):
     'Simple match'
     t = UrlTemplate('/')
     self.assertEqual(t.match('/'), ('/', {}))
Exemple #34
0
 def test_match(self):
     'Simple match'
     t = UrlTemplate('/')
     self.assertEqual(t.match('/'), ('/', {}))
Exemple #35
0
 def test_converter(self):
     'Simple text match'
     t = UrlTemplate('/<string:name>')
     self.assertEqual(t.match('/somevalue'), ('/somevalue', {'name': 'somevalue'}))
Exemple #36
0
 def test_static_text(self):
     'Simple text match'
     t = UrlTemplate('/test/url')
     self.assertEqual(t.match('/test/url'), ('/test/url', {}))
Exemple #37
0
 def test_converter(self):
     'Simple text match'
     t = UrlTemplate('/<string:name>')
     self.assertEqual(t.match('/somevalue'), ('/somevalue', {'name': 'somevalue'}))
Exemple #38
0
 def test_default_converter(self):
     'Default converter test'
     t = UrlTemplate('/<name>')
     self.assertEqual(t.match('/somevalue'), ('/somevalue', {'name': 'somevalue'}))
Exemple #39
0
 def test_unknown_converter(self):
     'Unknown converter'
     self.assertRaises(KeyError, lambda: UrlTemplate('/<baba:name>/'))
     self.assertRaises(KeyError, lambda: UrlTemplate('/<baba:name></'))
Exemple #40
0
 def test_match_without_params(self):
     'UrlTemplate match method without params'
     ut = UrlTemplate('simple')
     self.assertEqual(ut.match('simple'), ('simple', {}))
     self.assertEqual(ut.match('/simple'), (None, {}))