Skip to content

Commit

Permalink
[TASK] Simplify frontend/backend security viewhelpers
Browse files Browse the repository at this point in the history
This logic is already implemented in
AbstractConditionViewHelper::renderStatic().

Resolves: #84627
Releases: master
Change-Id: Iaf1fa4630fcc5df0ef22bec55d4fa15df1aa0986
Reviewed-on: https://review.typo3.org/56561
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Tested-by: Stefan Neufeind <typo3.neufeind@speedpartner.de>
Reviewed-by: Benni Mack <benni@typo3.org>
Tested-by: Benni Mack <benni@typo3.org>
  • Loading branch information
mbrodala authored and bmack committed Apr 6, 2018
1 parent 8b17154 commit c2f3876
Show file tree
Hide file tree
Showing 8 changed files with 111 additions and 84 deletions.
Expand Up @@ -59,15 +59,4 @@ protected static function evaluateCondition($arguments = null)
{
return isset($GLOBALS['BE_USER']) && $GLOBALS['BE_USER']->user['uid'] > 0;
}

/**
* @return mixed
*/
public function render()
{
if (static::evaluateCondition($this->arguments)) {
return $this->renderThenChild();
}
return $this->renderElseChild();
}
}
Expand Up @@ -95,15 +95,4 @@ protected static function evaluateCondition($arguments = null)
}
return false;
}

/**
* @return mixed
*/
public function render()
{
if (static::evaluateCondition($this->arguments)) {
return $this->renderThenChild();
}
return $this->renderElseChild();
}
}
Expand Up @@ -59,15 +59,4 @@ protected static function evaluateCondition($arguments = null)
{
return isset($GLOBALS['TSFE']) && $GLOBALS['TSFE']->loginUser;
}

/**
* @return mixed
*/
public function render()
{
if (static::evaluateCondition($this->arguments)) {
return $this->renderThenChild();
}
return $this->renderElseChild();
}
}
Expand Up @@ -85,15 +85,4 @@ protected static function evaluateCondition($arguments = null)
}
return is_array($GLOBALS['TSFE']->fe_user->groupData['title']) && in_array($role, $GLOBALS['TSFE']->fe_user->groupData['title']);
}

/**
* @return mixed
*/
public function render()
{
if (static::evaluateCondition($this->arguments)) {
return $this->renderThenChild();
}
return $this->renderElseChild();
}
}
Expand Up @@ -17,6 +17,7 @@

use TYPO3\CMS\Fluid\ViewHelpers\Be\Security\IfAuthenticatedViewHelper;
use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
* Testcase for be.security.ifAuthenticated view helper
Expand All @@ -32,20 +33,30 @@ protected function setUp()
{
parent::setUp();
$GLOBALS['BE_USER'] = new \stdClass();
$this->viewHelper = $this->getAccessibleMock(IfAuthenticatedViewHelper::class, ['renderThenChild', 'renderElseChild']);
$this->viewHelper->expects($this->any())->method('renderThenChild')->will($this->returnValue('then child'));
$this->viewHelper->expects($this->any())->method('renderElseChild')->will($this->returnValue('else child'));
$this->viewHelper = new IfAuthenticatedViewHelper();
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$this->viewHelper->initializeArguments();
}

protected function tearDown()
{
unset($GLOBALS['BE_USER']);
}

/**
* @test
*/
public function viewHelperRendersThenChildIfBeUserIsLoggedIn()
{
$GLOBALS['BE_USER']->user = ['uid' => 1];
$actualResult = $this->viewHelper->render();

$actualResult = $this->viewHelper->renderStatic(
['then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$this->assertEquals('then child', $actualResult);
}

Expand All @@ -55,7 +66,14 @@ public function viewHelperRendersThenChildIfBeUserIsLoggedIn()
public function viewHelperRendersElseChildIfBeUserIsNotLoggedIn()
{
$GLOBALS['BE_USER']->user = ['uid' => 0];
$actualResult = $this->viewHelper->render();

$actualResult = $this->viewHelper->renderStatic(
['then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$this->assertEquals('else child', $actualResult);
}
}
Expand Up @@ -14,7 +14,9 @@
* The TYPO3 project - inspiring people to share!
*/

use TYPO3\CMS\Fluid\ViewHelpers\Be\Security\IfHasRoleViewHelper;
use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
* Testcase for be.security.ifHasRole view helper
Expand All @@ -40,22 +42,28 @@ protected function setUp()
'title' => 'OtherRole'
]
];
$this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Be\Security\IfHasRoleViewHelper::class, ['renderThenChild', 'renderElseChild']);
$this->viewHelper->expects($this->any())->method('renderThenChild')->will($this->returnValue('then child'));
$this->viewHelper->expects($this->any())->method('renderElseChild')->will($this->returnValue('else child'));
$this->viewHelper = new IfHasRoleViewHelper();
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$this->viewHelper->initializeArguments();
}

protected function tearDown()
{
unset($GLOBALS['BE_USER']);
}

/**
* @test
*/
public function viewHelperRendersThenChildIfBeUserWithSpecifiedRoleIsLoggedIn()
{
$this->arguments['role'] = 'Editor';
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 'Editor', 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render('Editor');
$this->assertEquals('then child', $actualResult);
}

Expand All @@ -64,10 +72,13 @@ public function viewHelperRendersThenChildIfBeUserWithSpecifiedRoleIsLoggedIn()
*/
public function viewHelperRendersThenChildIfBeUserWithSpecifiedRoleIdIsLoggedIn()
{
$this->arguments['role'] = 1;
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 1, 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render(1);
$this->assertEquals('then child', $actualResult);
}

