import unittest from blender_asset_tracer.pack import shaman class ParseEndpointTest(unittest.TestCase): def test_path_slashyness(self): self.assertEqual( ("https://endpoint/", "123"), shaman.parse_endpoint("shaman://endpoint#123"), ) self.assertEqual( ("https://endpoint/", "123"), shaman.parse_endpoint("shaman://endpoint/#123"), ) self.assertEqual( ("https://endpoint/root", "123"), shaman.parse_endpoint("shaman://endpoint/root#123"), ) self.assertEqual( ("https://endpoint/root/is/longer/", "123"), shaman.parse_endpoint("shaman://endpoint/root/is/longer/#123"), ) def test_schemes_with_plus(self): self.assertEqual( ("https://endpoint/", "123"), shaman.parse_endpoint("shaman+https://endpoint/#123"), ) self.assertEqual( ("http://endpoint/", "123"), shaman.parse_endpoint("shaman+http://endpoint/#123"), ) def test_checkout_ids(self): self.assertEqual( ("https://endpoint/", ""), shaman.parse_endpoint("shaman+https://endpoint/"), ) # Not a valid ID, but the parser should handle it gracefully anyway self.assertEqual( ("http://endpoint/", "ïđ"), shaman.parse_endpoint("shaman+http://endpoint/#%C3%AF%C4%91"), )