5308a3848548abb466b3b9d6a1ec80d7ef2bb62b
[Packages/TYPO3.CMS.git] / typo3 / sysext / backend / Tests / Unit / Controller / PageLayoutControllerTest.php
1 <?php
2 namespace TYPO3\CMS\Backend\Tests\Unit\Controller;
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
17 use TYPO3\CMS\Backend\Controller\PageLayoutController;
18 use TYPO3\CMS\Core\Authentication\BackendUserAuthentication;
19 use TYPO3\CMS\Core\Type\Bitmask\Permission;
20
21 /**
22 * Class PageLayoutControllerTest
23 */
24 class PageLayoutControllerTest extends \TYPO3\Components\TestingFramework\Core\UnitTestCase
25 {
26 /**
27 * @test
28 * @dataProvider pageIsNotLockedForEditorsReturnsCorrectValueDataProvider
29 * @param bool $isAdmin
30 * @param int $permissions
31 * @param bool $editLock
32 * @param bool $expected
33 */
34 public function pageIsNotLockedForEditorsReturnsCorrectValue($isAdmin, $permissions, $editLock, $expected)
35 {
36 /** @var BackendUserAuthentication|\PHPUnit_Framework_MockObject_MockObject $beUserMock */
37 $beUserMock = $this->getMockBuilder(BackendUserAuthentication::class)
38 ->setMethods(['isAdmin'])
39 ->getMock();
40 $beUserMock->method('isAdmin')->will($this->returnValue($isAdmin));
41
42 /** @var PageLayoutController|\PHPUnit_Framework_MockObject_MockObject $pageController */
43 $pageController = $this->getMockBuilder(PageLayoutController::class)
44 ->setMethods(['getBackendUser'])
45 ->getMock();
46 $pageController->method('getBackendUser')->will($this->returnValue($beUserMock));
47
48 $pageController->CALC_PERMS = $permissions;
49 $pageController->pageinfo = ['editlock' => $editLock];
50
51 $this->assertTrue($pageController->pageIsNotLockedForEditors() === $expected);
52 }
53
54 /**
55 * @return array
56 */
57 public function pageIsNotLockedForEditorsReturnsCorrectValueDataProvider()
58 {
59 return [
60 'user is admin' => [ true, 0, false, true],
61 'user has permission' => [ false, Permission::PAGE_EDIT, false, true],
62 'page has permission, but editlock set' => [ false, Permission::PAGE_EDIT, true, false],
63 'user does not have permission' => [ false, 0, false, false],
64 ];
65 }
66 }