Expand All @@ -76,10 +87,13 @@ public function viewHelperRendersThenChildIfBeUserWithSpecifiedRoleIdIsLoggedIn(
*/
public function viewHelperRendersElseChildIfBeUserWithSpecifiedRoleIsNotLoggedIn()
{
$this->arguments['role'] = 'editor';
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 'NonExistingRole', 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render('editor');
$this->assertEquals('else child', $actualResult);
}

Expand All @@ -88,10 +102,13 @@ public function viewHelperRendersElseChildIfBeUserWithSpecifiedRoleIsNotLoggedIn
*/
public function viewHelperRendersElseChildIfBeUserWithSpecifiedRoleIdIsNotLoggedIn()
{
$this->arguments['role'] = 123;
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 123, 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render(123);
$this->assertEquals('else child', $actualResult);
}
}
Expand Up @@ -14,7 +14,9 @@
* The TYPO3 project - inspiring people to share!
*/

use TYPO3\CMS\Fluid\ViewHelpers\Security\IfAuthenticatedViewHelper;
use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
* Testcase for security.ifAuthenticated view helper
Expand All @@ -30,20 +32,30 @@ protected function setUp()
{
parent::setUp();
$GLOBALS['TSFE'] = new \stdClass();
$this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Security\IfAuthenticatedViewHelper::class, ['renderThenChild', 'renderElseChild']);
$this->viewHelper->expects($this->any())->method('renderThenChild')->will($this->returnValue('then child'));
$this->viewHelper->expects($this->any())->method('renderElseChild')->will($this->returnValue('else child'));
$this->viewHelper = new IfAuthenticatedViewHelper();
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$this->viewHelper->initializeArguments();
}

protected function tearDown()
{
unset($GLOBALS['TSFE']);
}

/**
* @test
*/
public function viewHelperRendersThenChildIfFeUserIsLoggedIn()
{
$GLOBALS['TSFE']->loginUser = 1;
$actualResult = $this->viewHelper->render();

$actualResult = $this->viewHelper->renderStatic(
['then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$this->assertEquals('then child', $actualResult);
}

Expand All @@ -53,7 +65,14 @@ public function viewHelperRendersThenChildIfFeUserIsLoggedIn()
public function viewHelperRendersElseChildIfFeUserIsNotLoggedIn()
{
$GLOBALS['TSFE']->loginUser = 0;
$actualResult = $this->viewHelper->render();

$actualResult = $this->viewHelper->renderStatic(
['then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$this->assertEquals('else child', $actualResult);
}
}
Expand Up @@ -14,7 +14,9 @@
* The TYPO3 project - inspiring people to share!
*/

use TYPO3\CMS\Fluid\ViewHelpers\Security\IfHasRoleViewHelper;
use TYPO3\TestingFramework\Fluid\Unit\ViewHelpers\ViewHelperBaseTestcase;
use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;

/**
* Testcase for security.ifHasRole view helper
Expand All @@ -36,22 +38,28 @@ protected function setUp()
'uid' => [1, 2],
'title' => ['Editor', 'OtherRole']
];
$this->viewHelper = $this->getAccessibleMock(\TYPO3\CMS\Fluid\ViewHelpers\Security\IfHasRoleViewHelper::class, ['renderThenChild', 'renderElseChild']);
$this->viewHelper->expects($this->any())->method('renderThenChild')->will($this->returnValue('then child'));
$this->viewHelper->expects($this->any())->method('renderElseChild')->will($this->returnValue('else child'));
$this->viewHelper = new IfHasRoleViewHelper();
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$this->viewHelper->initializeArguments();
}

protected function tearDown()
{
unset($GLOBALS['TSFE']);
}

/**
* @test
*/
public function viewHelperRendersThenChildIfFeUserWithSpecifiedRoleIsLoggedIn()
{
$this->arguments['role'] = 'Editor';
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 'Editor', 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render('Editor');
$this->assertEquals('then child', $actualResult);
}

Expand All @@ -60,10 +68,13 @@ public function viewHelperRendersThenChildIfFeUserWithSpecifiedRoleIsLoggedIn()
*/
public function viewHelperRendersThenChildIfFeUserWithSpecifiedRoleIdIsLoggedIn()
{
$this->arguments['role'] = 1;
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 1, 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render(1);
$this->assertEquals('then child', $actualResult);
}

Expand All @@ -72,10 +83,13 @@ public function viewHelperRendersThenChildIfFeUserWithSpecifiedRoleIdIsLoggedIn(
*/
public function viewHelperRendersElseChildIfFeUserWithSpecifiedRoleIsNotLoggedIn()
{
$this->arguments['role'] = 'NonExistingRole';
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 'NonExistingRole', 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render('NonExistingRole');
$this->assertEquals('else child', $actualResult);
}

Expand All @@ -84,10 +98,13 @@ public function viewHelperRendersElseChildIfFeUserWithSpecifiedRoleIsNotLoggedIn
*/
public function viewHelperRendersElseChildIfFeUserWithSpecifiedRoleIdIsNotLoggedIn()
{
$this->arguments['role'] = 123;
$this->injectDependenciesIntoViewHelper($this->viewHelper);
$actualResult = $this->viewHelper->renderStatic(
['role' => 123, 'then' => 'then child', 'else' => 'else child'],
function () {
},
$this->prophesize(RenderingContextInterface::class)->reveal()
);

$actualResult = $this->viewHelper->render(123);
$this->assertEquals('else child', $actualResult);
}
}

0 comments on commit c2f3876

Please sign in to comment.