mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-10-31 10:12:21 +01:00
fix(gallery): answer 400 for a missing or invalid image on the image-edit routes (#6818)
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import asyncio
|
||||
import base64
|
||||
import io
|
||||
|
||||
import pytest
|
||||
from fastapi import HTTPException
|
||||
from PIL import Image
|
||||
|
||||
import routes.gallery_routes as gallery
|
||||
|
||||
ROUTES = ['sharpen', 'remove-bg', 'denoise', 'upscale-local', 'enhance-face']
|
||||
|
||||
|
||||
def route(name):
|
||||
return next(r for r in gallery.setup_gallery_routes().routes if r.path == f'/api/image/{name}')
|
||||
|
||||
|
||||
def call(name, monkeypatch, body):
|
||||
monkeypatch.setattr(gallery, 'require_privilege', lambda *args: 'alice')
|
||||
|
||||
class Request:
|
||||
async def json(self):
|
||||
return body
|
||||
|
||||
return asyncio.run(route(name).endpoint(Request()))
|
||||
|
||||
|
||||
@pytest.mark.parametrize('name', ROUTES)
|
||||
@pytest.mark.parametrize('body', [
|
||||
{},
|
||||
{'image': '!!notb64'},
|
||||
{'image': base64.b64encode(b'hello').decode()},
|
||||
])
|
||||
def test_bad_image_is_a_client_error(name, body, monkeypatch):
|
||||
with pytest.raises(HTTPException) as exc:
|
||||
call(name, monkeypatch, body)
|
||||
assert exc.value.status_code == 400
|
||||
|
||||
|
||||
def test_sharpen_still_accepts_a_valid_image(monkeypatch):
|
||||
output = io.BytesIO()
|
||||
Image.new('RGB', (4, 4), 'red').save(output, format='PNG')
|
||||
result = call('sharpen', monkeypatch, {'image': base64.b64encode(output.getvalue()).decode()})
|
||||
assert Image.open(io.BytesIO(base64.b64decode(result['image']))).size == (4, 4)
|
||||
Reference in New Issue
Block a user