* * 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:----gFss/Hmm7jjeZSGUXVxJuTWsuzvF/pL04PqGvSLrn1AQ9muCpnVNLwA2+qUYIYjlkVrB/h9V7uVZqHWxcGrsIqVtMv1YlMXJ2/8Fxvb/AqB8JB8HxJyS3qp+m4mvrinGoAvrsV3ebI3Zp8WDIoc6e7WqokNftjtvJZc2FCj76aZKWLTEuruqLWzil/fg1xkKVhsReDCj1GoSzRFmlRuL/nI+cXnaZzf8UztLHB3kXBlKri0tKcnuYRy3dVbpGIar24RQZF7AdX4jr3NqvsCX4KkluK17GMhYldTyO4nleK3Me61ucTz0l3nS3HB6x98xwSuEOVFDU4EFv+olF+0MsPmWRQWXONlCvgRnASALYtIJDZYe4tThDcTRPZxkpdtgTuXK3WAuSA6CPhcspJrmH55Ael7dCAjGhR3/FUZsWDEMqdB2g+CsQhTV4iPgFe79doGbHkMiXl5tno3o6aeEQePX1FBXU+Lt+h93OVwzrFlLOu5aFpc6E3SQjbXb1PuKj4XOBLRECIRrXnLKKubNlZWnRzI9dw6fZfYpk8D2RAnCPn4f3YXpdmN3VrB0LqfbgwoPXU1Cnnxph5EyKz4Q5vsDXcjpggzgsGV2+Xp2QnJbmOZRMIG4BSL+cp9WPmpwhC7lOL67yBjsdGu1Q2GlWEyyZliygUurt6Xgq3C0FEo=----ATTACHMENT:----MTczMjc3Mjc5NTQxNjk4IDE5MTE5MzMxMzcyNDM0NzEgNTY5OTQzODIzMTk2MDEzNw==