import os import pytest from funkwhale_api.music import utils DATA_DIR = os.path.dirname(os.path.abspath(__file__)) def test_guess_mimetype_try_using_extension(factories, mocker): mocker.patch( 'magic.from_buffer', return_value='audio/mpeg') f = factories['music.TrackFile'].build( audio_file__filename='test.ogg') assert utils.guess_mimetype(f.audio_file) == 'audio/mpeg' def test_guess_mimetype_try_using_extension_if_fail(factories, mocker): mocker.patch( 'magic.from_buffer', return_value='application/octet-stream') f = factories['music.TrackFile'].build( audio_file__filename='test.mp3') assert utils.guess_mimetype(f.audio_file) == 'audio/mpeg' @pytest.mark.parametrize('name, expected', [ ('sample.flac', {'bitrate': 1608000, 'length': 0.001}), ('test.mp3', {'bitrate': 8000, 'length': 267.70285714285717}), ('test.ogg', {'bitrate': 128000, 'length': 229.18304166666667}), ]) def test_get_audio_file_data(name, expected): path = os.path.join(DATA_DIR, name) with open(path, 'rb') as f: result = utils.get_audio_file_data(f) assert result == expected