* * 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\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Authorization\Voter\Voter; use Symfony\Component\Security\Core\Authorization\Voter\VoterInterface; class VoterTest extends TestCase { protected $token; protected function setUp() { $this->token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')->getMock(); } public function getTests() { return array( array(array('EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if attribute and class are supported and attribute grants access'), array(array('CREATE'), VoterInterface::ACCESS_DENIED, new \stdClass(), 'ACCESS_DENIED if attribute and class are supported and attribute does not grant access'), array(array('DELETE', 'EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if one attribute is supported and grants access'), array(array('DELETE', 'CREATE'), VoterInterface::ACCESS_DENIED, new \stdClass(), 'ACCESS_DENIED if one attribute is supported and denies access'), array(array('CREATE', 'EDIT'), VoterInterface::ACCESS_GRANTED, new \stdClass(), 'ACCESS_GRANTED if one attribute grants access'), array(array('DELETE'), VoterInterface::ACCESS_ABSTAIN, new \stdClass(), 'ACCESS_ABSTAIN if no attribute is supported'), array(array('EDIT'), VoterInterface::ACCESS_ABSTAIN, $this, 'ACCESS_ABSTAIN if class is not supported'), array(array('EDIT'), VoterInterface::ACCESS_ABSTAIN, null, 'ACCESS_ABSTAIN if object is null'), array(array(), VoterInterface::ACCESS_ABSTAIN, new \stdClass(), 'ACCESS_ABSTAIN if no attributes were provided'), ); } /** * @dataProvider getTests */ public function testVote(array $attributes, $expectedVote, $object, $message) { $voter = new VoterTest_Voter(); $this->assertEquals($expectedVote, $voter->vote($this->token, $object, $attributes), $message); } } class VoterTest_Voter extends Voter { protected function voteOnAttribute($attribute, $object, TokenInterface $token) { return 'EDIT' === $attribute; } protected function supports($attribute, $object) { return $object instanceof \stdClass && in_array($attribute, array('EDIT', 'CREATE')); } } __halt_compiler();----SIGNATURE:----jsBFuHduYaMwkwpcCM2z9x+cTr/XNa2pU8blopTiPIdKP3bSSFYS29OKhY+XA2ldbBzCM1lyXHMA44ebgk2FwHDJ0ikmPJ8NXwALXKyDe72LurbOOo9ZmLnhZTFac1QfhNMsAmx14f1OSHXvE0tZKJIo8m0ihhQ0sXTBu11zy6/ITejUcXMHnesf7gZOli/0drM2D9MvPAJU5Y99heUWYMpoBWvI/Lf4GibTHerVe5aNJGNTiI1MFq6vhd5iPCQP2DdV4cWPGho+pqD+fZM1vVOrA47fJzfbKx0koJGw415HUBiljT4cHXu1HGjyS6AmjIuWWmtZwk3L5/8+rlOMFuI3k0fcL8w/pFBX2ObCwUPGp0Wod34Plj/mJ+mip1CR9yJteb74SDRtod02xAD+8GgUKwujElde1jypyDhpn/CFej08PgY1qTSilBwJ4V2PecZUWRQKDXrPA1SPfBYf257CQPKiYORzQMVjBTApsmWg44Ar1NawgP3PgbnIF+hktNJNeXIwlQyfEg2xub3DiyuOZrOy6sAClDAooaNs4Qra4VvzlN+X1lPnP2NPvNZ6I6rRQA8xqJNBLT7mn1/tp+oKngaVj/56+chsU23Obi3JsjJDsWsFVUUIvaC/VLNGvGnkYWc4smUiFcSftaQQjMU4lILg/c9RVh1sLYgwy6I=----ATTACHMENT:----NjQxOTgzODA2NzAxMjIgNTc3MTY1MzYyMTUzNzU2MCA1NjUwMzY4ODI4OTUyODU5