from unittest import TestCase from miniuri import Uri class TestMiniUri(TestCase): def setUp(self): # "http://www.foxhop.net/samsung/HL-T5087SA/red-LED-failure" self.u = Uri("https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5") def test_uri(self): self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_scheme(self): self.assertEqual(self.u.scheme, "https") def test_authority(self): self.assertEqual(self.u.authority, "fox:pass@www.foxhop.net:81") def test_userinfo(self): self.assertEqual(self.u.userinfo, "fox:pass") def test_username(self): self.assertEqual(self.u.username, "fox") def test_password(self): self.assertEqual(self.u.password, "pass") def test_hostname(self): self.assertEqual(self.u.hostname, "www.foxhop.net") def test_port(self): self.assertEqual(self.u.port, "81") def test_path(self): self.assertEqual(self.u.path, "/path/filename.jpg") def test_filename(self): self.assertEqual(self.u.filename, "filename.jpg") def test_extension(self): self.assertEqual(self.u.extension, "jpg") def test_query(self): self.assertEqual(self.u.query, "p=2") def test_fragment(self): self.assertEqual(self.u.fragment, "5") # test edge case URIs def test_uri_no_path(self): self.u = Uri("https://fox:pass@www.foxhop.net:81?p=2#5") self.assertEqual(self.u.uri, "https://fox:pass@www.foxhop.net:81?p=2#5") self.assertEqual(self.u.username, "fox") self.assertEqual(self.u.password, "pass") self.assertEqual(self.u.hostname, "www.foxhop.net") self.assertEqual(self.u.port, "81") self.assertEqual(self.u.path, None) self.assertEqual(self.u.filename, None) self.assertEqual(self.u.extension, None) def test_uri_filename_only_path(self): self.u = Uri("https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/filename.jpg?p=2#5" ) self.assertEqual(self.u.username, "fox") self.assertEqual(self.u.password, "pass") self.assertEqual(self.u.hostname, "www.foxhop.net") self.assertEqual(self.u.port, "81") self.assertEqual(self.u.path, "/filename.jpg") self.assertEqual(self.u.filename, "filename.jpg") self.assertEqual(self.u.extension, "jpg") def test_uri_trailing_slash_only_path(self): self.u = Uri("https://fox:pass@www.foxhop.net:81/?p=2#5") self.assertEqual(self.u.path, "/") self.assertEqual(self.u.uri, "https://fox:pass@www.foxhop.net:81/?p=2#5") # test_change_attributes: def test_change_uri(self): self.u.uri = "http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6" self.assertEqual( self.u.uri, "http://zell:sapp@wwws.foxhop.net:82/my/file.png?p=3#6" ) def test_change_scheme(self): self.u.scheme = "http" self.assertEqual(self.u.scheme, "http") self.assertEqual( self.u.uri, "http://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_change_authority(self): self.u.authority = "zell:ssap@wwws.foxhop.net:82" self.assertEqual(self.u.authority, "zell:ssap@wwws.foxhop.net:82") self.assertEqual( self.u.uri, "https://zell:ssap@wwws.foxhop.net:82/path/filename.jpg?p=2#5" ) def test_change_userinfo(self): self.u.userinfo = "zell:ssap" self.assertEqual(self.u.userinfo, "zell:ssap") self.assertEqual( self.u.uri, "https://zell:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5" ) self.u.userinfo = "zell" self.assertEqual(self.u.userinfo, "zell") self.assertEqual( self.u.uri, "https://zell@www.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_change_username(self): self.u.username = "zell" self.assertEqual(self.u.username, "zell") self.assertEqual( self.u.uri, "https://zell:pass@www.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_change_password(self): self.u.password = "ssap" self.assertEqual(self.u.password, "ssap") self.assertEqual( self.u.uri, "https://fox:ssap@www.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_change_hostname(self): self.u.hostname = "wwws.foxhop.net" self.assertEqual(self.u.hostname, "wwws.foxhop.net") self.assertEqual( self.u.uri, "https://fox:pass@wwws.foxhop.net:81/path/filename.jpg?p=2#5" ) def test_change_port(self): self.u.port = "82" self.assertEqual(self.u.port, "82") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:82/path/filename.jpg?p=2#5" ) def test_change_path(self): self.u.path = "/my/file.png" self.assertEqual(self.u.path, "/my/file.png") self.assertEqual(self.u.filename, "file.png") self.assertEqual(self.u.extension, "png") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/my/file.png?p=2#5" ) def test_change_filename(self): self.u.filename = "file.png" self.assertEqual(self.u.filename, "file.png") self.assertEqual(self.u.extension, "png") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/path/file.png?p=2#5" ) def test_change_extension(self): self.u.extension = "png" self.assertEqual(self.u.filename, "filename.png") self.assertEqual(self.u.extension, "png") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.png?p=2#5" ) def test_change_query(self): self.u.query = "p=3" self.assertEqual(self.u.query, "p=3") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=3#5" ) def test_change_fragment(self): self.u.fragment = "6" self.assertEqual(self.u.fragment, "6") self.assertEqual( self.u.uri, "https://fox:pass@www.foxhop.net:81/path/filename.jpg?p=2#6" ) def test_relative_uri(self): self.assertEqual(self.u.relative_uri, "/path/filename.jpg?p=2#5") def test_only_relative_uri(self): u = Uri("/about.html") self.assertEqual(u.relative_uri, "/about.html") self.assertEqual(u.filename, "about.html") self.assertEqual(u.extension, "html") self.assertIsNone(u.fragment, None) self.assertIsNone(u.hostname, None) self.assertIsNone(u.scheme, None) def test_empty_uri_sets_attrs_to_none(self): self.u.uri = "" self.assertEqual(self.u.uri, "") self.assertIsNone(self.u.scheme) self.assertIsNone(self.u.username) self.assertIsNone(self.u.password) self.assertIsNone(self.u.hostname) self.assertIsNone(self.u.port) self.assertIsNone(self.u.path) self.assertIsNone(self.u.filename) self.assertIsNone(self.u.query) self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority) def test_empty_uri_sets_attrs_to_none2(self): # same as above but tests the constructor. self.u = Uri("") self.assertEqual(self.u.uri, "") self.assertIsNone(self.u.scheme) self.assertIsNone(self.u.username) self.assertIsNone(self.u.password) self.assertIsNone(self.u.hostname) self.assertIsNone(self.u.port) self.assertIsNone(self.u.path) self.assertIsNone(self.u.filename) self.assertIsNone(self.u.query) self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority) def test_none_uri_sets_attrs_to_none(self): self.u.uri = None self.assertEqual(self.u.uri, "") self.assertIsNone(self.u.scheme) self.assertIsNone(self.u.username) self.assertIsNone(self.u.password) self.assertIsNone(self.u.hostname) self.assertIsNone(self.u.port) self.assertIsNone(self.u.path) self.assertIsNone(self.u.filename) self.assertIsNone(self.u.query) self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority) def test_none_uri_sets_attrs_to_none2(self): # same as above but tests the constructor. self.u = Uri(None) self.assertEqual(self.u.uri, "") self.assertIsNone(self.u.scheme) self.assertIsNone(self.u.username) self.assertIsNone(self.u.password) self.assertIsNone(self.u.hostname) self.assertIsNone(self.u.port) self.assertIsNone(self.u.path) self.assertIsNone(self.u.filename) self.assertIsNone(self.u.query) self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority) def test_ssm_uri(self): self.u = Uri("ssm:///path/to/my/parameter") self.assertEqual(self.u.uri, "ssm:///path/to/my/parameter") self.assertEqual(self.u.scheme, "ssm") self.assertIsNone(self.u.username) self.assertIsNone(self.u.password) self.assertIsNone(self.u.hostname) self.assertIsNone(self.u.port) self.assertEqual(self.u.path, "/path/to/my/parameter") self.assertEqual(self.u.filename, "parameter") self.assertIsNone(self.u.query) self.assertIsNone(self.u.fragment) self.assertIsNone(self.u.extension) self.assertIsNone(self.u.authority)