diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php index daeeb6fbd961..6cdb9deb8f93 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php @@ -66,9 +66,7 @@ public function getConfigTreeBuilder() return false; }) ->then(function ($v) { - $v['access_decision_manager'] = array( - 'strategy' => AccessDecisionManager::STRATEGY_AFFIRMATIVE, - ); + $v['access_decision_manager']['strategy'] = AccessDecisionManager::STRATEGY_AFFIRMATIVE; return $v; }) diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTest.php index d2f7e2c60e1f..15b43bede956 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/CompleteConfigurationTest.php @@ -555,11 +555,22 @@ public function testCustomAccessDecisionManagerService() /** * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException - * @expectedExceptionMessage "strategy" and "service" cannot be used together. + * @expectedExceptionMessage Invalid configuration for path "security.access_decision_manager": "strategy" and "service" cannot be used together. */ public function testAccessDecisionManagerServiceAndStrategyCannotBeUsedAtTheSameTime() { - $container = $this->getContainer('access_decision_manager_service_and_strategy'); + $this->getContainer('access_decision_manager_service_and_strategy'); + } + + public function testAccessDecisionManagerOptionsAreNotOverriddenByImplicitStrategy() + { + $container = $this->getContainer('access_decision_manager_customized_config'); + + $accessDecisionManagerDefinition = $container->getDefinition('security.access.decision_manager'); + + $this->assertSame(AccessDecisionManager::STRATEGY_AFFIRMATIVE, $accessDecisionManagerDefinition->getArgument(1)); + $this->assertTrue($accessDecisionManagerDefinition->getArgument(2)); + $this->assertFalse($accessDecisionManagerDefinition->getArgument(3)); } /** diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/access_decision_manager_customized_config.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/access_decision_manager_customized_config.php new file mode 100644 index 000000000000..cd3cc1200075 --- /dev/null +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/php/access_decision_manager_customized_config.php @@ -0,0 +1,20 @@ +loadFromExtension('security', array( + 'access_decision_manager' => array( + 'allow_if_all_abstain' => true, + 'allow_if_equal_granted_denied' => false, + ), + 'providers' => array( + 'default' => array( + 'memory' => array( + 'users' => array( + 'foo' => array('password' => 'foo', 'roles' => 'ROLE_USER'), + ), + ), + ), + ), + 'firewalls' => array( + 'simple' => array('pattern' => '/login', 'security' => false), + ), +)); diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/access_decision_manager_customized_config.xml b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/access_decision_manager_customized_config.xml new file mode 100644 index 000000000000..22123dfa21ce --- /dev/null +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/xml/access_decision_manager_customized_config.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/access_decision_manager_customized_config.yml b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/access_decision_manager_customized_config.yml new file mode 100644 index 000000000000..a8d044f1dec5 --- /dev/null +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/Fixtures/yml/access_decision_manager_customized_config.yml @@ -0,0 +1,11 @@ +security: + access_decision_manager: + allow_if_all_abstain: true + allow_if_equal_granted_denied: false + providers: + default: + memory: + users: + foo: { password: foo, roles: ROLE_USER } + firewalls: + simple: { pattern: /login, security: false }