import pytest from app.services.metube_client import MeTubeClient @pytest.fixture def client(): return MeTubeClient() def test_build_media_url_encodes_spaces(client): url = client.build_media_url("some file.mp4") assert url == f"{client.public_base_url}/download/some%20file.mp4" def test_build_media_url_strips_absolute_download_dir_prefix(client): filename = f"{client.download_dir}/nested/video.mp4" url = client.build_media_url(filename) assert url == f"{client.public_base_url}/download/nested/video.mp4" def test_build_media_url_rejects_path_traversal(client): assert client.build_media_url("../../etc/passwd") is None def test_build_media_url_none_for_empty(client): assert client.build_media_url("") is None assert client.build_media_url(None) is None def test_build_media_url_encodes_each_segment(client): url = client.build_media_url("dir with space/file#1.mp4") assert url == f"{client.public_base_url}/download/dir%20with%20space/file%231.mp4"