‪TYPO3CMS  11.5
ActionControllerTest.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 
21 use Psr\Http\Message\ResponseInterface;
27 use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
28 
29 class ‪ActionControllerTest extends FunctionalTestCase
30 {
34  protected ‪$request;
35 
39  protected ‪$response;
40 
44  protected ‪$subject;
45 
46  protected ‪$testExtensionsToLoad = [
47  'typo3/sysext/extbase/Tests/Functional/Mvc/Controller/Fixture/Extension/action_controller_test',
48  ];
49 
50  protected function ‪setUp(): void
51  {
52  parent::setUp();
53 
54  $this->request = new ‪Request();
55  $this->request->setPluginName('Pi1');
56  $this->request->setControllerExtensionName('ActionControllerTest');
57  $this->request->setControllerName('Test');
58  $this->request->setFormat('html');
59 
60  $this->subject = $this->get(TestController::class);
61  }
62 
66  public function ‪customValidatorsAreProperlyResolved(): void
67  {
68  // Setup
69  $this->request->setControllerActionName('bar');
70  $this->request->setArgument('barParam', '');
71 
72  // Test run
73  $this->subject->processRequest($this->request);
74 
75  // Assertions
76  $arguments = $this->subject->getArguments();
77  $argument = $arguments->getArgument('barParam');
78 
80  $conjunctionValidator = $argument->getValidator();
81  self::assertInstanceOf(ConjunctionValidator::class, $conjunctionValidator);
82 
84  $validators = $conjunctionValidator->getValidators();
85  self::assertInstanceOf(\SplObjectStorage::class, $validators);
86 
87  $validators->rewind();
88  self::assertInstanceOf(CustomValidator::class, $validators->current());
89  }
90 
94  public function ‪extbaseValidatorsAreProperlyResolved(): void
95  {
96  // Setup
97  $this->request->setControllerActionName('baz');
98  $this->request->setArgument('bazParam', [ 'notEmpty' ]);
99 
100  // Test run
101  $this->subject->processRequest($this->request);
102 
103  // Assertions
104  $arguments = $this->subject->getArguments();
105  $argument = $arguments->getArgument('bazParam');
106 
108  $conjunctionValidator = $argument->getValidator();
109  self::assertInstanceOf(ConjunctionValidator::class, $conjunctionValidator);
110 
111  $validators = $conjunctionValidator->getValidators();
112  self::assertInstanceOf(\SplObjectStorage::class, $validators);
113  self::assertCount(1, $validators);
114 
115  $validators->rewind();
116  self::assertInstanceOf(NotEmptyValidator::class, $validators->current());
117  }
118 
122  public function ‪resolveViewRespectsDefaultViewObjectName(): void
123  {
124  // Test setup
125  $reflectionClass = new \ReflectionClass($this->subject);
126  $reflectionMethod = $reflectionClass->getProperty('defaultViewObjectName');
127  $reflectionMethod->setAccessible(true);
128  $reflectionMethod->setValue($this->subject, JsonView::class);
129 
130  $this->request->setControllerActionName('qux');
131 
132  // Test run
133  $this->subject->processRequest($this->request);
134 
135  // Assertions
136  $reflectionMethod = $reflectionClass->getProperty('view');
137  $reflectionMethod->setAccessible(true);
138  $reflectionMethod->getValue($this->subject);
139 
140  $view = $reflectionMethod->getValue($this->subject);
141  self::assertInstanceOf(JsonView::class, $view);
142  }
143 }
‪TYPO3\CMS\Extbase\Validation\Validator\ConjunctionValidator
Definition: ConjunctionValidator.php:24
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\customValidatorsAreProperlyResolved
‪customValidatorsAreProperlyResolved()
Definition: ActionControllerTest.php:63
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller
Definition: ActionControllerArgumentTest.php:18
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\extbaseValidatorsAreProperlyResolved
‪extbaseValidatorsAreProperlyResolved()
Definition: ActionControllerTest.php:91
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\Fixture\Validation\Validator\CustomValidator
Definition: CustomValidator.php:26
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\$response
‪ResponseInterface $response
Definition: ActionControllerTest.php:37
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\$subject
‪TestController $subject
Definition: ActionControllerTest.php:41
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\$testExtensionsToLoad
‪$testExtensionsToLoad
Definition: ActionControllerTest.php:43
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\$request
‪Request $request
Definition: ActionControllerTest.php:33
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest
Definition: ActionControllerTest.php:30
‪TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator
Definition: NotEmptyValidator.php:22
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\resolveViewRespectsDefaultViewObjectName
‪resolveViewRespectsDefaultViewObjectName()
Definition: ActionControllerTest.php:119
‪TYPO3\CMS\Extbase\Tests\Functional\Mvc\Controller\ActionControllerTest\setUp
‪setUp()
Definition: ActionControllerTest.php:47
‪TYPO3\CMS\Extbase\Mvc\View\JsonView
Definition: JsonView.php:31
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:39
‪ExtbaseTeam\ActionControllerTest\Controller\TestController
Definition: TestController.php:31