diff --git a/tests/test_api_assets.py b/tests/test_api_assets.py index 0d7d6442..6938e876 100644 --- a/tests/test_api_assets.py +++ b/tests/test_api_assets.py @@ -16,6 +16,7 @@ def before_all() -> None: conditional_download(get_test_examples_directory(), [ 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.jpg', + 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.mp3', 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' ]) @@ -78,6 +79,24 @@ def test_upload_asset(test_client : TestClient) -> None: assert upload_response.status_code == 201 + audio_path = get_test_example_file('source.mp3') + + with open(audio_path, 'rb') as audio_file: + audio_content = audio_file.read() + upload_response = test_client.post('/assets?type=source', headers = + { + 'Authorization': 'Bearer ' + access_token + }, files = + [ + ('file', ('source.mp3', audio_content, 'audio/mpeg')) + ]) + upload_body = upload_response.json() + asset = asset_store.get_asset(session_id, upload_body.get('asset_ids')[0]) + + assert asset.get('media') == 'audio' + assert asset.get('type') == 'source' + assert upload_response.status_code == 201 + upload_response = test_client.post('/assets?type=invalid', headers = { 'Authorization': 'Bearer ' + access_token diff --git a/tests/test_asset_helper.py b/tests/test_asset_helper.py new file mode 100644 index 00000000..54f08774 --- /dev/null +++ b/tests/test_asset_helper.py @@ -0,0 +1,44 @@ +import pytest + +from facefusion.apis.asset_helper import detect_media_type, extract_audio_metadata, extract_image_metadata, extract_video_metadata +from facefusion.download import conditional_download +from .helper import get_test_example_file, get_test_examples_directory + + +@pytest.fixture(scope = 'module', autouse = True) +def before_all() -> None: + conditional_download(get_test_examples_directory(), + [ + 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.jpg', + 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/source.mp3', + 'https://github.com/facefusion/facefusion-assets/releases/download/examples-3.0.0/target-240p.mp4' + ]) + + +def test_detect_media_type() -> None: + assert detect_media_type(get_test_example_file('source.jpg')) == 'image' + assert detect_media_type(get_test_example_file('target-240p.mp4')) == 'video' + assert detect_media_type(get_test_example_file('source.mp3')) == 'audio' + + +def test_extract_image_metadata() -> None: + metadata = extract_image_metadata(get_test_example_file('source.jpg')) + + assert metadata.get('resolution') == (1024, 1024) + + +def test_extract_video_metadata() -> None: + metadata = extract_video_metadata(get_test_example_file('target-240p.mp4')) + + assert metadata.get('duration') == 10.8 + assert metadata.get('frame_total') == 270 + assert metadata.get('fps') == 25.0 + assert metadata.get('resolution') == (426, 226) + + +def test_extract_audio_metadata() -> None: + metadata = extract_audio_metadata(get_test_example_file('source.mp3')) + + assert metadata.get('duration') == 3.7877708333333335 + assert metadata.get('sample_rate') == 44100 + assert metadata.get('channels') == 1