Skip to content

Commit

Permalink
Normalize images loaded from storage
Browse files Browse the repository at this point in the history
  • Loading branch information
thomas-brx authored and devppjr committed Jul 11, 2023
1 parent bb57115 commit 7915742
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
47 changes: 47 additions & 0 deletions tests/handlers/test_base_handler_normalize_images.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
from unittest.mock import patch

from preggy import expect
from tornado.testing import gen_test

from tests.base import TestCase
from tests.fixtures.images import default_image
from thumbor.engines.pil import Engine
from thumbor.loaders import LoaderResult


class BaseHandlerLoadingNormalizeImagesTestCase(TestCase):
def setUp(self):
super().setUp()
self.storage_patcher = patch(
"thumbor.storages.file_storage.Storage"
)
self.storage_mock = self.storage_patcher.start()
self.loader_patcher = patch("thumbor.loaders.http_loader")
self.loader_mock = self.loader_patcher.start()

def tearDown(self):
self.storage_patcher.stop()
self.loader_patcher.stop()

@gen_test
async def test_can_normalize_image_loaded_from_storage(self):
self.storage_mock.get.return_value = default_image()
self.context.config.MAX_HEIGHT = 1
response = await self.async_fetch("/unsafe/smart/image.jpg")
expect(response.code).to_equal(200)

engine = Engine(self.context)
engine.load(response.body, None)
expect(engine.size).to_equal((1, 1))

@gen_test
async def test_can_normalize_image_loaded_from_upstream(self):
self.storage_mock.get.return_value = None
self.loader_mock.load.return_value = LoaderResult(buffer=default_image())
self.context.config.MAX_HEIGHT = 1
response = await self.async_fetch("/unsafe/smart/image.jpg")
expect(response.code).to_equal(200)

engine = Engine(self.context)
engine.load(response.body, None)
expect(engine.size).to_equal((1, 1))
3 changes: 3 additions & 0 deletions thumbor/handlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,9 @@ async def get_image(self):

return

if not normalized:
normalized = engine.normalize()

self.context.transformer = Transformer(self.context)

await self.filters_runner.apply_filters(
Expand Down

0 comments on commit 7915742

Please sign in to comment.