summaryrefslogtreecommitdiffstats
path: root/Core/Tests/Authorization/AccessDecisionManagerTest.php
diff options
context:
space:
mode:
authorFabien Potencier <fabien.potencier@gmail.com>2014-09-17 11:50:16 +0200
committerFabien Potencier <fabien.potencier@gmail.com>2014-09-17 11:50:16 +0200
commit8f099fcbce1ba9a86d5b15c5558de80a8242d91e (patch)
treefd25782e7a61f93914d3fa44c98c81ffa33f91ac /Core/Tests/Authorization/AccessDecisionManagerTest.php
parent1b9e95cbb20689db16a5c309faf6fae362417d92 (diff)
parent9aefee358bddb7baf5ae57607f4af2e721397f58 (diff)
downloadsymfony-security-8f099fcbce1ba9a86d5b15c5558de80a8242d91e.zip
symfony-security-8f099fcbce1ba9a86d5b15c5558de80a8242d91e.tar.gz
symfony-security-8f099fcbce1ba9a86d5b15c5558de80a8242d91e.tar.bz2
Merge branch '2.4' into 2.5
* 2.4: (39 commits) [Form] Fix PHPDoc for builder setData methods The underlying data variable is typed as mixed whereas the methods paramers where typed as array. fixed CS [Intl] Improved bundle reader implementations [Console] guarded against invalid aliases switch before_script to before_install and script to install fixed typo [HttpFoundation] Request - URI - comment improvements [Validator] The ratio of the ImageValidator is rounded to two decimals now [Security] Added more tests remove `service` parameter type from XSD [Intl] Added exception handler to command line scripts [Intl] Fixed a few bugs in TextBundleWriter [Intl] Updated icu.ini up to ICU 53 [Intl] Removed non-working $fallback argument from ArrayAccessibleResourceBundle Use separated function to resolve command and related arguments [SwiftmailerBridge] Bump allowed versions of swiftmailer [FrameworkBundle] Remove invalid markup [Intl] Added "internal" tag to all classes under Symfony\Component\Intl\ResourceBundle Remove routes for removed WebProfiler actions [Security] Fix usage of unexistent method in DoctrineAclCache. ... Conflicts: .travis.yml src/Symfony/Bundle/FrameworkBundle/Command/ServerRunCommand.php src/Symfony/Component/HttpKernel/Kernel.php src/Symfony/Component/Process/PhpExecutableFinder.php
Diffstat (limited to 'Core/Tests/Authorization/AccessDecisionManagerTest.php')
-rw-r--r--Core/Tests/Authorization/AccessDecisionManagerTest.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/Core/Tests/Authorization/AccessDecisionManagerTest.php b/Core/Tests/Authorization/AccessDecisionManagerTest.php
index e182838..34c3514 100644
--- a/Core/Tests/Authorization/AccessDecisionManagerTest.php
+++ b/Core/Tests/Authorization/AccessDecisionManagerTest.php
@@ -73,6 +73,48 @@ class AccessDecisionManagerTest extends \PHPUnit_Framework_TestCase
$this->assertSame($expected, $manager->decide($token, array('ROLE_FOO')));
}
+ /**
+ * @dataProvider getStrategiesWith2RolesTests
+ */
+ public function testStrategiesWith2Roles($token, $strategy, $voter, $expected)
+ {
+ $manager = new AccessDecisionManager(array($voter), $strategy);
+
+ $this->assertSame($expected, $manager->decide($token, array('ROLE_FOO', 'ROLE_BAR')));
+ }
+
+ public function getStrategiesWith2RolesTests()
+ {
+ $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
+
+ return array(
+ array($token, 'affirmative', $this->getVoter(VoterInterface::ACCESS_DENIED), false),
+ array($token, 'affirmative', $this->getVoter(VoterInterface::ACCESS_GRANTED), true),
+
+ array($token, 'consensus', $this->getVoter(VoterInterface::ACCESS_DENIED), false),
+ array($token, 'consensus', $this->getVoter(VoterInterface::ACCESS_GRANTED), true),
+
+ array($token, 'unanimous', $this->getVoterFor2Roles($token, VoterInterface::ACCESS_DENIED, VoterInterface::ACCESS_DENIED), false),
+ array($token, 'unanimous', $this->getVoterFor2Roles($token, VoterInterface::ACCESS_DENIED, VoterInterface::ACCESS_GRANTED), false),
+ array($token, 'unanimous', $this->getVoterFor2Roles($token, VoterInterface::ACCESS_GRANTED, VoterInterface::ACCESS_DENIED), false),
+ array($token, 'unanimous', $this->getVoterFor2Roles($token, VoterInterface::ACCESS_GRANTED, VoterInterface::ACCESS_GRANTED), true),
+ );
+ }
+
+ protected function getVoterFor2Roles($token, $vote1, $vote2)
+ {
+ $voter = $this->getMock('Symfony\Component\Security\Core\Authorization\Voter\VoterInterface');
+ $voter->expects($this->exactly(2))
+ ->method('vote')
+ ->will($this->returnValueMap(array(
+ array($token, null, array("ROLE_FOO"),$vote1),
+ array($token, null, array("ROLE_BAR"),$vote2),
+ )))
+ ;
+
+ return $voter;
+ }
+
public function getStrategyTests()
{
return array(