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'), )