miniuri/test_miniuri.py
russellballestrini e11161ea14 Add test for relative path uris and ssm
fix code to make relative paths work again.

changed miniuri/miniuri.py
changed setup.py
changed test_miniuri.py
2019-03-02 09:20:26 -05:00

273 lines
9.7 KiB
Python

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)