コード例 #1
0
 def test_no_quote(self):
     u = URL(u'/урл/',
             host=u'сайт.рф',
             query={'q': u'поиск'},
             fragment=u"якорь")
     self.assertEqual(u.get_readable(),
                      u'http://сайт.рф/урл/?q=поиск#якорь')
コード例 #2
0
 def test_cyrillic_path(self):
     url1 = URL.from_url(
         u'http://test.ru/тест'.encode('utf-8'))  # encoded unicode
     url2 = URL.from_url(u'http://test.ru/тест')  # decoded unicode
     # should work both without errors
     self.assertEqual(url1.path, '/%D1%82%D0%B5%D1%81%D1%82')
     self.assertEqual(url1.path, url2.path)
コード例 #3
0
 def test_params_set_args(self):
     'Use multidict to set params in url'
     url = URL('/')
     self.assertIn(url.qs_set(a=1, b=2), ['/?a=1&b=2', '/?b=2&a=1'])
     url = url.qs_set([('a', '1'), ('a', '2'), ('b', '3')])
     self.assertEqual(url, '/?a=1&a=2&b=3')
     self.assertEqual(url.qs_set([('a', '1'), ('c', '2')]), '/?b=3&a=1&c=2')
     self.assertRaises(TypeError, url.qs_set, [('a', 1)], z=0)
コード例 #4
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_param_set(self):
     'Set new param in url'
     u = URL('/path/to/something', query=dict(id=3, page=5, title='title'))
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=5')
     u = u.qs_set(page=6)
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=6')
     u = u.qs_set(page=7, title='land')
     self.assertEqual(u, '/path/to/something?id=3&page=7&title=land')
コード例 #5
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_param_delete(self):
     'Set new param in url'
     u = URL('/path/to/something', query=[('id', 3), ('page', 5), ('page', 6)])
     self.assertEqual(u, '/path/to/something?id=3&page=5&page=6')
     u = u.qs_delete('page')
     self.assertEqual(u, '/path/to/something?id=3')
     u = u.qs_delete('offset')
     self.assertEqual(u, '/path/to/something?id=3')
コード例 #6
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_params_set_args(self):
     'Use multidict to set params in url'
     url = URL('/')
     self.assertEqual(url.qs_set(a=1, b=2), '/?a=1&b=2')
     url = url.qs_set([('a', '1'), ('a', '2'), ('b', '3')])
     self.assertEqual(url, '/?a=1&a=2&b=3')
     self.assertEqual(url.qs_set([('a', '1'), ('c', '2')]), '/?b=3&a=1&c=2')
     self.assertRaises(TypeError, url.qs_set, [('a', 1)], z=0)
コード例 #7
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_param_delete(self):
     'Set new param in url'
     u = URL('/path/to/something', query=[('id', 3), ('page', 5), ('page', 6)])
     self.assertEqual(u, '/path/to/something?id=3&page=5&page=6')
     u = u.qs_delete('page')
     self.assertEqual(u, '/path/to/something?id=3')
     u = u.qs_delete('offset')
     self.assertEqual(u, '/path/to/something?id=3')
コード例 #8
0
    def test_broken_idna(self):
        src = u'http://xn--.xn--p1ai/'

        url = URL.from_url(src.encode('utf-8'))
        self.assertEqual(url.get_readable(), u'http://xn--.рф/')
        self.assertEqual(str(url), src)

        url = URL.from_url(src)
        self.assertEqual(url.get_readable(), u'http://xn--.рф/')
コード例 #9
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_quotted_path_to_constructor(self):
     u = URL(u'/%D1%83/',
             host=u'xn--80aswg.xn--p1ai',
             query={'q': u'%D0%BF'},
             fragment=u"%D1%8F")
     # We shold not try to unquote the urlqouted values!
     # Otherwise it is impossible to build a consistent interface
     self.assertEqual(u, u'http://xn--80aswg.xn--p1ai/%25D1%2583/?q=%25D0%25BF#%25D1%258F')
     self.assertEqual(u.get_readable(), u'http://сайт.рф/%25D1%2583/?q=%25D0%25BF#%25D1%258F')
コード例 #10
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_quotted_path_to_constructor(self):
     u = URL(u'/%D1%83/',
             host=u'xn--80aswg.xn--p1ai',
             query={'q': u'%D0%BF'},
             fragment=u"%D1%8F")
     # We shold not try to unquote the urlqouted values!
     # Otherwise it is impossible to build a consistent interface
     self.assertEqual(u, u'http://xn--80aswg.xn--p1ai/%25D1%2583/?q=%25D0%25BF#%25D1%258F')
     self.assertEqual(u.get_readable(), u'http://сайт.рф/%25D1%2583/?q=%25D0%25BF#%25D1%258F')
