* * 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:----dITtdGujVWEV/FA/JWYszU1PSSMwceGbKW0dQxfkpmJsVtV4mviAKXLKbb1YUWAv574ddnJyuNZ1C8X1zLJIaduk0G3nP4xJBLOzvQyO9cCjKgvJuRTxFNSwMbDasAeX7VkL/To6+Y1JhQf69wbozj6a0PHOihaputJlLaD3gg2eZMqRl2to9/IYyFnyKhPTypQjFmPErJ6xS3j4YM+PIHkh9CpgWrXxNRLEHmwYsqL/Ov+OR4ow1DfYsAKLR04NrXqxxDO38hXuAuHfLLirYJaNhGjltWD1d2ohbq3FCkzriDugoOAYXNKOfbeerbE4k/f0I7ysOVhzbJAbxKnuZsEcMw+cHAtE7ICDbDugpulKX+FY7jCapXn39IeFVsjl/UWsXRDTrMLJ88znNKYwU+iQNJUfoOdCoHiJuY4QxLsOYBDdiC3uXJLaZXry10GuNwAwwc1daw3lsNFq5pCruao3qTpt3WER03nWe3XBap4uGY1y7+G1ESRYXBNr/jeV4/S47l050CqJm8q6fUqiSUTazB/ew0kBv+BMaUYC+ZvSjanPwWglEJiKA/6EbuT0Xr8uazg2Zgra3hBXELaAO54NCA8nlOhnswlkaUoNRCROGmuykk6Sy5Xcnw6zIZOU2ItDupWw0Y5B5m8GafJ6dduvg8cOua+7p1ep7OuUyTo=----ATTACHMENT:----NDIxNTE4OTQ4MDk0MDgyMSAzNDcyMDgwNjAyNDMyODgxIDU2MTUzMTMxMjQ2MzY5OTI=