From f21cbfff64bad26b7d80b8b8a1f918611dfa82c3 Mon Sep 17 00:00:00 2001 From: Daniel Kesselberg Date: Thu, 15 Jun 2023 20:14:17 +0200 Subject: [PATCH] feat: add detected mime type to exception The mimetype may not match the file extension. Helps the user to find out why a provided image is not accepted. Signed-off-by: Daniel Kesselberg --- apps/theming/lib/ImageManager.php | 2 +- apps/theming/tests/ImageManagerTest.php | 26 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/apps/theming/lib/ImageManager.php b/apps/theming/lib/ImageManager.php index 87123a6f7c9..f609e5ef9d4 100644 --- a/apps/theming/lib/ImageManager.php +++ b/apps/theming/lib/ImageManager.php @@ -240,7 +240,7 @@ class ImageManager { $supportedFormats = $this->getSupportedUploadImageFormats($key); $detectedMimeType = mime_content_type($tmpFile); if (!in_array($detectedMimeType, $supportedFormats, true)) { - throw new \Exception('Unsupported image type'); + throw new \Exception('Unsupported image type: ' . $detectedMimeType); } if ($key === 'background' && $this->shouldOptimizeBackgroundImage($detectedMimeType, filesize($tmpFile))) { diff --git a/apps/theming/tests/ImageManagerTest.php b/apps/theming/tests/ImageManagerTest.php index 22432a00103..e0e00615edb 100644 --- a/apps/theming/tests/ImageManagerTest.php +++ b/apps/theming/tests/ImageManagerTest.php @@ -390,4 +390,30 @@ class ImageManagerTest extends TestCase { $this->imageManager->updateImage($key, $tmpFile); } + + public function testUnsupportedImageType(): void { + $this->expectException(\Exception::class); + $this->expectExceptionMessage('Unsupported image type: text/plain'); + + $file = $this->createMock(ISimpleFile::class); + $folder = $this->createMock(ISimpleFolder::class); + $oldFile = $this->createMock(ISimpleFile::class); + + $folder->expects($this->any()) + ->method('getFile') + ->willReturn($oldFile); + + $this->rootFolder + ->expects($this->any()) + ->method('getFolder') + ->with('images') + ->willReturn($folder); + + $folder->expects($this->once()) + ->method('newFile') + ->with('favicon') + ->willReturn($file); + + $this->imageManager->updateImage('favicon', __DIR__ . '/../../../tests/data/lorem.txt'); + } } -- 2.39.5