‪TYPO3CMS  11.5
FileControllerTest.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;
21 use Prophecy\Argument;
22 use Prophecy\PhpUnit\ProphecyTrait;
23 use Psr\Http\Message\ServerRequestInterface;
30 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
31 
35 class ‪FileControllerTest extends UnitTestCase
36 {
37  use ProphecyTrait;
38 
42  protected MockObject ‪$fileResourceMock;
43 
47  protected MockObject ‪$folderResourceMock;
48 
52  protected MockObject ‪$mockFileProcessor;
53 
54  protected ServerRequestInterface ‪$request;
55 
59  protected function ‪setUp(): void
60  {
61  parent::setUp();
62  $this->fileResourceMock = $this->getMockBuilder(File::class)
63  ->onlyMethods(['toArray', 'getModificationTime', 'getExtension', 'getParentFolder'])
64  ->disableOriginalConstructor()
65  ->getMock();
66  $this->folderResourceMock = $this->getMockBuilder(Folder::class)
67  ->onlyMethods(['getIdentifier'])
68  ->disableOriginalConstructor()
69  ->getMock();
70  $this->mockFileProcessor = $this->getMockBuilder(ExtendedFileUtility::class)
71  ->onlyMethods(['getErrorMessages'])
72  ->disableOriginalConstructor()
73  ->getMock();
74 
75  $this->fileResourceMock->method('toArray')->willReturn(['id' => 'foo']);
76  $this->fileResourceMock->method('getModificationTime')->willReturn(123456789);
77  $this->fileResourceMock->method('getExtension')->willReturn('html');
78  $this->fileResourceMock->method('getParentFolder')->willReturn(null);
79 
80  $serverRequest = $this->prophesize(ServerRequestInterface::class);
81  $this->request = $serverRequest->reveal();
82  }
83 
88  {
89  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
90  self::assertTrue($subject->_call('flattenResultDataValue', true));
91  self::assertSame([], $subject->_call('flattenResultDataValue', []));
92  }
93 
97  public function ‪flattenResultDataValueFlattensFile(): void
98  {
99  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
100  $iconFactoryProphecy = $this->prophesize(IconFactory::class);
101  $iconProphecy = $this->prophesize(Icon::class);
102  $iconProphecy->render()->shouldBeCalled()->willReturn('');
103  $iconFactoryProphecy->getIconForFileExtension(Argument::cetera())->willReturn($iconProphecy->reveal());
104  $subject->_set('iconFactory', $iconFactoryProphecy->reveal());
105 
106  $result = $subject->_call('flattenResultDataValue', $this->fileResourceMock);
107  self::assertSame(
108  [
109  'id' => 'foo',
110  'date' => '29-11-73',
111  'icon' => '',
112  'thumbUrl' => '',
113  'path' => '',
114  ],
115  $result
116  );
117  }
118 
123  {
124  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
125  $fileData = ['delete' => [true]];
126  $subject->_set('fileProcessor', $this->mockFileProcessor);
127  $subject->_set('fileData', $fileData);
128  $subject->_set('redirect', false);
129  $subject->expects(self::once())->method('main');
130  $subject->processAjaxRequest($this->request);
131  }
132 
137  {
138  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
139  $fileData = ['editfile' => [true]];
140  $subject->_set('fileProcessor', $this->mockFileProcessor);
141  $subject->_set('fileData', $fileData);
142  $subject->_set('redirect', false);
143  $subject->expects(self::once())->method('main');
144  $subject->processAjaxRequest($this->request);
145  }
146 
151  {
152  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
153  $fileData = ['editfile' => [true]];
154  $subject->_set('fileProcessor', $this->mockFileProcessor);
155  $subject->_set('fileData', $fileData);
156  $subject->_set('redirect', false);
157  $response = $subject->processAjaxRequest($this->request);
158  self::assertEquals(200, $response->getStatusCode());
159  }
160 
165  {
166  $this->mockFileProcessor->method('getErrorMessages')->willReturn(['error occurred']);
167  $subject = $this->getAccessibleMock(FileController::class, ['init', 'main'], [], '', false);
168  $subject->_set('fileProcessor', $this->mockFileProcessor);
169  $response = $subject->processAjaxRequest($this->request);
170  self::assertEquals(500, $response->getStatusCode());
171  }
172 }
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File
Definition: FileControllerTest.php:18
‪TYPO3\CMS\Core\Imaging\Icon
Definition: Icon.php:26
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\setUp
‪setUp()
Definition: FileControllerTest.php:58
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\$folderResourceMock
‪MockObject $folderResourceMock
Definition: FileControllerTest.php:46
‪TYPO3\CMS\Core\Imaging\IconFactory
Definition: IconFactory.php:34
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\processAjaxRequestReturnsStatus200IfNoErrorOccurs
‪processAjaxRequestReturnsStatus200IfNoErrorOccurs()
Definition: FileControllerTest.php:149
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\flattenResultDataValueFlattensFile
‪flattenResultDataValueFlattensFile()
Definition: FileControllerTest.php:96
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\processAjaxRequestReturnsStatus500IfErrorOccurs
‪processAjaxRequestReturnsStatus500IfErrorOccurs()
Definition: FileControllerTest.php:163
‪TYPO3\CMS\Core\Utility\File\ExtendedFileUtility
Definition: ExtendedFileUtility.php:73
‪TYPO3\CMS\Core\Resource\Folder
Definition: Folder.php:37
‪TYPO3\CMS\Core\Resource\File
Definition: File.php:24
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\flattenResultDataValueReturnsAnythingElseAsIs
‪flattenResultDataValueReturnsAnythingElseAsIs()
Definition: FileControllerTest.php:86
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\$fileResourceMock
‪MockObject $fileResourceMock
Definition: FileControllerTest.php:41
‪TYPO3\CMS\Backend\Controller\File\FileController
Definition: FileController.php:48
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\processAjaxRequestDeleteProcessActuallyDoesNotChangeFileData
‪processAjaxRequestDeleteProcessActuallyDoesNotChangeFileData()
Definition: FileControllerTest.php:121
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest
Definition: FileControllerTest.php:36
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\processAjaxRequestEditFileProcessActuallyDoesNotChangeFileData
‪processAjaxRequestEditFileProcessActuallyDoesNotChangeFileData()
Definition: FileControllerTest.php:135
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\$request
‪ServerRequestInterface $request
Definition: FileControllerTest.php:53
‪TYPO3\CMS\Backend\Tests\Unit\Controller\File\FileControllerTest\$mockFileProcessor
‪MockObject $mockFileProcessor
Definition: FileControllerTest.php:51