337
337
def test_function_type(self):
338
338
if sys.platform == 'win32':
339
self.assertEqual(urlutils._win32_local_path_to_url,
340
urlutils.local_path_to_url)
341
self.assertEqual(urlutils._win32_local_path_from_url,
342
urlutils.local_path_from_url)
339
self.assertEqual(urlutils._win32_local_path_to_url, urlutils.local_path_to_url)
340
self.assertEqual(urlutils._win32_local_path_from_url, urlutils.local_path_from_url)
344
self.assertEqual(urlutils._posix_local_path_to_url,
345
urlutils.local_path_to_url)
346
self.assertEqual(urlutils._posix_local_path_from_url,
347
urlutils.local_path_from_url)
342
self.assertEqual(urlutils._posix_local_path_to_url, urlutils.local_path_to_url)
343
self.assertEqual(urlutils._posix_local_path_from_url, urlutils.local_path_from_url)
349
345
def test_posix_local_path_to_url(self):
350
346
to_url = urlutils._posix_local_path_to_url
351
347
self.assertEqual('file:///path/to/foo',
352
348
to_url('/path/to/foo'))
354
self.assertEqual('file:///path/to/foo%2Cbar',
355
to_url('/path/to/foo,bar'))
358
351
result = to_url(u'/path/to/r\xe4ksm\xf6rg\xe5s')
359
352
except UnicodeError:
811
794
class TestParseURL(TestCase):
813
def test_parse_simple(self):
814
parsed = urlutils.parse_url('http://example.com:80/one')
815
self.assertEquals(('http', None, None, 'example.com', 80, '/one'),
819
parsed = urlutils.parse_url('http://[1:2:3::40]/one')
820
self.assertEquals(('http', None, None, '1:2:3::40', None, '/one'),
823
def test_ipv6_port(self):
824
parsed = urlutils.parse_url('http://[1:2:3::40]:80/one')
825
self.assertEquals(('http', None, None, '1:2:3::40', 80, '/one'),
829
class TestURL(TestCase):
831
def test_parse_simple(self):
832
parsed = urlutils.URL.from_string('http://example.com:80/one')
833
self.assertEquals('http', parsed.scheme)
834
self.assertIs(None, parsed.user)
835
self.assertIs(None, parsed.password)
836
self.assertEquals('example.com', parsed.host)
837
self.assertEquals(80, parsed.port)
838
self.assertEquals('/one', parsed.path)
841
parsed = urlutils.URL.from_string('http://[1:2:3::40]/one')
842
self.assertEquals('http', parsed.scheme)
843
self.assertIs(None, parsed.port)
844
self.assertIs(None, parsed.user)
845
self.assertIs(None, parsed.password)
846
self.assertEquals('1:2:3::40', parsed.host)
847
self.assertEquals('/one', parsed.path)
849
def test_ipv6_port(self):
850
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
851
self.assertEquals('http', parsed.scheme)
852
self.assertEquals('1:2:3::40', parsed.host)
853
self.assertIs(None, parsed.user)
854
self.assertIs(None, parsed.password)
855
self.assertEquals(80, parsed.port)
856
self.assertEquals('/one', parsed.path)
858
def test_quoted(self):
859
parsed = urlutils.URL.from_string(
860
'http://ro%62ey:h%40t@ex%41mple.com:2222/path')
861
self.assertEquals(parsed.quoted_host, 'ex%41mple.com')
862
self.assertEquals(parsed.host, 'exAmple.com')
863
self.assertEquals(parsed.port, 2222)
864
self.assertEquals(parsed.quoted_user, 'ro%62ey')
865
self.assertEquals(parsed.user, 'robey')
866
self.assertEquals(parsed.quoted_password, 'h%40t')
867
self.assertEquals(parsed.password, 'h@t')
868
self.assertEquals(parsed.path, '/path')
871
parsed1 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
872
parsed2 = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
873
self.assertEquals(parsed1, parsed2)
874
self.assertEquals(parsed1, parsed1)
875
parsed2.path = '/two'
876
self.assertNotEquals(parsed1, parsed2)
879
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
881
"<URL('http', None, None, '1:2:3::40', 80, '/one')>",
885
parsed = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
886
self.assertEquals('http://[1:2:3::40]:80/one', str(parsed))
888
def test__combine_paths(self):
889
combine = urlutils.URL._combine_paths
890
self.assertEqual('/home/sarah/project/foo',
891
combine('/home/sarah', 'project/foo'))
892
self.assertEqual('/etc',
893
combine('/home/sarah', '../../etc'))
894
self.assertEqual('/etc',
895
combine('/home/sarah', '../../../etc'))
896
self.assertEqual('/etc',
897
combine('/home/sarah', '/etc'))
899
def test_clone(self):
900
url = urlutils.URL.from_string('http://[1:2:3::40]:80/one')
901
url1 = url.clone("two")
902
self.assertEquals("/one/two", url1.path)
903
url2 = url.clone("/two")
904
self.assertEquals("/two", url2.path)
906
self.assertIsNot(url, url3)
907
self.assertEquals(url, url3)
796
def test_parse_url(self):
797
self.assertEqual(urlutils.parse_url('http://example.com:80/one'),
798
('http', None, None, 'example.com', 80, '/one'))
799
self.assertEqual(urlutils.parse_url('http://[1:2:3::40]/one'),
800
('http', None, None, '1:2:3::40', None, '/one'))
801
self.assertEqual(urlutils.parse_url('http://[1:2:3::40]:80/one'),
802
('http', None, None, '1:2:3::40', 80, '/one'))