generated from john/python-template
79 lines
2.9 KiB
Python
79 lines
2.9 KiB
Python
from transcription.ui.components.media_urls import public_media_path_label
|
|
from transcription.ui.components.media_urls import resolve_media_url
|
|
|
|
|
|
def test_resolve_media_url_rejects_absolute_filesystem_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
absolute_path = upload_dir / "documents" / "abc" / "page.jpg"
|
|
absolute_path.parent.mkdir(parents=True, exist_ok=True)
|
|
absolute_path.write_bytes(b"x")
|
|
|
|
resolved = resolve_media_url(str(absolute_path), upload_dir=upload_dir, base_url="http://localhost:8000")
|
|
assert resolved is None
|
|
|
|
|
|
def test_resolve_media_url_rejects_stale_relative_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
|
|
resolved = resolve_media_url(
|
|
"documents/missing/page.jpg",
|
|
upload_dir=upload_dir,
|
|
base_url="http://localhost:8000",
|
|
)
|
|
assert resolved is None
|
|
|
|
|
|
def test_resolve_media_url_rejects_non_canonical_relative_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
resolved = resolve_media_url("shared-name.jpg", upload_dir=upload_dir, base_url="http://localhost:8000")
|
|
assert resolved is None
|
|
|
|
|
|
def test_resolve_media_url_accepts_existing_upload_relative_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
managed_path = upload_dir / "documents" / "abc" / "page.jpg"
|
|
managed_path.parent.mkdir(parents=True, exist_ok=True)
|
|
managed_path.write_bytes(b"x")
|
|
|
|
resolved = resolve_media_url(
|
|
"documents/abc/page.jpg",
|
|
upload_dir=upload_dir,
|
|
base_url="http://localhost:8000",
|
|
)
|
|
assert resolved == "http://localhost:8000/uploads/documents/abc/page.jpg"
|
|
|
|
|
|
def test_resolve_media_url_accepts_existing_persons_relative_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
managed_path = upload_dir / "persons" / "person" / "seeded.png"
|
|
managed_path.parent.mkdir(parents=True, exist_ok=True)
|
|
managed_path.write_bytes(b"x")
|
|
|
|
resolved = resolve_media_url(
|
|
"persons/person/seeded.png",
|
|
upload_dir=upload_dir,
|
|
base_url="http://localhost:8000",
|
|
)
|
|
assert resolved == "http://localhost:8000/uploads/persons/person/seeded.png"
|
|
|
|
|
|
def test_public_media_path_label_hides_unmanaged_absolute_path(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
unmanaged_path = tmp_path / "other-root" / "secret" / "page.jpg"
|
|
|
|
label = public_media_path_label(str(unmanaged_path), upload_dir=upload_dir)
|
|
assert label == "page.jpg"
|
|
|
|
|
|
def test_public_media_path_label_preserves_upload_relative_route(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
label = public_media_path_label("documents/person-1/photo.png", upload_dir=upload_dir)
|
|
assert label == "/uploads/documents/person-1/photo.png"
|
|
|
|
|
|
def test_public_media_path_label_keeps_existing_upload_route(tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
assert public_media_path_label("/uploads/documents/d1/page.png", upload_dir=upload_dir) == (
|
|
"/uploads/documents/d1/page.png"
|
|
)
|