]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix tests 23024/head
authorJulius Härtl <jus@bitgrid.net>
Thu, 24 Sep 2020 06:20:03 +0000 (08:20 +0200)
committerJulius Härtl <jus@bitgrid.net>
Thu, 24 Sep 2020 06:22:07 +0000 (08:22 +0200)
Signed-off-by: Julius Härtl <jus@bitgrid.net>
apps/theming/tests/Controller/ThemingControllerTest.php
apps/theming/tests/ImageManagerTest.php

index 6fc5cf28fbf244283e8d574454a5dec9520e922c..5c6763cdd17fea30bb2aa6b230e38e5b82ffcc40 100644 (file)
@@ -47,34 +47,32 @@ use OCP\AppFramework\Utility\ITimeFactory;
 use OCP\Files\IAppData;
 use OCP\Files\NotFoundException;
 use OCP\Files\SimpleFS\ISimpleFile;
-use OCP\Files\SimpleFS\ISimpleFolder;
 use OCP\IConfig;
 use OCP\IL10N;
 use OCP\IRequest;
 use OCP\ITempManager;
 use OCP\IURLGenerator;
+use PHPUnit\Framework\MockObject\MockObject;
 use Test\TestCase;
 
 class ThemingControllerTest extends TestCase {
-       /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IRequest|MockObject */
        private $request;
-       /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IConfig|MockObject */
        private $config;
-       /** @var ThemingDefaults|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var ThemingDefaults|MockObject */
        private $themingDefaults;
-       /** @var \OCP\AppFramework\Utility\ITimeFactory */
-       private $timeFactory;
-       /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IL10N|MockObject */
        private $l10n;
        /** @var ThemingController */
        private $themingController;
        /** @var ITempManager */
        private $tempManager;
-       /** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IAppManager|MockObject */
        private $appManager;
-       /** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IAppData|MockObject */
        private $appData;
-       /** @var ImageManager|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var ImageManager|MockObject */
        private $imageManager;
        /** @var SCSSCacher */
        private $scssCacher;
@@ -93,12 +91,12 @@ class ThemingControllerTest extends TestCase {
                $this->urlGenerator = $this->createMock(IURLGenerator::class);
                $this->imageManager = $this->createMock(ImageManager::class);
 
-               $this->timeFactory = $this->createMock(ITimeFactory::class);
-               $this->timeFactory->expects($this->any())
+               $timeFactory = $this->createMock(ITimeFactory::class);
+               $timeFactory->expects($this->any())
                        ->method('getTime')
                        ->willReturn(123);
 
-               $this->overwriteService(ITimeFactory::class, $this->timeFactory);
+               $this->overwriteService(ITimeFactory::class, $timeFactory);
 
                $this->themingController = new ThemingController(
                        'theming',
@@ -287,12 +285,9 @@ class ThemingControllerTest extends TestCase {
                                return $str;
                        });
 
-               $folder = $this->createMock(ISimpleFolder::class);
-               $this->appData
-                       ->expects($this->once())
-                       ->method('getFolder')
-                       ->with('images')
-                       ->willReturn($folder);
+               $this->imageManager->expects($this->once())
+                       ->method('updateImage')
+                       ->willThrowException(new \Exception('Unsupported image type'));
 
                $expected = new DataResponse(
                        [
@@ -331,12 +326,9 @@ class ThemingControllerTest extends TestCase {
                                return $str;
                        });
 
-               $folder = $this->createMock(ISimpleFolder::class);
-               $this->appData
-                       ->expects($this->once())
-                       ->method('getFolder')
-                       ->with('images')
-                       ->willReturn($folder);
+               $this->imageManager->expects($this->once())
+                       ->method('updateImage')
+                       ->willThrowException(new \Exception('Unsupported image type'));
 
                $expected = new DataResponse(
                        [
@@ -392,31 +384,6 @@ class ThemingControllerTest extends TestCase {
                                return $str;
                        });
 
-
-               $file = $this->createMock(ISimpleFile::class);
-               $folder = $this->createMock(ISimpleFolder::class);
-               if ($folderExists) {
-                       $this->appData
-                               ->expects($this->once())
-                               ->method('getFolder')
-                               ->with('images')
-                               ->willReturn($folder);
-               } else {
-                       $this->appData
-                               ->expects($this->at(0))
-                               ->method('getFolder')
-                               ->with('images')
-                               ->willThrowException(new NotFoundException());
-                       $this->appData
-                               ->expects($this->at(1))
-                               ->method('newFolder')
-                               ->with('images')
-                               ->willReturn($folder);
-               }
-               $folder->expects($this->once())
-                       ->method('newFile')
-                       ->with('logo')
-                       ->willReturn($file);
                $this->urlGenerator->expects($this->once())
                        ->method('linkTo')
                        ->willReturn('serverCss');
@@ -424,6 +391,10 @@ class ThemingControllerTest extends TestCase {
                        ->method('getImageUrl')
                        ->with('logo')
                        ->willReturn('imageUrl');
+
+               $this->imageManager->expects($this->once())
+                       ->method('updateImage');
+
                $expected = new DataResponse(
                        [
                                'data' =>
@@ -468,30 +439,8 @@ class ThemingControllerTest extends TestCase {
                                return $str;
                        });
 
-               $file = $this->createMock(ISimpleFile::class);
-               $folder = $this->createMock(ISimpleFolder::class);
-               if ($folderExists) {
-                       $this->appData
-                               ->expects($this->once())
-                               ->method('getFolder')
-                               ->with('images')
-                               ->willReturn($folder);
-               } else {
-                       $this->appData
-                               ->expects($this->at(0))
-                               ->method('getFolder')
-                               ->with('images')
-                               ->willThrowException(new NotFoundException());
-                       $this->appData
-                               ->expects($this->at(1))
-                               ->method('newFolder')
-                               ->with('images')
-                               ->willReturn($folder);
-               }
-               $folder->expects($this->once())
-                       ->method('newFile')
-                       ->with('background')
-                       ->willReturn($file);
+               $this->imageManager->expects($this->once())
+                       ->method('updateImage');
 
                $this->urlGenerator->expects($this->once())
                        ->method('linkTo')
@@ -542,12 +491,9 @@ class ThemingControllerTest extends TestCase {
                                return $str;
                        });
 
-               $folder = $this->createMock(ISimpleFolder::class);
-               $this->appData
-                       ->expects($this->once())
-                       ->method('getFolder')
-                       ->with('images')
-                       ->willReturn($folder);
+               $this->imageManager->expects($this->once())
+                       ->method('updateImage')
+                       ->willThrowException(new \Exception('Unsupported image type'));
 
                $expected = new DataResponse(
                        [
@@ -717,9 +663,6 @@ class ThemingControllerTest extends TestCase {
                        ->method('linkTo')
                        ->with('', '/core/css/someHash-css-variables.scss')
                        ->willReturn('/nextcloudWebroot/core/css/someHash-css-variables.scss');
-               $this->imageManager->expects($this->once())
-                       ->method('delete')
-                       ->with($filename);
 
                $expected = new DataResponse(
                        [
index 82b4956c2129361d032f9e30a6006dc3244c0014..81f4a8b98db105b60571ec8af2371cb58155204c 100644 (file)
@@ -36,23 +36,27 @@ use OCP\Files\SimpleFS\ISimpleFolder;
 use OCP\ICacheFactory;
 use OCP\IConfig;
 use OCP\ILogger;
+use OCP\ITempManager;
 use OCP\IURLGenerator;
+use PHPUnit\Framework\MockObject\MockObject;
 use Test\TestCase;
 
 class ImageManagerTest extends TestCase {
 
-       /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IConfig|MockObject */
        protected $config;
-       /** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IAppData|MockObject */
        protected $appData;
        /** @var ImageManager */
        protected $imageManager;
-       /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var IURLGenerator|MockObject */
        private $urlGenerator;
-       /** @var ICacheFactory|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var ICacheFactory|MockObject */
        private $cacheFactory;
-       /** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
+       /** @var ILogger|MockObject */
        private $logger;
+       /** @var ITempManager|MockObject */
+       private $tempManager;
 
        protected function setUp(): void {
                parent::setUp();
@@ -61,12 +65,14 @@ class ImageManagerTest extends TestCase {
                $this->urlGenerator = $this->createMock(IURLGenerator::class);
                $this->cacheFactory = $this->createMock(ICacheFactory::class);
                $this->logger = $this->createMock(ILogger::class);
+               $this->tempManager = $this->createMock(ITempManager::class);
                $this->imageManager = new ImageManager(
                        $this->config,
                        $this->appData,
                        $this->urlGenerator,
                        $this->cacheFactory,
-                       $this->logger
+                       $this->logger,
+                       $this->tempManager
                );
        }
 
@@ -84,7 +90,7 @@ class ImageManagerTest extends TestCase {
        }
 
        public function mockGetImage($key, $file) {
-               /** @var \PHPUnit\Framework\MockObject\MockObject $folder */
+               /** @var MockObject $folder */
                $folder = $this->createMock(ISimpleFolder::class);
                if ($file === null) {
                        $folder->expects($this->once())
@@ -327,4 +333,56 @@ class ImageManagerTest extends TestCase {
                        ->willReturn($folders[2]);
                $this->imageManager->cleanup();
        }
+
+
+       public function dataUpdateImage() {
+               return [
+                       ['background', __DIR__ . '/../../../tests/data/testimage.png', true, true],
+                       ['background', __DIR__ . '/../../../tests/data/testimage.png', false, true],
+                       ['background', __DIR__ . '/../../../tests/data/testimage.jpg', true, true],
+                       ['logo', __DIR__ . '/../../../tests/data/testimagelarge.svg', true, false],
+               ];
+       }
+
+       /**
+        * @dataProvider dataUpdateImage
+        */
+       public function testUpdateImage($key, $tmpFile, $folderExists, $shouldConvert) {
+               $file = $this->createMock(ISimpleFile::class);
+               $folder = $this->createMock(ISimpleFolder::class);
+               $oldFile = $this->createMock(ISimpleFile::class);
+               $folder->expects($this->any())
+                       ->method('getFile')
+                       ->willReturn($oldFile);
+               if ($folderExists) {
+                       $this->appData
+                               ->expects($this->any())
+                               ->method('getFolder')
+                               ->with('images')
+                               ->willReturn($folder);
+               } else {
+                       $this->appData
+                               ->expects($this->any())
+                               ->method('getFolder')
+                               ->with('images')
+                               ->willThrowException(new NotFoundException());
+                       $this->appData
+                               ->expects($this->any())
+                               ->method('newFolder')
+                               ->with('images')
+                               ->willReturn($folder);
+               }
+               $folder->expects($this->once())
+                       ->method('newFile')
+                       ->with($key)
+                       ->willReturn($file);
+
+               if ($shouldConvert) {
+                       $this->tempManager->expects($this->once())
+                               ->method('getTemporaryFile')
+                               ->willReturn('/tmp/randomtempfile-theming');
+               }
+
+               $this->imageManager->updateImage($key, $tmpFile);
+       }
 }