コード例 #11
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_param_get(self):
     'Get param from url'
     u = URL('/path/to/something', query=dict(id=3, page=5, title='title'))
     page = u.qs_get('page')
     self.assertEqual(page, 5)
     u = u.qs_set(page=7)
     page = u.qs_get('page')
     self.assertEqual(page, 7)
     not_here = u.qs_get('not_here')
     self.assertEqual(not_here, None)
コード例 #12
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
    def test_broken_idna(self):
        src = u'http://xn--.xn--p1ai/'

        url = URL.from_url(src.encode('utf-8'))
        self.assertEqual(url.get_readable(),
                         u'http://xn--.рф/')
        self.assertEqual(str(url), src)

        url = URL.from_url(src)
        self.assertEqual(url.get_readable(),
                         u'http://xn--.рф/')
コード例 #13
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_param_set(self):
     'Set new param in url'
     u = URL('/path/to/something', query=[('title', 'title'), ('id', 3), ('page', 5)])
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=5')
     if six.PY2:
         u = u.qs_set(page=long(2))
         self.assertEqual(u, '/path/to/something?title=title&id=3&page=2')
     u = u.qs_set(page=6)
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=6')
     u = u.qs_set(page=7, title='land')
     self.assertIn(u, ['/path/to/something?id=3&page=7&title=land',
                       '/path/to/something?id=3&title=land&page=7'])
コード例 #14
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_param_set(self):
     'Set new param in url'
     u = URL('/path/to/something', query=[('title', 'title'), ('id', 3), ('page', 5)])
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=5')
     if six.PY2:
         u = u.qs_set(page=long(2))
         self.assertEqual(u, '/path/to/something?title=title&id=3&page=2')
     u = u.qs_set(page=6)
     self.assertEqual(u, '/path/to/something?title=title&id=3&page=6')
     u = u.qs_set(page=7, title='land')
     self.assertIn(u, ['/path/to/something?id=3&page=7&title=land',
                       '/path/to/something?id=3&title=land&page=7'])
