‪TYPO3CMS  11.5
ThumbnailControllerTest.php
Go to the documentation of this file.
1 <?php
2 
3 declare(strict_types=1);
4 
5 /*
6  * This file is part of the TYPO3 CMS project.
7  *
8  * It is free software; you can redistribute it and/or modify it under
9  * the terms of the GNU General Public License, either version 2
10  * of the License, or any later version.
11  *
12  * For the full copyright and license information, please read the
13  * LICENSE.txt file that was distributed with this source code.
14  *
15  * The TYPO3 project - inspiring people to share!
16  */
17 
19 
20 use PHPUnit\Framework\MockObject\MockObject;
25 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
26 
30 class ‪ThumbnailControllerTest extends UnitTestCase
31 {
35  protected MockObject ‪$subject;
36 
40  protected static array ‪$parameters = [
41  'fileId' => 123,
42  'configuration' => [
43  'width' => 64,
44  'height' => 64,
45  ],
46  ];
47 
48  protected function ‪setUp(): void
49  {
50  parent::setUp();
51  ‪$GLOBALS['TYPO3_CONF_VARS']['SYS']['encryptionKey']
52  = '4408d27a916d51e624b69af3554f516dbab61037a9f7b9fd6f81b4d3bedeccb6';
53  $this->subject = $this->createPartialMock(
54  ThumbnailController::class,
55  ['generateThumbnail']
56  );
57  }
58 
65  public function ‪exceptionIsThrownOnInvalidHMAC(string $hmac = null): void
66  {
67  $this->expectException(\InvalidArgumentException::class);
68  $this->expectExceptionCode(1534484203);
69 
70  $queryParameters = [
71  'parameters' => json_encode(static::$parameters),
72  'hmac' => $hmac,
73  ];
74 
75  $request = (new ‪ServerRequest())
76  ->withQueryParams($queryParameters);
77  $this->subject->render($request);
78  }
79 
84  {
85  return [
86  'null' => [null],
87  'empty' => [''],
88  'invalid' => ['invalid'],
89  ];
90  }
91 
98  public function ‪generateThumbnailIsInvoked(array ‪$parameters = null): void
99  {
100  $this->subject->expects(self::once())
101  ->method('generateThumbnail')
102  ->willReturn(new ‪Response());
103 
104  $queryParameters = [
105  'parameters' => json_encode(‪$parameters),
106  'hmac' => GeneralUtility::hmac(
107  json_encode(‪$parameters),
108  ThumbnailController::class
109  ),
110  ];
111 
112  $request = (new ‪ServerRequest())
113  ->withQueryParams($queryParameters);
114  self::assertInstanceOf(
115  Response::class,
116  $this->subject->render($request)
117  );
118  }
119 
124  {
125  return [
126  'null' => [null],
127  'empty array' => [[]],
128  'parameters' => [static::$parameters],
129  ];
130  }
131 }
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File
Definition: FileControllerTest.php:18
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\exceptionIsThrownOnInvalidHMAC
‪exceptionIsThrownOnInvalidHMAC(string $hmac=null)
Definition: ThumbnailControllerTest.php:65
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\$subject
‪MockObject $subject
Definition: ThumbnailControllerTest.php:35
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\setUp
‪setUp()
Definition: ThumbnailControllerTest.php:48
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\generateThumbnailIsInvokedDataProvider
‪array generateThumbnailIsInvokedDataProvider()
Definition: ThumbnailControllerTest.php:123
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\exceptionIsThrownOnInvalidHMACDataProvider
‪array exceptionIsThrownOnInvalidHMACDataProvider()
Definition: ThumbnailControllerTest.php:83
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest
Definition: ThumbnailControllerTest.php:31
‪TYPO3\CMS\Core\Http\Response
Definition: Response.php:30
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\generateThumbnailIsInvoked
‪generateThumbnailIsInvoked(array $parameters=null)
Definition: ThumbnailControllerTest.php:98
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:37
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\ThumbnailControllerTest\$parameters
‪static array $parameters
Definition: ThumbnailControllerTest.php:40
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:25
‪TYPO3\CMS\Core\Utility\GeneralUtility
Definition: GeneralUtility.php:50
‪TYPO3\CMS\Backend\Controller\File\ThumbnailController
Definition: ThumbnailController.php:36