myYouTube/tests/test_metube_client.py

34 lines
1,013 B
Python
Raw Normal View History

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"