linguaielts-api / backend /tests /test_storage.py
phuc1st
Optimize content loading and asset caching
dc17d3b
Raw
History Blame Contribute Delete
972 Bytes
"""Tests for local object storage backend."""
import tempfile
from pathlib import Path
from app.core.storage import LocalStorageBackend, S3StorageBackend, avatar_key
def test_local_storage_put_and_url():
with tempfile.TemporaryDirectory() as tmp:
storage = LocalStorageBackend(base_dir=tmp, url_prefix="/uploads")
url = storage.put_bytes("avatars/test.jpg", b"data", "image/jpeg")
assert url == "/uploads/avatars/test.jpg"
assert storage.public_url("avatars/test.jpg") == "/uploads/avatars/test.jpg"
assert (Path(tmp) / "avatars" / "test.jpg").read_bytes() == b"data"
def test_avatar_key_format():
assert avatar_key(5, "abc.jpg") == "avatars/user-5-abc.jpg"
def test_s3_public_url_normalizes_key_slashes():
storage = object.__new__(S3StorageBackend)
storage._public_base = "https://cdn.example.com"
assert storage.public_url("/assets/images/test.png") == "https://cdn.example.com/assets/images/test.png"