コード例 #15
0
ファイル: url.py プロジェクト: ods/iktomi
    def test_from_url_idna(self):
        src = (u'http://xn--80aswg.xn--p1ai'
                                u'/%D1%83%D1%80%D0%BB/'
                                u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA'
                                u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')

        url = URL.from_url(src.encode('utf-8'))
        self.assertEqual(url.get_readable(),
                         u'http://сайт.рф/урл/?q=поиск#якорь')

        url = URL.from_url(src)
        self.assertEqual(url.get_readable(),
                         u'http://сайт.рф/урл/?q=поиск#якорь')
コード例 #16
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
    def test_from_url_idna(self):
        src = (u'http://xn--80aswg.xn--p1ai'
                                u'/%D1%83%D1%80%D0%BB/'
                                u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA'
                                u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')

        url = URL.from_url(src.encode('utf-8'))
        self.assertEqual(url.get_readable(),
                         u'http://сайт.рф/урл/?q=поиск#якорь')

        url = URL.from_url(src)
        self.assertEqual(url.get_readable(),
                         u'http://сайт.рф/урл/?q=поиск#якорь')
コード例 #17
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
    def test_copy_url(self):
        url_orig = URL.from_url(u"http://test.ru/тест?arg=value#anchor")
        url_copy = copy.copy(url_orig)
        self.assertEqual(str(url_orig), str(url_copy))

        url_deepcopy = copy.deepcopy(url_orig)
        self.assertEqual(str(url_orig), str(url_deepcopy))
コード例 #18
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_iri(self):
     u = URL('/', host=u'example.com')
     self.assertEqual(u, u'http://example.com/')
     u = URL(u'/урл/', host=u'сайт.рф', query={'q': u'поиск'}, fragment=u"якорь")
     self.assertEqual(u, u'http://xn--80aswg.xn--p1ai'
                                 u'/%D1%83%D1%80%D0%BB/'
                                 u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA'
                                 u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')
     # Note: you should probably not use unicode in fragment part of URL.
     #       We encode it according to RFC, but different client handle
     #       it in different ways: Chrome allows unicode and does not
     #       encode/decode it at all, while Firefox handles it according RFC
     self.assertEqual(u.qs_set(a=u'1'), u'http://xn--80aswg.xn--p1ai'
                                 u'/%D1%83%D1%80%D0%BB/'
                                 u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&a=1'
                                 u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')
コード例 #19
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_from_url_path(self):
     url = URL.from_url('/url?a=1&b=2&b=3')
     self.assertEqual(url.scheme, 'http')
     self.assertEqual(url.host, '')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/url')
     self.assertEqual(set(url.query.items()), {('a' ,'1'), ('b', '2'), ('b', '3')})
コード例 #20
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_iri(self):
     u = URL('/', host=u'example.com')
     self.assertEqual(u, u'http://example.com/')
     u = URL(u'/урл/', host=u'сайт.рф', query={'q': u'поиск'}, fragment=u"якорь")
     self.assertEqual(u, u'http://xn--80aswg.xn--p1ai'
                                 u'/%D1%83%D1%80%D0%BB/'
                                 u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA'
                                 u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')
     # Note: you should probably not use unicode in fragment part of URL.
     #       We encode it according to RFC, but different client handle
     #       it in different ways: Chrome allows unicode and does not
     #       encode/decode it at all, while Firefox handles it according RFC
     self.assertEqual(u.qs_set(a=u'1'), u'http://xn--80aswg.xn--p1ai'
                                 u'/%D1%83%D1%80%D0%BB/'
                                 u'?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA&a=1'
                                 u'#%D1%8F%D0%BA%D0%BE%D1%80%D1%8C')
コード例 #21
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_from_url_path(self):
     url = URL.from_url('/url?a=1&b=2&b=3')
     self.assertEqual(url.schema, 'http')
     self.assertEqual(url.host, '')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/url')
     self.assertEqual(url.query.items(), [('a' ,'1'), ('b', '2'), ('b', '3')])
コード例 #22
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_from_url_unicode(self):
     url = URL.from_url(u'http://сайт.рф/', show_host=False)
     self.assertEqual(url.schema, 'http')
     self.assertEqual(url.host, u'сайт.рф')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/')
     self.assertEqual(url.show_host, False)
コード例 #23
0
ファイル: url.py プロジェクト: ods/iktomi
    def test_copy_url(self):
        url_orig = URL.from_url(u"http://test.ru/тест?arg=value#anchor")
        url_copy = copy.copy(url_orig)
        self.assertEqual(str(url_orig), str(url_copy))

        url_deepcopy = copy.deepcopy(url_orig)
        self.assertEqual(str(url_orig), str(url_deepcopy))
コード例 #24
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_from_url_unicode(self):
     url = URL.from_url(u'http://сайт.рф/', show_host=False)
     self.assertEqual(url.scheme, 'http')
     self.assertEqual(url.host, u'сайт.рф')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/')
     self.assertEqual(url.show_host, False)
コード例 #25
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_from_url(self):
     url = URL.from_url('http://example.com/url?a=1&b=2&b=3', show_host=False)
     self.assertEqual(url.schema, 'http')
     self.assertEqual(url.host, 'example.com')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/url')
     self.assertEqual(url.query.items(), [('a' ,'1'), ('b', '2'), ('b', '3')])
     self.assertEqual(url.show_host, False)
コード例 #26
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_rendering_with_params(self):
     'Url with params'
     u = URL('/path/to/something', query=dict(id=3, page=5, title='title'))
     self.assertIn(u, ['/path/to/something?title=title&id=3&page=5',
                       '/path/to/something?title=title&page=5&id=3',
                       '/path/to/something?id=3&page=5&title=title',
                       '/path/to/something?id=3&title=title&page=5',
                       '/path/to/something?page=5&id=3&title=title',
                       '/path/to/something?page=5&title=title&id=3',])
コード例 #27
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_from_url(self):
     url = URL.from_url('http://example.com/url?a=1&b=2&b=3#anchor', show_host=False)
     self.assertEqual(url.scheme, 'http')
     self.assertEqual(url.host, 'example.com')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/url')
     self.assertEqual(url.fragment, 'anchor')
     self.assertEqual(set(url.query.items()), {('a' ,'1'), ('b', '2'), ('b', '3')})
     self.assertEqual(url.show_host, False)
コード例 #28
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_from_url(self):
     url = URL.from_url('http://example.com/url?a=1&b=2&b=3#anchor', show_host=False)
     self.assertEqual(url.scheme, 'http')
     self.assertEqual(url.host, 'example.com')
     self.assertEqual(url.port, '')
     self.assertEqual(url.path, '/url')
     self.assertEqual(url.fragment, 'anchor')
     self.assertEqual(set(url.query.items()), {('a' ,'1'), ('b', '2'), ('b', '3')})
     self.assertEqual(url.show_host, False)
コード例 #29
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_param_get(self):
     'Get param from url'
     u = URL('/path/to/something', query=dict(id=3, page=5, title='title'))
     page = u.qs_get('page')
     self.assertEqual(page, 5)
     u = u.qs_set(page=7)
     page = u.qs_get('page')
     self.assertEqual(page, 7)
     not_here = u.qs_get('not_here')
     self.assertEqual(not_here, None)
コード例 #30
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_quote(self):
     u = URL(quote('/path/to/+'))
     self.assertEqual(u, '/path/to/%2B')
     u = u.qs_set(page=7)
     self.assertEqual(u, '/path/to/%2B?page=7')
コード例 #31
0
ファイル: url.py プロジェクト: ods/iktomi
    def test_empty_fragment(self):
        self.assertEqual(URL.from_url('/').fragment, None)
        self.assertEqual(URL.from_url('/#').fragment, '')

        self.assertEqual(URL('/', fragment=None), '/')
        self.assertEqual(URL('/', fragment='') ,'/#')
コード例 #32
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_rendering_without_params(self):
     'Url without params'
     u = URL('/path/to/something')
     self.assertEqual(u, '/path/to/something')
     self.assert_(u in repr(u))
コード例 #33
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_from_url_broken_unicode(self):
     url = URL.from_url('/search%E3%81?q=hello%E3%81#hash%E3%81')
     self.assertEqual(url.get_readable(),
                      u'/search\N{REPLACEMENT CHARACTER}'
                             u'?q=hello\N{REPLACEMENT CHARACTER}'
                              u'#hash\N{REPLACEMENT CHARACTER}')
コード例 #34
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_parse_cp_1251(self):
     url_string = u"http://test.com/?query=привет".encode('cp1251')
     url = URL.from_url(url_string)
     self.assertEqual(url.host, 'test.com')
     self.assertEqual(url.query['query'], u'\N{REPLACEMENT CHARACTER}'*6)
コード例 #35
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_parse_cp_1251(self):
     url_string = u"http://test.com/?query=привет".encode('cp1251')
     url = URL.from_url(url_string)
     self.assertEqual(url.host, 'test.com')
     self.assertEqual(url.query['query'], u'\N{REPLACEMENT CHARACTER}'*6)
コード例 #36
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_cyrillic_path(self):
     url1 = URL.from_url('http://test.ru/тест') # encoded unicode
     url2 = URL.from_url(u'http://test.ru/тест') # decoded unicode
     # should work both without errors
     self.assertEqual(url1.path, '/%D1%82%D0%B5%D1%81%D1%82')
     self.assertEqual(url1.path, url2.path)
コード例 #37
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_no_quote(self):
     u = URL(u'/урл/', host=u'сайт.рф', query={'q': u'поиск'})
     self.assertEqual(u.get_readable(), u'http://сайт.рф/урл/?q=поиск')
コード例 #38
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_from_url_idna(self):
     url = URL.from_url('http://xn--80aswg.xn--p1ai/%D1%83%D1%80%D0%BB/?q=%D0%BF%D0%BE%D0%B8%D1%81%D0%BA')
     self.assertEqual(url.get_readable(),
                      u'http://сайт.рф/урл/?q=поиск')
コード例 #39
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
 def test_from_url_broken_unicode(self):
     url = URL.from_url('/search%E3%81?q=hello%E3%81#hash%E3%81')
     self.assertEqual(url.get_readable(),
                      u'/search\N{REPLACEMENT CHARACTER}'
                             u'?q=hello\N{REPLACEMENT CHARACTER}'
                              u'#hash\N{REPLACEMENT CHARACTER}')
コード例 #40
0
ファイル: url.py プロジェクト: ods/iktomi
 def test_param_add_args(self):
     'Add param to url'
     url = URL('/')
     self.assertIn(url.qs_add([('a', 1), ('c', 3)], a=2, b=2),
                     ['/?a=1&c=3&a=2&b=2',
                      '/?a=1&c=3&b=2&a=2'])
コード例 #41
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_from_url_broken_unicode(self):
     url = URL.from_url('/search?q=hello%E3%81')
     self.assertEqual(url.get_readable(),
                      u'/search?q=hello�')
コード例 #42
0
ファイル: url.py プロジェクト: SmartTeleMax/iktomi
    def test_empty_fragment(self):
        self.assertEqual(URL.from_url('/').fragment, None)
        self.assertEqual(URL.from_url('/#').fragment, '')

        self.assertEqual(URL('/', fragment=None), '/')
        self.assertEqual(URL('/', fragment='') ,'/#')
コード例 #43
0
ファイル: url.py プロジェクト: oas89/iktomi
 def test_param_add_args(self):
     'Add param to url'
     url = URL('/')
     self.assertEqual(url.qs_add([('a', 1), ('c', 3)], a=2, b=2), '/?a=1&c=3&a=2&b=2')