34 lines
1,013 B
Python
34 lines
1,013 B
Python
|
|
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"
|