TYPO3 CMS  TYPO3_7-6
RequestTest.php
Go to the documentation of this file.
1 <?php
3 
4 /*
5  * This file is part of the TYPO3 CMS project.
6  *
7  * It is free software; you can redistribute it and/or modify it under
8  * the terms of the GNU General Public License, either version 2
9  * of the License, or any later version.
10  *
11  * For the full copyright and license information, please read the
12  * LICENSE.txt file that was distributed with this source code.
13  *
14  * The TYPO3 project - inspiring people to share!
15  */
16 
21 {
26  {
27  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
28  $request->setArgument('someArgumentName', 'theValue');
29  $this->assertEquals('theValue', $request->getArgument('someArgumentName'));
30  }
31 
37  {
38  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
39  $request->setArgument(123, 'theValue');
40  }
41 
47  {
48  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
49  $request->setArgument('', 'theValue');
50  }
51 
57  {
58  $this->markTestSkipped('Differing behavior from TYPO3.Flow because of backwards compatibility reasons.');
59  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
60  $request->setArgument('theKey', new \stdClass());
61  }
62 
67  {
68  $arguments = ['key1' => 'value1', 'key2' => 'value2'];
69  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
70  $request->setArgument('someKey', 'shouldBeOverridden');
71  $request->setArguments($arguments);
72  $actualResult = $request->getArguments();
73  $this->assertEquals($arguments, $actualResult);
74  }
75 
80  {
81  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setArgument']);
82  $request->expects($this->at(0))->method('setArgument')->with('key1', 'value1');
83  $request->expects($this->at(1))->method('setArgument')->with('key2', 'value2');
84  $request->setArguments(['key1' => 'value1', 'key2' => 'value2']);
85  }
86 
91  {
92  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setControllerExtensionName']);
93  $request->expects($this->any())->method('setControllerExtensionName')->with('MyExtension');
94  $request->setArgument('@extension', 'MyExtension');
95  $this->assertFalse($request->hasArgument('@extension'));
96  }
97 
102  {
103  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setControllerSubpackageKey']);
104  $request->expects($this->any())->method('setControllerSubpackageKey')->with('MySubPackage');
105  $request->setArgument('@subpackage', 'MySubPackage');
106  $this->assertFalse($request->hasArgument('@subpackage'));
107  }
108 
113  {
114  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setControllerName']);
115  $request->expects($this->any())->method('setControllerName')->with('MyController');
116  $request->setArgument('@controller', 'MyController');
117  $this->assertFalse($request->hasArgument('@controller'));
118  }
119 
124  {
125  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setControllerActionName']);
126  $request->expects($this->any())->method('setControllerActionName')->with('foo');
127  $request->setArgument('@action', 'foo');
128  $this->assertFalse($request->hasArgument('@action'));
129  }
130 
135  {
136  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setFormat']);
137  $request->expects($this->any())->method('setFormat')->with('txt');
138  $request->setArgument('@format', 'txt');
139  $this->assertFalse($request->hasArgument('@format'));
140  }
141 
146  {
147  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['setFormat']);
148  $request->expects($this->any())->method('setVendor')->with('VENDOR');
149  $request->setArgument('@vendor', 'VENDOR');
150  $this->assertFalse($request->hasArgument('@vendor'));
151  }
152 
157  {
158  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
159  $request->setArgument('__referrer', 'foo');
160  $this->assertFalse($request->hasArgument('__referrer'));
161  }
162 
167  {
168  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
169  $request->setArgument('__referrer', 'foo');
170  $this->assertSame('foo', $request->getInternalArgument('__referrer'));
171  }
172 
177  {
178  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
179  $this->assertNull($request->getInternalArgument('__nonExistingInternalArgument'));
180  }
181 
186  {
187  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
188  $object = new \stdClass();
189  $request->setArgument('__theKey', $object);
190  $this->assertSame($object, $request->getInternalArgument('__theKey'));
191  }
192 
197  {
198  $arguments = [
199  'firstArgument' => 'firstValue',
200  'dænishÅrgument' => 'görman välju',
201  '3a' => '3v'
202  ];
203  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
204  $request->setArguments($arguments);
205  $this->assertEquals($arguments, $request->getArguments());
206  }
207 
212  {
213  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
214  $request->setArgument('existingArgument', 'theValue');
215  $this->assertTrue($request->hasArgument('existingArgument'));
216  $this->assertFalse($request->hasArgument('notExistingArgument'));
217  }
218 
223  {
224  $request = $this->getMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['getControllerObjectName'], [], '', false);
225  $request->expects($this->once())->method('getControllerObjectName')->will($this->returnValue(''));
226  $request->setControllerActionName('theAction');
227  $this->assertEquals('theAction', $request->getControllerActionName());
228  }
229 
234  {
235  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
236  $request->setFormat('html');
237  $this->assertEquals('html', $request->getFormat());
238  }
239 
244  {
245  $this->markTestSkipped('Different behavior from TYPO3.Flow because of backwards compatibility.');
246  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
247  $request->setFormat('hTmL');
248  $this->assertEquals('html', $request->getFormat());
249  }
250 
255  {
256  $request = new \TYPO3\CMS\Extbase\Mvc\Request();
257  $this->assertFalse($request->isDispatched());
258  $request->setDispatched(true);
259  $this->assertTrue($request->isDispatched());
260  }
261 
268  {
269  return [
270  'Vendor TYPO3\CMS, extension, controller given' => [
271  [
272  'vendorName' => 'TYPO3\\CMS',
273  'extensionName' => 'Ext',
274  'subpackageKey' => '',
275  'controllerName' => 'Foo',
276  ],
277  'TYPO3\\CMS\\Ext\\Controller\\FooController',
278  ],
279  'Vendor TYPO3\CMS, extension, subpackage, controlle given' => [
280  [
281  'vendorName' => 'TYPO3\\CMS',
282  'extensionName' => 'Fluid',
283  'subpackageKey' => 'ViewHelpers\\Widget',
284  'controllerName' => 'Paginate',
285  ],
286  \TYPO3\CMS\Fluid\ViewHelpers\Widget\Controller\PaginateController::class,
287  ],
288  'Vendor VENDOR, extension, controller given' => [
289  [
290  'vendorName' => 'VENDOR',
291  'extensionName' => 'Ext',
292  'subpackageKey' => '',
293  'controllerName' => 'Foo',
294  ],
295  'VENDOR\\Ext\\Controller\\FooController',
296  ],
297  'Vendor VENDOR, extension subpackage, controller given' => [
298  [
299  'vendorName' => 'VENDOR',
300  'extensionName' => 'Ext',
301  'subpackageKey' => 'ViewHelpers\\Widget',
302  'controllerName' => 'Foo',
303  ],
304  'VENDOR\\Ext\\ViewHelpers\\Widget\\Controller\\FooController',
305  ],
306  'No vendor, extension, controller given' => [
307  [
308  'vendorName' => null,
309  'extensionName' => 'Ext',
310  'subpackageKey' => '',
311  'controllerName' => 'Foo',
312  ],
313  'Tx_Ext_Controller_FooController',
314  ],
315  'No vendor, extension, subpackage, controller given' => [
316  [
317  'vendorName' => null,
318  'extensionName' => 'Fluid',
319  'subpackageKey' => 'ViewHelpers_Widget',
320  'controllerName' => 'Paginate',
321  ],
322  'Tx_Fluid_ViewHelpers_Widget_Controller_PaginateController',
323  ],
324  ];
325  }
326 
334  public function getControllerObjectNameResolvesControllerObjectNameCorrectly($controllerArguments, $controllerObjectName)
335  {
337  $request = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['dummy']);
338  $request->_set('controllerVendorName', $controllerArguments['vendorName']);
339  $request->_set('controllerExtensionName', $controllerArguments['extensionName']);
340  $request->_set('controllerSubpackageKey', $controllerArguments['subpackageKey']);
341  $request->_set('controllerName', $controllerArguments['controllerName']);
342 
343  $this->assertEquals($controllerObjectName, $request->getControllerObjectName());
344  }
345 
353  public function setControllerObjectNameResolvesControllerObjectNameArgumentsCorrectly($controllerArguments, $controllerObjectName)
354  {
356  $request = $this->getAccessibleMock(\TYPO3\CMS\Extbase\Mvc\Request::class, ['dummy']);
357  $request->setControllerObjectName($controllerObjectName);
358 
359  $actualControllerArguments = [
360  'vendorName' => $request->_get('controllerVendorName'),
361  'extensionName' => $request->_get('controllerExtensionName'),
362  'subpackageKey' => $request->_get('controllerSubpackageKey'),
363  'controllerName' => $request->_get('controllerName'),
364  ];
365 
366  $this->assertSame($controllerArguments, $actualControllerArguments);
367  }
368 }
getAccessibleMock( $originalClassName, $methods=[], array $arguments=[], $mockClassName='', $callOriginalConstructor=true, $callOriginalClone=true, $callAutoload=true)