def testUUIDstrInvalidUUID(self): with self.assertRaises(Exception): # Too short generate.arcp_random(uuid="5da78af6") with self.assertRaises(Exception): # empty generate.arcp_random(uuid="")
def testRandom(self): u = generate.arcp_random() u2 = generate.arcp_random() # always fresh self.assertNotEqual(u, u2) self.assertTrue(u.startswith("arcp://uuid,")) self.assertTrue(u.endswith("/"))
def testUUIDstr(self): self.assertEqual( "arcp://uuid,8c36d39a-18be-4aa8-b1ce-fef330b00a28/", generate.arcp_random(uuid="8c36d39a-18be-4aa8-b1ce-fef330b00a28")) with self.assertRaises(Exception): # UUID version must be 4 generate.arcp_random(uuid="dbc0802a-0682-11e8-9895-b8ca3ad10ac0")
def testRandomPath(self): u = generate.arcp_random("/folder/file.txt") self.assertTrue(u.startswith("arcp://uuid,")) self.assertTrue(u.endswith("/folder/file.txt")) self.assertEqual( # initial / in path is optional len(generate.arcp_random("file.txt")), len(generate.arcp_random("/file.txt")))
def testUUIDstrPathQueryFrag(self): self.assertEqual( "arcp://uuid,8c36d39a-18be-4aa8-b1ce-fef330b00a28/folder/file.txt?q=s#frag", generate.arcp_random("/folder/file.txt", "q=s", "frag", uuid="8c36d39a-18be-4aa8-b1ce-fef330b00a28"))
def testRandomValidUUID(self): u = generate.arcp_random() # Extract UUID to ensure it is v4 uuidStr = u.replace("arcp://uuid,", "").strip("/") # Ensure RFC4122 compliance self.assertIsNotNone(uuid_re.match(uuidStr)) # ensure lower-case in output self.assertEqual(uuidStr, uuidStr.lower()) # must be valid UUID uuid = UUID(uuidStr) # must be RFC_4122 variant, version 4 (random) self.assertEqual(RFC_4122, uuid.variant) self.assertEqual(4, uuid.version)
def resolve_id(self, relative_id): return generate.arcp_random(relative_id.strip('./'), uuid=self.uuid)
def testUUIDPath(self): self.assertEqual( "arcp://uuid,8c36d39a-18be-4aa8-b1ce-fef330b00a28/folder/file.txt", generate.arcp_random("/folder/file.txt", uuid=TEST_UUID_v4))
def testUUID(self): self.assertEqual("arcp://uuid,8c36d39a-18be-4aa8-b1ce-fef330b00a28/", generate.arcp_random(uuid=TEST_UUID_v4)) # UUID version must be 4 with self.assertRaises(Exception): generate.arcp_random(uuid=TEST_UUID_v1)
def testRandomPathQueryFrag(self): u = generate.arcp_random("/folder/file.txt", "a=b&c=d", "frag") self.assertTrue(u.startswith("arcp://uuid,")) self.assertTrue(u.endswith("/folder/file.txt?a=b&c=d#frag"))
def testRandomFrag(self): u = generate.arcp_random(fragment="frag") self.assertTrue(u.startswith("arcp://uuid,")) self.assertTrue(u.endswith("/#frag"))
def testRandomQuery(self): u = generate.arcp_random(query="q=a") self.assertTrue(u.startswith("arcp://uuid,")) self.assertTrue(u.endswith("/?q=a"))