* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Security\Core\Tests\Authorization\Voter; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Authorization\Voter\ExpressionVoter; use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; use Symfony\Component\Security\Core\Role\Role; class ExpressionVoterTest extends TestCase { /** * @dataProvider getVoteTests */ public function testVote($roles, $attributes, $expected, $tokenExpectsGetRoles = true, $expressionLanguageExpectsEvaluate = true) { $voter = new ExpressionVoter($this->createExpressionLanguage($expressionLanguageExpectsEvaluate), $this->createTrustResolver()); $this->assertSame($expected, $voter->vote($this->getToken($roles, $tokenExpectsGetRoles), null, $attributes)); } public function getVoteTests() { return array( array(array(), array(), VoterInterface::ACCESS_ABSTAIN, false, false), array(array(), array('FOO'), VoterInterface::ACCESS_ABSTAIN, false, false), array(array(), array($this->createExpression()), VoterInterface::ACCESS_DENIED, true, false), array(array('ROLE_FOO'), array($this->createExpression(), $this->createExpression()), VoterInterface::ACCESS_GRANTED), array(array('ROLE_BAR', 'ROLE_FOO'), array($this->createExpression()), VoterInterface::ACCESS_GRANTED), ); } protected function getToken(array $roles, $tokenExpectsGetRoles = true) { foreach ($roles as $i => $role) { $roles[$i] = new Role($role); } $token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock(); if ($tokenExpectsGetRoles) { $token->expects($this->once()) ->method('getRoles') ->will($this->returnValue($roles)); } return $token; } protected function createExpressionLanguage($expressionLanguageExpectsEvaluate = true) { $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Authorization\ExpressionLanguage')->getMock(); if ($expressionLanguageExpectsEvaluate) { $mock->expects($this->once()) ->method('evaluate') ->will($this->returnValue(true)); } return $mock; } protected function createTrustResolver() { return $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\AuthenticationTrustResolverInterface')->getMock(); } protected function createRoleHierarchy() { return $this->getMockBuilder('Symfony\Component\Security\Core\Role\RoleHierarchyInterface')->getMock(); } protected function createExpression() { return $this->getMockBuilder('Symfony\Component\ExpressionLanguage\Expression') ->disableOriginalConstructor() ->getMock(); } } __halt_compiler();----SIGNATURE:----lxyCMJh0Uvnmj35CLRzk+6mVLycAIFwOCeOp5519tGY+zSBBIptNOmpNtS/Hku2vrxvbBNSdcRdsuyTXtavRMN3HXuRE7knoUjcndZIANwe6IVQnn4cfXGACT7iGTgRT5rMwNLkSIGuUHCBMsJmSDg2tUsq7NSs/zVYj69M+3VgRLF3Rb0qEYYw3OK2iQ6aBfaEe33A7W/BcHV/TRjAnXgf3rCmoGwY6O2g5TCEy/QFhqAEOY+5x7zIZkvuFoyYPMb6xgDuvEzhWtUwBmcmEoUFV97CTTR1OuDjYX8zW0zKfqBLUDywPPeDHEivnhesYHP643rO3dJOLEKYPWE4kPVLUbdVflB1xjbvLvDHNWQclpPXt7/FXyYxSMg9aIeVzP0zdKx/n3VuSw1X6Nu/fm/0I1Z1JRB2gMGM26dcI3L5UeSGw5B7CpDArUHM5QSjNCqzt0PkSylC0vVH6z4EG9vl23pqXG6U8Se1Z6b1pkzMN9xYdMiY0zhZxJVWpO3x4BvGhB2ah5leLqPtUHedMV1pKKAMPqpv3RJ38TylxRPLa3l1S9DUn1SI2XIWMNZ7mw2XKNyfDWOeIwk0CQ/10w4FyX/aSEl4E68sDNB/LpY5+X8uMS+uUkhGHvVQnE42Tq4tbLcA4ApJlaVcSPRkE9Q7hpxnGGWdMo1ZTvzJlC8k=----ATTACHMENT:----MzY0NzM3ODI5MDA0MDMxNyA5MzMxOTA1NjYxNjU2ODA0IDM5NzQyOTE5NzUzMTgzMDY=