Skip to content
Snippets Groups Projects
Select Git revision
  • 608e4eaab38ae0cd3d30c9f33ae6ba558ec611d8
  • master default protected
  • main
  • update_github_actions
  • 144_rocky8_support
  • 195-update-pdk-to-300
  • 144-rocky8
  • add_test_github_test_workflow
  • pdk_2.4.0
  • fix_unclosed_let_block_in_defines_client_spec
  • validation_fixes
  • freeradius_3_0_21_config_updates
  • data_types
  • PrepareBuster
  • travis
  • 4.0.1
  • 4.0.0
  • 3.9.2
  • 3.9.1
  • 3.9.0
  • 3.8.2
  • 3.8.1
  • 3.8.0
  • 3.7.0
  • 3.6.0
  • 3.5.0
  • 3.4.3
  • 3.4.2
  • 3.4.1
  • 3.4.0
  • 3.3.0
  • 3.2.0
  • 3.1.0
  • 3.0.0
  • 2.3.1
35 results

init.pp

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    AbstractFactoryTest.php 4.06 KiB
    <?php
    namespace UnicaenAuthTest\Authentication\Adapter;
    
    use PHPUnit_Framework_TestCase;
    use UnicaenApp\Mapper\Ldap\People;
    use UnicaenAuth\Authentication\Adapter\AbstractFactory;
    use UnicaenAuth\Service\User;
    use Zend\EventManager\EventManager;
    use Zend\EventManager\EventManagerAwareInterface;
    use Zend\ServiceManager\ServiceManager;
    use UnicaenApp\Exception\LogicException;
    use ZfcUser\Options\ModuleOptions;
    
    /**
     * Description of AbstractFactoryTest
     *
     * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
     */
    class AbstractFactoryTest extends PHPUnit_Framework_TestCase
    {
        /**
         * @var AbstractFactory
         */
        protected $factory;
    
        protected function setUp()
        {
            $this->factory = new AbstractFactory();
        }
    
        public function getInvalidServiceClassName()
        {
            return [
                'unknown-class'   => ['UnicaenAuth\Authentication\Adapter\Xxxx'],
                'wrong-namespace' => ['Any\Other\Namespaced\Class'],
            ];
        }
    
        /**
         * @dataProvider getInvalidServiceClassName
         * @param string $serviceClassName
         */
        public function testCanRefuseCreatingServiceWithInvalidName($serviceClassName)
        {
            $this->assertFalse($this->factory->canCreateServiceWithName(new ServiceManager(), null, $serviceClassName));
        }
    
        public function getValidServiceClassName()
        {
            return [
                'cas'  => ['UnicaenAuth\Authentication\Adapter\Cas'],
                'db'   => ['UnicaenAuth\Authentication\Adapter\Db'],
                'ldap' => ['UnicaenAuth\Authentication\Adapter\Ldap'],
            ];
        }
    
        /**
         * @dataProvider getValidServiceClassName
         * @param string $serviceClassName
         */
        public function testCanAcceptCreatingServiceWithValidName($serviceClassName)
        {
            $this->assertTrue($this->factory->canCreateServiceWithName(new ServiceManager(), null, $serviceClassName));
        }
    
        /**
         * @dataProvider getInvalidServiceClassName
         * @expectedException \UnicaenApp\Exception\LogicException
         * @param string $serviceClassName
         */
        public function testCreateServiceWithNameThrowsExceptionIfInvalidServiceSpecified($serviceClassName)
        {
            $this->factory->createServiceWithName(new ServiceManager(), null, $serviceClassName);
        }
    
        /**
         * @dataProvider getValidServiceClassName
         * @param string $serviceClassName
         */
        public function testCanCreateServiceWithName($serviceClassName)
        {
            $eventManager = new EventManager();
    
            $serviceLocator = $this->createMock('Zend\ServiceManager\ServiceManager'/*, ['get']*/);
            $serviceLocator->expects($this->any())
                           ->method('get')
                           ->will($this->returnCallback(function($serviceName) use ($eventManager) {
                               if ('unicaen-auth_user_service' === $serviceName) {
                                   return new User();
                               }
                               if ('EventManager' === $serviceName) {
                                   return $eventManager;
                               }
                               if ('zfcuser_module_options' === $serviceName) {
                                   return new ModuleOptions();
                               }
                               if ('unicaen-app_module_options' === $serviceName) {
                                   return new \UnicaenApp\Options\ModuleOptions();
                               }
                               if ('unicaen-auth_module_options' === $serviceName) {
                                   return new \UnicaenAuth\Options\ModuleOptions();
                               }
                               if ('ldap_people_mapper' === $serviceName) {
                                   return new People();
                               }
                               return null;
                           }));
    
            $adapter = $this->factory->createServiceWithName($serviceLocator, null, $serviceClassName);
    
            $this->assertInstanceOf($serviceClassName, $adapter);
    
            if ($adapter instanceof EventManagerAwareInterface) {
                $this->assertSame($eventManager, $adapter->getEventManager());
            }
        }
    }