from pathlib import Path from types import SimpleNamespace from app.services.storage_service import StorageService def test_persist_dataset_file_records_metadata(monkeypatch, tmp_path) -> None: monkeypatch.setattr( "app.services.storage_service.get_settings", lambda: SimpleNamespace(storage_root=str(tmp_path)), ) metadata = StorageService.persist_dataset_file( project_id="project-123", dataset_id="dataset-456", dataset_type="vector", original_filename="../weird name!@#.geojson", content=b"example-bytes", content_type="application/geo+json", ) assert metadata["original_filename"] == "weird name___.geojson" assert metadata["stored_filename"] == "dataset-456_weird name___.geojson" assert metadata["content_type"] == "application/geo+json" assert metadata["size_bytes"] == 13 assert len(metadata["checksum_sha256"]) == 64 assert Path(metadata["storage_path"]).exists() assert str(Path(tmp_path, "uploads", "project-123", "vector", "dataset-456")) in metadata["storage_path"]