Beispiel #1
0
 def test_multiple_converters(self):
     'Multiple converters'
     t = UrlTemplate('/<name>/text/<action>')
     self.assertEqual(t.match(quote('/this/text/edit')), (True, {
         'name': 'this',
         'action': 'edit'
     }))
Beispiel #2
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), (True, {
         'name': u'\u0438\u043c\u044f%r1'
     }))
Beispiel #3
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), (True, {
         'name': u'\u0438\u043c\ufffd%8'
     }))
Beispiel #4
0
 def test_unicode(self):
     'Unicode values of converters'
     t = UrlTemplate('/<name>/text/<action>')
     self.assertEqual(t.match(quote(u'/имя/text/действие'.encode('utf-8'))),
                      (True, {
                          'name': u'имя',
                          'action': u'действие'
                      }))
Beispiel #5
0
 def test_multiple_converters_postfix(self):
     'Multiple converters with postfix data'
     t = UrlTemplate('/<name>/text/<action>/post')
     self.assertEqual(t.match(quote(u'/this/text/edit/post')),
                      (True, {
                          'name': 'this',
                          'action': 'edit'
                      }))
     self.assertEqual(t.match(quote(u'/this/text/edit')), (False, {}))
Beispiel #6
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.name, value)
                return value

        t = UrlTemplate('/<conv(u"text", u"test"):name>', converters=[Conv])
        value = quote(u'/имя'.encode('utf-8'))
        self.assertEqual(t.match(value), (False, {}))
        value = quote(u'/text'.encode('utf-8'))
        self.assertEqual(t.match(value), (True, {'name': u'text'}))
        value = quote(u'/test'.encode('utf-8'))
        self.assertEqual(t.match(value), (True, {'name': u'test'}))
Beispiel #7
0
 def test_default_converter(self):
     'Default converter test'
     t = UrlTemplate('/<name>')
     self.assertEqual(t.match('/somevalue'), (True, {'name': 'somevalue'}))
Beispiel #8
0
 def test_converter(self):
     'Simple text match'
     t = UrlTemplate('/<string:name>')
     self.assertEqual(t.match('/somevalue'), (True, {'name': 'somevalue'}))
Beispiel #9
0
 def test_static_text(self):
     'Simple text match'
     t = UrlTemplate('/test/url')
     self.assertEqual(t.match('/test/url'), (True, {}))
Beispiel #10
0
 def test_match(self):
     'Simple match'
     t = UrlTemplate('/')
     self.assertEqual(t.match('/'), (True, {}))
Beispiel #11
0
 def test_unknown_converter(self):
     'Unknown converter'
     self.assertRaises(KeyError, lambda: UrlTemplate('/<baba:name>/'))
     self.assertRaises(KeyError, lambda: UrlTemplate('/<baba:name></'))
Beispiel #12
0
 def test_incorrect_url_template1(self):
     'Incorrect url template 1'
     self.assertRaises(ValueError, lambda: UrlTemplate('/<:name>/'))