diff -r 806e57d67020 -r e54dfe4d0b2b vendor/bundles/FOS/UserBundle/Tests/DependencyInjection/FOSUserExtensionTest.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/bundles/FOS/UserBundle/Tests/DependencyInjection/FOSUserExtensionTest.php Fri Sep 30 11:24:53 2011 +0200 @@ -0,0 +1,426 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace FOS\UserBundle\Tests\DependencyInjection; + +use Symfony\Component\DependencyInjection\ContainerBuilder; +use FOS\UserBundle\DependencyInjection\FOSUserExtension; +use Symfony\Component\Yaml\Parser; + +class FOSUserExtensionTest extends \PHPUnit_Framework_TestCase +{ + protected $configuration; + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + */ + public function testUserLoadThrowsExceptionUnlessDatabaseDriverSet() + { + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + unset($config['db_driver']); + $loader->load(array($config), new ContainerBuilder()); + } + + /** + * @expectedException \InvalidArgumentException + */ + public function testUserLoadThrowsExceptionUnlessDatabaseDriverIsValid() + { + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $config['db_driver'] = 'foo'; + $loader->load(array($config), new ContainerBuilder()); + } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + */ + public function testUserLoadThrowsExceptionUnlessFirewallNameSet() + { + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + unset($config['firewall_name']); + $loader->load(array($config), new ContainerBuilder()); + } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + */ + public function testUserLoadThrowsExceptionUnlessGroupModelClassSet() + { + $loader = new FOSUserExtension(); + $config = $this->getFullConfig(); + unset($config['group']['group_class']); + $loader->load(array($config), new ContainerBuilder()); + } + + /** + * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException + */ + public function testUserLoadThrowsExceptionUnlessUserModelClassSet() + { + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + unset($config['user_class']); + $loader->load(array($config), new ContainerBuilder()); + } + + public function testDisableRegistration() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $config['registration'] = false; + $loader->load(array($config), $this->configuration); + $this->assertNotHasDefinition('fos_user.registration.form'); + } + + public function testDisableResetting() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $config['resetting'] = false; + $loader->load(array($config), $this->configuration); + $this->assertNotHasDefinition('fos_user.resetting.form'); + } + + public function testDisableProfile() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $config['profile'] = false; + $loader->load(array($config), $this->configuration); + $this->assertNotHasDefinition('fos_user.profile.form'); + } + + public function testDisableChangePassword() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $config['change_password'] = false; + $loader->load(array($config), $this->configuration); + $this->assertNotHasDefinition('fos_user.change_password.form'); + } + + public function testUserLoadModelClassWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter('Acme\MyBundle\Document\User', 'fos_user.model.user.class'); + } + + public function testUserLoadModelClass() + { + $this->createFullConfiguration(); + + $this->assertParameter('Acme\MyBundle\Entity\User', 'fos_user.model.user.class'); + } + + public function testUserLoadManagerClassWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter(null, 'fos_user.model_manager_name'); + $this->assertAlias('fos_user.user_manager.default', 'fos_user.user_manager'); + $this->assertNotHasDefinition('fos_user.group_manager'); + } + + public function testUserLoadManagerClass() + { + $this->createFullConfiguration(); + + $this->assertParameter('custom', 'fos_user.model_manager_name'); + $this->assertAlias('acme_my.user_manager', 'fos_user.user_manager'); + $this->assertAlias('fos_user.group_manager.default', 'fos_user.group_manager'); + } + + public function testUserLoadFormClassWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter('fos_user_profile', 'fos_user.profile.form.type'); + $this->assertParameter('fos_user_registration', 'fos_user.registration.form.type'); + $this->assertParameter('fos_user_change_password', 'fos_user.change_password.form.type'); + $this->assertParameter('fos_user_resetting', 'fos_user.resetting.form.type'); + } + + public function testUserLoadFormClass() + { + $this->createFullConfiguration(); + + $this->assertParameter('acme_my_profile', 'fos_user.profile.form.type'); + $this->assertParameter('acme_my_registration', 'fos_user.registration.form.type'); + $this->assertParameter('acme_my_group', 'fos_user.group.form.type'); + $this->assertParameter('acme_my_change_password', 'fos_user.change_password.form.type'); + $this->assertParameter('acme_my_resetting', 'fos_user.resetting.form.type'); + } + + public function testUserLoadFormNameWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter('fos_user_profile_form', 'fos_user.profile.form.name'); + $this->assertParameter('fos_user_registration_form', 'fos_user.registration.form.name'); + $this->assertParameter('fos_user_change_password_form', 'fos_user.change_password.form.name'); + $this->assertParameter('fos_user_resetting_form', 'fos_user.resetting.form.name'); + } + + public function testUserLoadFormName() + { + $this->createFullConfiguration(); + + $this->assertParameter('acme_profile_form', 'fos_user.profile.form.name'); + $this->assertParameter('acme_registration_form', 'fos_user.registration.form.name'); + $this->assertParameter('acme_group_form', 'fos_user.group.form.name'); + $this->assertParameter('acme_change_password_form', 'fos_user.change_password.form.name'); + $this->assertParameter('acme_resetting_form', 'fos_user.resetting.form.name'); + } + + public function testUserLoadFormServiceWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertHasDefinition('fos_user.profile.form'); + $this->assertHasDefinition('fos_user.registration.form'); + $this->assertNotHasDefinition('fos_user.group.form'); + $this->assertHasDefinition('fos_user.change_password.form'); + $this->assertHasDefinition('fos_user.resetting.form'); + } + + public function testUserLoadFormService() + { + $this->createFullConfiguration(); + + $this->assertHasDefinition('fos_user.profile.form'); + $this->assertHasDefinition('fos_user.registration.form'); + $this->assertHasDefinition('fos_user.group.form'); + $this->assertHasDefinition('fos_user.change_password.form'); + $this->assertHasDefinition('fos_user.resetting.form'); + } + + public function testUserLoadConfirmationEmailWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter(false, 'fos_user.registration.confirmation.enabled'); + $this->assertParameter(array('webmaster@example.com' => 'webmaster'), 'fos_user.registration.confirmation.from_email'); + $this->assertParameter('FOSUserBundle:Registration:email.txt.twig', 'fos_user.registration.confirmation.template'); + $this->assertParameter('FOSUserBundle:Resetting:email.txt.twig', 'fos_user.resetting.email.template'); + $this->assertParameter(array('webmaster@example.com' => 'webmaster'), 'fos_user.resetting.email.from_email'); + $this->assertParameter(86400, 'fos_user.resetting.token_ttl'); + } + + public function testUserLoadConfirmationEmail() + { + $this->createFullConfiguration(); + + $this->assertParameter(true, 'fos_user.registration.confirmation.enabled'); + $this->assertParameter(array('register@acme.org' => 'Acme Corp'), 'fos_user.registration.confirmation.from_email'); + $this->assertParameter('AcmeMyBundle:Registration:mail.txt.twig', 'fos_user.registration.confirmation.template'); + $this->assertParameter('AcmeMyBundle:Resetting:mail.txt.twig', 'fos_user.resetting.email.template'); + $this->assertParameter(array('reset@acme.org' => 'Acme Corp'), 'fos_user.resetting.email.from_email'); + $this->assertParameter(1800, 'fos_user.resetting.token_ttl'); + } + + public function testUserLoadTemplateConfigWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter('twig', 'fos_user.template.engine'); + $this->assertParameter('FOSUserBundle::form.html.twig', 'fos_user.template.theme'); + } + + public function testUserLoadTemplateConfig() + { + $this->createFullConfiguration(); + + $this->assertParameter('php', 'fos_user.template.engine'); + $this->assertParameter('AcmeMyBundle:Form:theme.html.twig', 'fos_user.template.theme'); + } + + public function testUserLoadEncoderConfigWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertParameter('sha512', 'fos_user.encoder.algorithm'); + $this->assertParameter(false, 'fos_user.encoder.encode_as_base64'); + $this->assertParameter(1, 'fos_user.encoder.iterations'); + } + + public function testUserLoadEncoderConfig() + { + $this->createFullConfiguration(); + + $this->assertParameter('sha1', 'fos_user.encoder.algorithm'); + $this->assertParameter(true, 'fos_user.encoder.encode_as_base64'); + $this->assertParameter(3, 'fos_user.encoder.iterations'); + } + + public function testUserLoadUtilServiceWithDefaults() + { + $this->createEmptyConfiguration(); + + $this->assertAlias('fos_user.mailer.default', 'fos_user.mailer'); + $this->assertAlias('fos_user.util.email_canonicalizer.default', 'fos_user.util.email_canonicalizer'); + $this->assertAlias('fos_user.util.username_canonicalizer.default', 'fos_user.util.username_canonicalizer'); + } + + public function testUserLoadUtilService() + { + $this->createFullConfiguration(); + + $this->assertAlias('acme_my.mailer', 'fos_user.mailer'); + $this->assertAlias('acme_my.email_canonicalizer', 'fos_user.util.email_canonicalizer'); + $this->assertAlias('acme_my.username_canonicalizer', 'fos_user.util.username_canonicalizer'); + } + + /** + * @return ContainerBuilder + */ + protected function createEmptyConfiguration() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getEmptyConfig(); + $loader->load(array($config), $this->configuration); + $this->assertTrue($this->configuration instanceof ContainerBuilder); + } + + /** + * @return ContainerBuilder + */ + protected function createFullConfiguration() + { + $this->configuration = new ContainerBuilder(); + $loader = new FOSUserExtension(); + $config = $this->getFullConfig(); + $loader->load(array($config), $this->configuration); + $this->assertTrue($this->configuration instanceof ContainerBuilder); + } + + /** + * getEmptyConfig + * + * @return array + */ + protected function getEmptyConfig() + { + $yaml = <<parse($yaml); + } + + protected function getFullConfig() + { + $yaml = <<parse($yaml); + } + + private function assertAlias($value, $key) + { + $this->assertEquals($value, (string) $this->configuration->getAlias($key), sprintf('%s alias is correct', $key)); + } + + private function assertParameter($value, $key) + { + $this->assertEquals($value, $this->configuration->getParameter($key), sprintf('%s parameter is correct', $key)); + } + + private function assertHasDefinition($id) + { + $this->assertTrue(($this->configuration->hasDefinition($id) ?: $this->configuration->hasAlias($id))); + } + + private function assertNotHasDefinition($id) + { + $this->assertFalse(($this->configuration->hasDefinition($id) ?: $this->configuration->hasAlias($id))); + } + + protected function tearDown() + { + unset($this->configuration); + } +}