82 lines
3.3 KiB
Python
82 lines
3.3 KiB
Python
from pathlib import Path
|
|
|
|
from app.config import settings
|
|
from app.core.render_paths import (
|
|
ensure_group_writable_dir,
|
|
resolve_public_asset_url,
|
|
resolve_result_path,
|
|
result_path_to_storage_key,
|
|
result_path_to_public_url,
|
|
)
|
|
|
|
|
|
def test_result_path_to_public_url_for_canonical_render(monkeypatch, tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
render_file = upload_dir / "renders" / "line-1" / "bearing.png"
|
|
render_file.parent.mkdir(parents=True, exist_ok=True)
|
|
render_file.write_bytes(b"png")
|
|
monkeypatch.setattr(settings, "upload_dir", str(upload_dir))
|
|
|
|
result_path = str(render_file)
|
|
|
|
assert result_path_to_public_url(result_path, require_exists=True) == "/renders/line-1/bearing.png"
|
|
assert resolve_result_path(result_path) == render_file
|
|
assert resolve_public_asset_url("/renders/line-1/bearing.png") == render_file
|
|
|
|
|
|
def test_result_path_to_public_url_for_legacy_shared_render(monkeypatch, tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
render_file = upload_dir / "renders" / "line-2" / "legacy.png"
|
|
render_file.parent.mkdir(parents=True, exist_ok=True)
|
|
render_file.write_bytes(b"png")
|
|
monkeypatch.setattr(settings, "upload_dir", str(upload_dir))
|
|
|
|
legacy_path = "/shared/renders/line-2/legacy.png"
|
|
|
|
assert resolve_result_path(legacy_path) == render_file
|
|
assert result_path_to_public_url(legacy_path, require_exists=True) == "/renders/line-2/legacy.png"
|
|
|
|
|
|
def test_result_path_to_public_url_hides_missing_or_non_public_paths(monkeypatch, tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
step_render = upload_dir / "step_files" / "renders" / "line_123.png"
|
|
step_render.parent.mkdir(parents=True, exist_ok=True)
|
|
step_render.write_bytes(b"png")
|
|
monkeypatch.setattr(settings, "upload_dir", str(upload_dir))
|
|
|
|
missing_public = str(upload_dir / "renders" / "line-3" / "missing.png")
|
|
|
|
assert result_path_to_public_url(str(step_render), require_exists=True) is None
|
|
assert result_path_to_public_url(missing_public, require_exists=True) is None
|
|
|
|
|
|
def test_result_path_to_storage_key_normalizes_legacy_and_public_variants(monkeypatch, tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
render_file = upload_dir / "renders" / "line-4" / "normalized.png"
|
|
render_file.parent.mkdir(parents=True, exist_ok=True)
|
|
render_file.write_bytes(b"png")
|
|
monkeypatch.setattr(settings, "upload_dir", str(upload_dir))
|
|
|
|
assert result_path_to_storage_key(str(render_file)) == "renders/line-4/normalized.png"
|
|
assert result_path_to_storage_key("/shared/renders/line-4/normalized.png") == "renders/line-4/normalized.png"
|
|
assert result_path_to_storage_key("/renders/line-4/normalized.png") == "renders/line-4/normalized.png"
|
|
|
|
|
|
def test_ensure_group_writable_dir_normalizes_existing_upload_tree(monkeypatch, tmp_path):
|
|
upload_dir = tmp_path / "uploads"
|
|
target = upload_dir / "step_files" / "renders"
|
|
target.mkdir(parents=True, exist_ok=True)
|
|
upload_dir.chmod(0o755)
|
|
(upload_dir / "step_files").chmod(0o755)
|
|
target.chmod(0o755)
|
|
monkeypatch.setattr(settings, "upload_dir", str(upload_dir))
|
|
|
|
ensured = ensure_group_writable_dir(target)
|
|
|
|
assert ensured == target
|
|
for path in (upload_dir, upload_dir / "step_files", target):
|
|
mode = path.stat().st_mode & 0o7777
|
|
assert mode & 0o020
|
|
assert mode & 0o010
|
|
assert mode & 0o2000
|