‪TYPO3CMS  10.4
DatabaseUserPermissionCheckTest.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
18 use Prophecy\Argument;
19 use Prophecy\Prophecy\ObjectProphecy;
30 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
31 
35 class ‪DatabaseUserPermissionCheckTest extends UnitTestCase
36 {
40  protected ‪$beUserProphecy;
41 
42  protected function ‪setUp(): void
43  {
44  parent::setUp();
45  $this->beUserProphecy = $this->prophesize(BackendUserAuthentication::class);
46  ‪$GLOBALS['BE_USER'] = $this->beUserProphecy->reveal();
47  ‪$GLOBALS['BE_USER']->user['uid'] = 42;
48  }
49 
54  {
55  $this->beUserProphecy->isAdmin()->willReturn(true);
56 
57  $result = (new ‪DatabaseUserPermissionCheck())->addData([]);
58 
59  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
60  }
61 
66  {
67  $input = [
68  'tableName' => 'tt_content',
69  ];
70  $this->beUserProphecy->isAdmin()->willReturn(false);
71  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(false);
72 
73  $this->expectException(AccessDeniedTableModifyException::class);
74  $this->expectExceptionCode(1437683248);
75 
76  (new DatabaseUserPermissionCheck())->addData($input);
77  }
78 
83  {
84  $input = [
85  'tableName' => 'tt_content',
86  'command' => 'edit',
87  'vanillaUid' => 123,
88  'parentPageRow' => [
89  'uid' => 42,
90  'pid' => 321,
91  ],
92  ];
93  $this->beUserProphecy->isAdmin()->willReturn(false);
94  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
95  $this->beUserProphecy->calcPerms(['uid' => 42, 'pid' => 321])->willReturn(‪Permission::NOTHING);
96 
97  $this->expectException(AccessDeniedContentEditException::class);
98  $this->expectExceptionCode(1437679657);
99 
100  (new DatabaseUserPermissionCheck())->addData($input);
101  }
102 
107  {
108  $input = [
109  'tableName' => 'tt_content',
110  'command' => 'edit',
111  'vanillaUid' => 123,
112  'databaseRow' => [],
113  'parentPageRow' => [
114  'pid' => 321,
115  ],
116  ];
117  $this->beUserProphecy->isAdmin()->willReturn(false);
118  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
119  $this->beUserProphecy->calcPerms(['pid' => 321])->willReturn(‪Permission::CONTENT_EDIT);
120  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::any())->willReturn(true);
121 
122  $result = (new DatabaseUserPermissionCheck())->addData($input);
123 
124  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
125  }
126 
131  {
132  $input = [
133  'tableName' => 'pages',
134  'command' => 'edit',
135  'vanillaUid' => 123,
136  'databaseRow' => [
137  'uid' => 123,
138  'pid' => 321
139  ],
140  ];
141  $this->beUserProphecy->isAdmin()->willReturn(false);
142  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
143  $this->beUserProphecy->calcPerms($input['databaseRow'])->willReturn(‪Permission::NOTHING);
144 
145  $this->expectException(AccessDeniedPageEditException::class);
146  $this->expectExceptionCode(1437679336);
147 
148  (new DatabaseUserPermissionCheck())->addData($input);
149  }
150 
155  {
156  $input = [
157  'tableName' => 'pages',
158  'command' => 'edit',
159  'vanillaUid' => 123,
160  'databaseRow' => [
161  'uid' => 123,
162  'pid' => 321,
163  'doktype' => 1,
164  ],
165  'processedTca' => [
166  'ctrl' => [
167  'type' => 'doktype'
168  ]
169  ]
170  ];
171  $this->beUserProphecy->isAdmin()->willReturn(false);
172  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
173  $this->beUserProphecy->check('pagetypes_select', $input['databaseRow']['doktype'])->willReturn(false);
174  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
175  $this->beUserProphecy->calcPerms($input['databaseRow'])->willReturn(‪Permission::ALL);
176 
177  $this->expectException(AccessDeniedPageEditException::class);
178  $this->expectExceptionCode(1437679336);
179 
180  (new DatabaseUserPermissionCheck())->addData($input);
181  }
182 
187  {
188  $input = [
189  'tableName' => 'pages',
190  'command' => 'edit',
191  'vanillaUid' => 123,
192  'databaseRow' => [
193  'uid' => 123,
194  'pid' => 321,
195  'doktype' => 1,
196  ],
197  'processedTca' => [
198  'ctrl' => [
199  'type' => 'doktype'
200  ]
201  ]
202  ];
203  $this->beUserProphecy->isAdmin()->willReturn(false);
204  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
205  $this->beUserProphecy->check('pagetypes_select', $input['databaseRow']['doktype'])->willReturn(true);
206  $this->beUserProphecy->calcPerms($input['databaseRow'])->willReturn(‪Permission::PAGE_EDIT);
207  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
208 
209  $result = (new DatabaseUserPermissionCheck())->addData($input);
210 
211  self::assertSame(‪Permission::PAGE_EDIT, $result['userPermissionOnPage']);
212  }
213 
218  {
219  $input = [
220  'tableName' => 'tt_content',
221  'command' => 'edit',
222  'vanillaUid' => 123,
223  'databaseRow' => [
224  'uid' => 123,
225  'pid' => 0,
226  ],
227  ];
228  $this->beUserProphecy->isAdmin()->willReturn(false);
229  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
230  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
231  ‪$GLOBALS['TCA'][$input['tableName']]['ctrl']['security']['ignoreRootLevelRestriction'] = true;
232 
233  $result = (new DatabaseUserPermissionCheck())->addData($input);
234 
235  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
236  }
237 
242  {
243  $input = [
244  'tableName' => 'tt_content',
245  'command' => 'edit',
246  'vanillaUid' => 123,
247  'databaseRow' => [
248  'uid' => 123,
249  'pid' => 0,
250  ],
251  ];
252  $this->beUserProphecy->isAdmin()->willReturn(false);
253  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
254  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
255 
256  $this->expectException(AccessDeniedRootNodeException::class);
257  $this->expectExceptionCode(1437679856);
258 
259  (new DatabaseUserPermissionCheck())->addData($input);
260  }
261 
266  {
267  $input = [
268  'tableName' => 'tt_content',
269  'command' => 'edit',
270  'vanillaUid' => 123,
271  'databaseRow' => [],
272  'parentPageRow' => [
273  'uid' => 123,
274  'pid' => 321,
275  ],
276  ];
277  $this->beUserProphecy->isAdmin()->willReturn(false);
278  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
279  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::ALL);
280  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(false);
281 
282  $this->expectException(AccessDeniedEditInternalsException::class);
283  $this->expectExceptionCode(1437687404);
284 
285  (new DatabaseUserPermissionCheck())->addData($input);
286  }
287 
292  {
293  $input = [
294  'tableName' => 'tt_content',
295  'command' => 'new',
296  'vanillaUid' => 123,
297  'parentPageRow' => [
298  'uid' => 123,
299  'pid' => 321,
300  ],
301  ];
302  $this->beUserProphecy->isAdmin()->willReturn(false);
303  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
304  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::NOTHING);
305 
306  $this->expectException(AccessDeniedContentEditException::class);
307  $this->expectExceptionCode(1437745759);
308 
309  (new DatabaseUserPermissionCheck())->addData($input);
310  }
311 
316  {
317  $input = [
318  'tableName' => 'pages',
319  'command' => 'new',
320  'vanillaUid' => 123,
321  'databaseRow' => [
322  'uid' => 'NEW123',
323  ],
324  'parentPageRow' => [
325  'uid' => 123,
326  'pid' => 321,
327  ],
328  ];
329  $this->beUserProphecy->isAdmin()->willReturn(false);
330  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
331  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::NOTHING);
332 
333  $this->expectException(AccessDeniedPageNewException::class);
334  $this->expectExceptionCode(1437745640);
335 
336  (new DatabaseUserPermissionCheck())->addData($input);
337  }
338 
343  {
344  $input = [
345  'tableName' => 'tt_content',
346  'command' => 'edit',
347  'vanillaUid' => 123,
348  'databaseRow' => [
349  'uid' => 5,
350  ],
351  'parentPageRow' => [
352  'uid' => 123,
353  'pid' => 321,
354  ],
355  ];
356  $this->beUserProphecy->isAdmin()->willReturn(false);
357  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
358  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::ALL);
359  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
360 
361  ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/alt_doc.php']['makeEditForm_accessCheck'] = [
362  'unitTest' => function () {
363  return false;
364  }
365  ];
366 
367  $this->expectException(AccessDeniedHookException::class);
368  $this->expectExceptionCode(1437689705);
369 
370  (new DatabaseUserPermissionCheck())->addData($input);
371  }
372 
377  {
378  $input = [
379  'tableName' => 'pages',
380  'command' => 'new',
381  'vanillaUid' => 123,
382  'databaseRow' => [
383  'uid' => 'NEW5',
384  ],
385  'parentPageRow' => [
386  'uid' => 123,
387  'pid' => 321,
388  ],
389  ];
390  $this->beUserProphecy->isAdmin()->willReturn(false);
391  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
392  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::CONTENT_EDIT);
393  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
394 
395  ‪$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3/alt_doc.php']['makeEditForm_accessCheck'] = [
396  'unitTest' => function () {
397  return true;
398  }
399  ];
400 
401  $result = (new DatabaseUserPermissionCheck())->addData($input);
402 
403  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
404  }
405 
410  {
411  $input = [
412  'tableName' => 'pages',
413  'command' => 'new',
414  'vanillaUid' => 123,
415  'parentPageRow' => [
416  'uid' => 123,
417  'pid' => 321,
418  ],
419  ];
420  $this->beUserProphecy->isAdmin()->willReturn(false);
421  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
422  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::PAGE_NEW);
423  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
424 
425  $result = (new DatabaseUserPermissionCheck())->addData($input);
426 
427  self::assertSame(‪Permission::PAGE_NEW, $result['userPermissionOnPage']);
428  }
429 
434  {
435  $input = [
436  'tableName' => 'tt_content',
437  'command' => 'new',
438  'vanillaUid' => 123,
439  'parentPageRow' => [
440  'uid' => 123,
441  'pid' => 321,
442  ],
443  ];
444  $this->beUserProphecy->isAdmin()->willReturn(false);
445  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
446  $this->beUserProphecy->calcPerms($input['parentPageRow'])->willReturn(‪Permission::CONTENT_EDIT);
447  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
448 
449  $result = (new DatabaseUserPermissionCheck())->addData($input);
450 
451  self::assertSame(‪Permission::CONTENT_EDIT, $result['userPermissionOnPage']);
452  }
453 
458  {
459  $input = [
460  'tableName' => 'pages',
461  'command' => 'new',
462  'vanillaUid' => 123,
463  'parentPageRow' => null,
464  ];
465  $this->beUserProphecy->isAdmin()->willReturn(false);
466  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
467  $this->beUserProphecy->recordEditAccessInternals($input['tableName'], Argument::cetera())->willReturn(true);
468  ‪$GLOBALS['TCA'][$input['tableName']]['ctrl']['security']['ignoreRootLevelRestriction'] = true;
469 
470  $result = (new DatabaseUserPermissionCheck())->addData($input);
471 
472  self::assertSame(‪Permission::ALL, $result['userPermissionOnPage']);
473  }
474 
479  {
480  $input = [
481  'tableName' => 'pages',
482  'command' => 'new',
483  'vanillaUid' => 123,
484  'parentPageRow' => null,
485  ];
486 
487  $this->beUserProphecy->isAdmin()->willReturn(false);
488  $this->beUserProphecy->check('tables_modify', $input['tableName'])->willReturn(true);
489 
490  $this->expectException(AccessDeniedRootNodeException::class);
491  $this->expectExceptionCode(1437745221);
492 
493  (new DatabaseUserPermissionCheck())->addData($input);
494  }
495 }
‪TYPO3\CMS\Backend\Form\FormDataProvider\DatabaseUserPermissionCheck
Definition: DatabaseUserPermissionCheck.php:36
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedContentEditException
Definition: AccessDeniedContentEditException.php:22
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\setUp
‪setUp()
Definition: DatabaseUserPermissionCheckTest.php:41
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfUserHasNoTablesModifyPermissionForGivenTable
‪addDataThrowsExceptionIfUserHasNoTablesModifyPermissionForGivenTable()
Definition: DatabaseUserPermissionCheckTest.php:64
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_NEW
‪const PAGE_NEW
Definition: Permission.php:48
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoPagePermissions
‪addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoPagePermissions()
Definition: DatabaseUserPermissionCheckTest.php:129
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedRootNodeException
Definition: AccessDeniedRootNodeException.php:22
‪TYPO3\CMS\Core\Type\Bitmask\Permission\NOTHING
‪const NOTHING
Definition: Permission.php:28
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewPageIfPageNewIsDeniedAndHookAllowsAccess
‪addDataSetsUserPermissionsOnPageForNewPageIfPageNewIsDeniedAndHookAllowsAccess()
Definition: DatabaseUserPermissionCheckTest.php:375
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForAdminUser
‪addDataSetsUserPermissionsOnPageForAdminUser()
Definition: DatabaseUserPermissionCheckTest.php:52
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewContentRecordWithoutPermissions
‪addDataThrowsExceptionForNewContentRecordWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:290
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\$beUserProphecy
‪BackendUserAuthentication ObjectProphecy $beUserProphecy
Definition: DatabaseUserPermissionCheckTest.php:39
‪TYPO3\CMS\Core\Type\Bitmask\Permission
Definition: Permission.php:24
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfRootNodeShouldBeEditedWithoutPermissions
‪addDataThrowsExceptionIfRootNodeShouldBeEditedWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:240
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewPageWithoutPermissions
‪addDataThrowsExceptionForNewPageWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:314
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest
Definition: DatabaseUserPermissionCheckTest.php:36
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataAddsUserPermissionsOnPageIfTableIsPagesAndUserHasPagePermissions
‪addDataAddsUserPermissionsOnPageIfTableIsPagesAndUserHasPagePermissions()
Definition: DatabaseUserPermissionCheckTest.php:185
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedEditInternalsException
Definition: AccessDeniedEditInternalsException.php:22
‪TYPO3\CMS\Core\Type\Bitmask\Permission\ALL
‪const ALL
Definition: Permission.php:58
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoDoktypePermissions
‪addDataThrowsExceptionIfCommandIsEditTableIsPagesAndUserHasNoDoktypePermissions()
Definition: DatabaseUserPermissionCheckTest.php:153
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedTableModifyException
Definition: AccessDeniedTableModifyException.php:22
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForContentEditRecord
‪addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForContentEditRecord()
Definition: DatabaseUserPermissionCheckTest.php:216
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedHookException
Definition: AccessDeniedHookException.php:22
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfRecordEditAccessInternalsReturnsFalse
‪addDataThrowsExceptionIfRecordEditAccessInternalsReturnsFalse()
Definition: DatabaseUserPermissionCheckTest.php:264
‪TYPO3\CMS\Core\Authentication\BackendUserAuthentication
Definition: BackendUserAuthentication.php:62
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionForNewRecordsOnRootLevelWithoutPermissions
‪addDataThrowsExceptionForNewRecordsOnRootLevelWithoutPermissions()
Definition: DatabaseUserPermissionCheckTest.php:477
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewContentRecord
‪addDataSetsUserPermissionsOnPageForNewContentRecord()
Definition: DatabaseUserPermissionCheckTest.php:432
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataAddsUserPermissionsOnPageForContentIfUserHasCorrespondingPermissions
‪addDataAddsUserPermissionsOnPageForContentIfUserHasCorrespondingPermissions()
Definition: DatabaseUserPermissionCheckTest.php:105
‪TYPO3\CMS\Core\Type\Bitmask\Permission\CONTENT_EDIT
‪const CONTENT_EDIT
Definition: Permission.php:53
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfHookDeniesAccess
‪addDataThrowsExceptionIfHookDeniesAccess()
Definition: DatabaseUserPermissionCheckTest.php:341
‪$GLOBALS
‪$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['adminpanel']['modules']
Definition: ext_localconf.php:5
‪TYPO3\CMS\Core\Type\Bitmask\Permission\PAGE_EDIT
‪const PAGE_EDIT
Definition: Permission.php:38
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsUserPermissionsOnPageForNewPage
‪addDataSetsUserPermissionsOnPageForNewPage()
Definition: DatabaseUserPermissionCheckTest.php:408
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedPageNewException
Definition: AccessDeniedPageNewException.php:22
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForNewContentRecord
‪addDataSetsPermissionsToAllIfRootLevelRestrictionForTableIsIgnoredForNewContentRecord()
Definition: DatabaseUserPermissionCheckTest.php:456
‪TYPO3\CMS\Backend\Form\Exception\AccessDeniedPageEditException
Definition: AccessDeniedPageEditException.php:22
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider\DatabaseUserPermissionCheckTest\addDataThrowsExceptionIfUserHasNoContentEditPermissionsOnPage
‪addDataThrowsExceptionIfUserHasNoContentEditPermissionsOnPage()
Definition: DatabaseUserPermissionCheckTest.php:81
‪TYPO3\CMS\Backend\Tests\Unit\Form\FormDataProvider
Definition: DatabaseDefaultLanguagePageRowTest.php:18