‪TYPO3CMS  ‪main
RequestTest.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\Attributes\DataProvider;
21 use PHPUnit\Framework\Attributes\Test;
26 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
27 
28 final class ‪RequestTest extends UnitTestCase
29 {
30  #[Test]
32  {
33  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
34  $request = new ‪Request($serverRequest);
35  $request = $request->withArgument('someArgumentName', 'theValue');
36  self::assertEquals('theValue', $request->getArgument('someArgumentName'));
37  }
38 
39  #[Test]
41  {
42  $this->expectException(InvalidArgumentNameException::class);
43  $this->expectExceptionCode(1210858767);
44  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
45  $request = new ‪Request($serverRequest);
46  $request->withArgument('', 'theValue');
47  }
48 
49  #[Test]
51  {
52  $arguments = ['key1' => 'value1', 'key2' => 'value2'];
53  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
54  $request = new ‪Request($serverRequest);
55  $request = $request->withArgument('someKey', 'shouldBeOverridden');
56  $request = $request->withArguments($arguments);
57  $actualResult = $request->getArguments();
58  self::assertEquals($arguments, $actualResult);
59  }
60 
61  #[Test]
62  public function ‪withArgumentCanNotSetAtExtension(): void
63  {
64  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
65  $request = new ‪Request($serverRequest);
66  $request = $request->withArgument('@extension', 'MyExtension');
67  self::assertFalse($request->hasArgument('@extension'));
68  }
69 
70  #[Test]
71  public function ‪withArgumentCanNotSetAtController(): void
72  {
73  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
74  $request = new ‪Request($serverRequest);
75  $request = $request->withArgument('@controller', 'MyController');
76  self::assertFalse($request->hasArgument('@controller'));
77  }
78 
79  #[Test]
80  public function ‪withArgumentCanNotSetAtAction(): void
81  {
82  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
83  $request = new ‪Request($serverRequest);
84  $request = $request->withArgument('@action', 'foo');
85  self::assertFalse($request->hasArgument('@action'));
86  }
87 
88  #[Test]
89  public function ‪withArgumentCanNotSetAtFormat(): void
90  {
91  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
92  $request = new ‪Request($serverRequest);
93  $request = $request->withArgument('@format', 'txt');
94  self::assertFalse($request->hasArgument('@format'));
95  }
96 
97  #[Test]
99  {
100  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
101  $request = new ‪Request($serverRequest);
102  $request = $request->withArgument('__referrer', 'foo');
103  self::assertFalse($request->hasArgument('__referrer'));
104  }
105 
106  #[Test]
108  {
109  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
110  $request = new ‪Request($serverRequest);
111  $arguments = [
112  'firstArgument' => 'firstValue',
113  'dænishÅrgument' => 'görman välju',
114  '3a' => '3v',
115  ];
116  $request = $request->withArguments($arguments);
117  self::assertEquals($arguments, $request->getArguments());
118  }
119 
120  #[Test]
122  {
123  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
124  $request = new ‪Request($serverRequest);
125  $request = $request->withArgument('existingArgument', 'theValue');
126  self::assertTrue($request->hasArgument('existingArgument'));
127  self::assertFalse($request->hasArgument('notExistingArgument'));
128  }
129 
130  #[Test]
131  public function ‪theActionNameCanBeSetAndRetrieved(): void
132  {
133  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
134  $request = new ‪Request($serverRequest);
135  $request = $request->withControllerActionName('theAction');
136  self::assertEquals('theAction', $request->getControllerActionName());
137  }
138 
139  #[Test]
141  {
142  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
143  $request = new ‪Request($serverRequest);
144  $request = $request->withFormat('html');
145  self::assertEquals('html', $request->getFormat());
146  }
147 
151  public static function ‪controllerArgumentsAndExpectedObjectName(): array
152  {
153  return [
154  'Vendor TYPO3\CMS, extension, controller given' => [
155  [
156  'extensionName' => 'Ext',
157  'controllerName' => 'Foo',
158  ],
159  'TYPO3\\CMS\\Ext\\Controller\\FooController',
160  ],
161  'Vendor TYPO3\CMS, extension, subpackage, controller given' => [
162  [
163  'extensionName' => 'Fluid',
164  'controllerName' => 'Paginate',
165  ],
166  'TYPO3\\CMS\\Fluid\\ViewHelpers\\Widget\\Controller\\PaginateController',
167  ],
168  'Vendor VENDOR, extension, controller given' => [
169  [
170  'extensionName' => 'Ext',
171  'controllerName' => 'Foo',
172  ],
173  'VENDOR\\Ext\\Controller\\FooController',
174  ],
175  'Vendor VENDOR, extension subpackage, controller given' => [
176  [
177  'extensionName' => 'Ext',
178  'controllerName' => 'Foo',
179  ],
180  'VENDOR\\Ext\\ViewHelpers\\Widget\\Controller\\FooController',
181  ],
182  ];
183  }
184 
185  #[DataProvider('controllerArgumentsAndExpectedObjectName')]
186  #[Test]
187  public function ‪withControllerObjectNameResolvesControllerObjectNameArgumentsCorrectly(array $controllerArguments, string $controllerObjectName): void
188  {
189  $serverRequest = (new ‪ServerRequest())->withAttribute('extbase', new ‪ExtbaseRequestParameters());
190  $request = new ‪Request($serverRequest);
191  $request = $request->withControllerObjectName($controllerObjectName);
192  $actualControllerArguments = [
193  'extensionName' => $request->getControllerExtensionName(),
194  'controllerName' => $request->getControllerName(),
195  ];
196  self::assertSame($controllerArguments, $actualControllerArguments);
197  }
198 }
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\theRepresentationFormatCanBeSetAndRetrieved
‪theRepresentationFormatCanBeSetAndRetrieved()
Definition: RequestTest.php:140
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\multipleArgumentsCanBeSetWithWithArgumentsAndRetrievedWithGetArguments
‪multipleArgumentsCanBeSetWithWithArgumentsAndRetrievedWithGetArguments()
Definition: RequestTest.php:107
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest
Definition: RequestTest.php:29
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentCanNotSetAtExtension
‪withArgumentCanNotSetAtExtension()
Definition: RequestTest.php:62
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withControllerObjectNameResolvesControllerObjectNameArgumentsCorrectly
‪withControllerObjectNameResolvesControllerObjectNameArgumentsCorrectly(array $controllerArguments, string $controllerObjectName)
Definition: RequestTest.php:187
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentCanNotSetAtController
‪withArgumentCanNotSetAtController()
Definition: RequestTest.php:71
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentThrowsExceptionIfTheGivenArgumentNameIsAnEmptyString
‪withArgumentThrowsExceptionIfTheGivenArgumentNameIsAnEmptyString()
Definition: RequestTest.php:40
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\internalArgumentsIsNotReturnedAsNormalArgument
‪internalArgumentsIsNotReturnedAsNormalArgument()
Definition: RequestTest.php:98
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\aSingleArgumentCanBeSetWithWithArgumentAndRetrievedWithGetArgument
‪aSingleArgumentCanBeSetWithWithArgumentAndRetrievedWithGetArgument()
Definition: RequestTest.php:31
‪TYPO3\CMS\Core\Http\ServerRequest
Definition: ServerRequest.php:39
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentCanNotSetAtAction
‪withArgumentCanNotSetAtAction()
Definition: RequestTest.php:80
‪TYPO3\CMS\Extbase\Mvc\Exception\InvalidArgumentNameException
Definition: InvalidArgumentNameException.php:25
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\hasArgumentTellsIfAnArgumentExists
‪hasArgumentTellsIfAnArgumentExists()
Definition: RequestTest.php:121
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentCanNotSetAtFormat
‪withArgumentCanNotSetAtFormat()
Definition: RequestTest.php:89
‪TYPO3\CMS\Extbase\Mvc\ExtbaseRequestParameters
Definition: ExtbaseRequestParameters.php:35
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\controllerArgumentsAndExpectedObjectName
‪static controllerArgumentsAndExpectedObjectName()
Definition: RequestTest.php:151
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\withArgumentsOverridesAllExistingArguments
‪withArgumentsOverridesAllExistingArguments()
Definition: RequestTest.php:50
‪TYPO3\CMS\Extbase\Mvc\Request
Definition: Request.php:35
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc
‪TYPO3\CMS\Extbase\Tests\Unit\Mvc\RequestTest\theActionNameCanBeSetAndRetrieved
‪theActionNameCanBeSetAndRetrieved()
Definition: RequestTest.php:131