def test_ufid_tag_checks(self): ufid_tag = mutagen.id3.UFID(owner="bad", data="bad") self.au_file.mutagen_id3.add(ufid_tag) self.assertTagError(checker.ERROR_TAG_MISSING_REQUIRED + "UFID") ufid_tag.owner = constants.UFID_OWNER_IDENTIFIER # Need to re-add since changing the owner also changes the # hash key. A very annoying corner case, more proof that # mutagen's "just make it look like a dict" strategy is # ultimately misguided. self.au_file.mutagen_id3.add(ufid_tag) self.assertTagError(checker.ERROR_UFID_BAD_MALFORMED) bad_ufid_data = ufid.ufid(TEST_VOL + 1, TEST_TS, TEST_FP) ufid_tag.data = bad_ufid_data self.assertTagError(checker.ERROR_UFID_BAD_VOLUME) bad_ufid_data = ufid.ufid(TEST_VOL, TEST_TS + 1, TEST_FP) ufid_tag.data = bad_ufid_data self.assertTagError(checker.ERROR_UFID_BAD_TIMESTAMP) bad_ufid_data = ufid.ufid(TEST_VOL, TEST_TS, "2" * 40) ufid_tag.data = bad_ufid_data self.assertTagError(checker.ERROR_UFID_BAD_FINGERPRINT) ufid_tag.data = self.au_file.ufid() errors = checker.find_tags_errors(self.au_file) self.assertNoTagError(checker.ERROR_TAG_MISSING_REQUIRED + "UFID") self.assertNoTagError(checker.ERROR_UFID_BAD_OWNER) self.assertNoTagError(checker.ERROR_UFID_BAD_MALFORMED) self.assertNoTagError(checker.ERROR_UFID_BAD_VOLUME) self.assertNoTagError(checker.ERROR_UFID_BAD_TIMESTAMP) self.assertNoTagError(checker.ERROR_UFID_BAD_FINGERPRINT)
def test_basic(self): test_vol = 11 test_ts_human = "20090102-030405" test_ts = timestamp.parse_human_readable(test_ts_human) test_fp = "1234" * 10 # The UFID prefix should contain the volume and timestamp info. self.assertEqual( "vol0b/%s/" % test_ts_human, # 0b = 11 ufid.ufid_prefix(test_vol, test_ts)) # The UFID should equal the UFID prefix + the fingerprint. test_ufid = ufid.ufid(test_vol, test_ts, test_fp) self.assertEqual( ufid.ufid_prefix(test_vol, test_ts) + test_fp, test_ufid) # We should be able to make a tag too. test_tag = ufid.ufid_tag(test_vol, test_ts, test_fp) self.assertEqual("UFID", test_tag.FrameID) self.assertEqual(constants.UFID_OWNER_IDENTIFIER, test_tag.owner) self.assertEqual(test_ufid, test_tag.data) # Make sure we can parse information back out of the test UFID. vol, ts, fp = ufid.parse(test_ufid) self.assertEqual(test_vol, vol) self.assertEqual(test_ts, ts) self.assertEqual(test_fp, fp) # Raise ValueError if we try to parse a bad UFID. self.assertRaises(ValueError, ufid.parse, "bad") self.assertRaises(ValueError, ufid.parse, "vol01/20091399-666666/" + "1" * 40) self.assertRaises(ValueError, ufid.parse, "vol01/20991001-123456" + "1" * 40)
def test_basic(self): test_vol = 11 test_ts_human = "20090102-030405" test_ts = timestamp.parse_human_readable(test_ts_human) test_fp = "1234" * 10 # The UFID prefix should contain the volume and timestamp info. self.assertEqual("vol0b/%s/" % test_ts_human, ufid.ufid_prefix(test_vol, test_ts)) # 0b = 11 # The UFID should equal the UFID prefix + the fingerprint. test_ufid = ufid.ufid(test_vol, test_ts, test_fp) self.assertEqual(ufid.ufid_prefix(test_vol, test_ts) + test_fp, test_ufid) # We should be able to make a tag too. test_tag = ufid.ufid_tag(test_vol, test_ts, test_fp) self.assertEqual("UFID", test_tag.FrameID) self.assertEqual(constants.UFID_OWNER_IDENTIFIER, test_tag.owner) self.assertEqual(test_ufid, test_tag.data) # Make sure we can parse information back out of the test UFID. vol, ts, fp = ufid.parse(test_ufid) self.assertEqual(test_vol, vol) self.assertEqual(test_ts, ts) self.assertEqual(test_fp, fp) # Raise ValueError if we try to parse a bad UFID. self.assertRaises(ValueError, ufid.parse, "bad") self.assertRaises(ValueError, ufid.parse, "vol01/20091399-666666/" + "1" * 40) self.assertRaises(ValueError, ufid.parse, "vol01/20991001-123456" + "1" * 40)
def ufid(self): """Returns this file's unique identifier. This call will fail if has_ufid() returns False. """ return ufid.ufid(self.volume, self.import_timestamp, self.fingerprint)
talb = mutagen.id3.TALB(text=["TALB %d" % n]) au_file.mutagen_id3.add(talb) trck = mutagen.id3.TRCK(text=["%d/7" % ((n % 7) + 1)]) au_file.mutagen_id3.add(trck) talb = mutagen.id3.TPUB(text=[" Bad whitespace "]) au_file.mutagen_id3.add(talb) # Finally return the thing. return au_file get_test_audio_file.__test__ = False # not a test itself TEST_VOL = 65 TEST_TS = 1230430574 TEST_FP = "7" * 40 TEST_UFID = ufid.ufid(TEST_VOL, TEST_TS, TEST_FP) TEST_UFID_PREFIX = ufid.ufid_prefix(TEST_VOL, TEST_TS) class AudioFileTest(unittest.TestCase): def test_basic(self): # Assemble a basic test object. au_file = audio_file.AudioFile() au_file.volume = TEST_VOL au_file.import_timestamp = TEST_TS au_file.fingerprint = TEST_FP # Check the generated UFID. self.assertEqual(TEST_UFID, au_file.ufid()) # Check the generated UFID tag.
talb = mutagen.id3.TALB(text=["TALB %d" % n]) au_file.mutagen_id3.add(talb) trck = mutagen.id3.TRCK(text=["%d/7" % ((n % 7) + 1)]) au_file.mutagen_id3.add(trck) talb = mutagen.id3.TPUB(text=[" Bad whitespace "]) au_file.mutagen_id3.add(talb) # Finally return the thing. return au_file get_test_audio_file.__test__ = False # not a test itself TEST_VOL = 65 TEST_TS = 1230430574 TEST_FP = "7" * 40 TEST_UFID = ufid.ufid(TEST_VOL, TEST_TS, TEST_FP) TEST_UFID_PREFIX = ufid.ufid_prefix(TEST_VOL, TEST_TS) class AudioFileTest(unittest.TestCase): def test_basic(self): # Assemble a basic test object. au_file = audio_file.AudioFile() au_file.volume = TEST_VOL au_file.import_timestamp = TEST_TS au_file.fingerprint = TEST_FP # Check the generated UFID. self.assertEqual(TEST_UFID, au_file.ufid())