29 lines
772 B
Python
29 lines
772 B
Python
from __future__ import annotations
|
|
|
|
import io
|
|
|
|
import pytest
|
|
from PIL import Image
|
|
|
|
from app.storage import ScreenshotError, prepare_image
|
|
|
|
|
|
def test_prepare_image_removes_metadata() -> None:
|
|
source = Image.new("RGB", (32, 24), "#12383b")
|
|
exif = Image.Exif()
|
|
exif[0x010E] = "private note"
|
|
raw = io.BytesIO()
|
|
source.save(raw, format="JPEG", exif=exif)
|
|
|
|
cleaned, extension, mime = prepare_image(raw.getvalue())
|
|
|
|
with Image.open(io.BytesIO(cleaned)) as result:
|
|
assert result.getexif() == {}
|
|
assert result.size == (32, 24)
|
|
assert (extension, mime) == ("jpg", "image/jpeg")
|
|
|
|
|
|
def test_prepare_image_rejects_non_image() -> None:
|
|
with pytest.raises(ScreenshotError, match="valid image"):
|
|
prepare_image(b"not an image")
|