sintonia/analyzer/tests/metadata_analyzer_test.py

65 lines
1.6 KiB
Python
Raw Normal View History

2021-08-30 21:23:48 +02:00
from datetime import timedelta
2021-09-07 12:31:37 +02:00
from unittest import mock
2021-06-04 22:43:52 +02:00
import mutagen
import pytest
2020-01-21 08:13:42 +01:00
from airtime_analyzer.metadata_analyzer import MetadataAnalyzer
2021-05-27 16:23:02 +02:00
2021-08-30 21:23:48 +02:00
from .fixtures import FILE_INVALID_DRM, FILE_INVALID_TXT, FILES_TAGGED, FixtureMeta
@pytest.mark.parametrize(
"params,exception",
[
((42, dict()), TypeError),
(("foo", 3), TypeError),
],
)
def test_analyze_wrong_params(params, exception):
with pytest.raises(exception):
MetadataAnalyzer.analyze(*params)
@pytest.mark.parametrize(
2021-08-30 21:23:48 +02:00
"filepath,metadata",
map(lambda i: (str(i.path), i.metadata), FILES_TAGGED),
)
2021-08-30 21:23:48 +02:00
def test_analyze(filepath: str, metadata: dict):
found = MetadataAnalyzer.analyze(filepath, dict())
2021-05-27 16:23:02 +02:00
2021-08-30 21:23:48 +02:00
# Mutagen does not support wav files yet
if filepath.endswith("wav"):
return
2021-08-30 21:23:48 +02:00
assert len(found["md5"]) == 32
del found["md5"]
2021-05-27 16:23:02 +02:00
2021-08-30 21:23:48 +02:00
# Handle track formatted length/cueout
assert metadata["length"] in found["length"]
assert metadata["length"] in found["cueout"]
del metadata["length"]
del found["length"]
del found["cueout"]
2021-08-30 21:23:48 +02:00
# mp3,ogg,flac files does not support comments yet
if not filepath.endswith("m4a"):
del metadata["comment"]
2021-08-30 21:23:48 +02:00
assert found == metadata
2021-08-30 21:23:48 +02:00
def test_invalid_wma():
metadata = MetadataAnalyzer.analyze(str(FILE_INVALID_DRM), dict())
assert metadata["mime"] == "audio/x-ms-wma"
2021-05-27 16:23:02 +02:00
def test_unparsable_file():
2021-08-30 21:23:48 +02:00
metadata = MetadataAnalyzer.analyze(str(FILE_INVALID_TXT), dict())
2021-06-08 14:21:35 +02:00
assert metadata == {
"filesize": 10,
"ftype": "audioclip",
"hidden": False,
"md5": "4d5e4b1c8e8febbd31fa9ce7f088beae",
"mime": "text/plain",
}