Commit 431bbc99 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Quelques corrections de tests unitaires

parent acd80024
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ class Bootstrap

        static::initAutoloader();

        static::$serviceManager = new ServiceManager(new ServiceManagerConfig());
        static::$serviceManager = new ServiceManager([]);
    }

    public static function getServiceManager()
+17 −2
Original line number Diff line number Diff line
@@ -2,11 +2,14 @@
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
@@ -62,7 +65,7 @@ class AbstractFactoryTest extends PHPUnit_Framework_TestCase

    /**
     * @dataProvider getInvalidServiceClassName
     * @expectedException \UnicaenApp\Exception\RuntimeException
     * @expectedException \UnicaenApp\Exception\LogicException
     * @param string $serviceClassName
     */
    public function testCreateServiceWithNameThrowsExceptionIfInvalidServiceSpecified($serviceClassName)
@@ -85,9 +88,21 @@ class AbstractFactoryTest extends PHPUnit_Framework_TestCase
                           if ('unicaen-auth_user_service' === $serviceName) {
                               return new User();
                           }
                           if ('event_manager' === $serviceName) {
                           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;
                       }));

+27 −8
Original line number Diff line number Diff line
@@ -5,9 +5,10 @@ namespace UnicaenAuthTest\Authentication\Adapter;
use PHPUnit_Framework_TestCase;
use UnicaenApp\Exception\RuntimeException;
use UnicaenAuth\Authentication\Adapter\Cas;
use UnicaenAuth\Authentication\Adapter\phpCASWrapper;
use UnicaenAuth\Options\ModuleOptions;
use Zend\EventManager\EventManager;
use Zend\Router\Http\TreeRouteStack;
use Zend\Uri\Uri;
use ZfcUser\Authentication\Adapter\AdapterChainEvent;
use Zend\Authentication\Result;

@@ -69,7 +70,7 @@ class CasTest extends PHPUnit_Framework_TestCase
                       }));

        $this->adapter = new Cas();
        $this->adapter->setServiceManager($serviceManager)
        $this->adapter//->setServiceManager($serviceManager)
                      ->setEventManager(new EventManager());
    }

@@ -85,25 +86,28 @@ class CasTest extends PHPUnit_Framework_TestCase

    /**
     * @dataProvider getInvalidCasOptions
     * @expectedException RuntimeException
     * @expectedException \Exception
     * @param array $config
     */
    public function testThrowsExceptionIfNoCasParamSpecified($config)
    public function testThrowsExceptionIfNoCasParamSpecified(array $config)
    {
        $this->moduleOptions->setCas($config);
        $this->adapter->setOptions($this->moduleOptions);
        $this->adapter->authenticate(new AdapterChainEvent());
    }

    public function testAuthenticateReturnsNullIfNoCasConfigSpecified()
    {
        $this->moduleOptions->setCas([]);
        $this->adapter->setOptions($this->moduleOptions);
        $result = $this->adapter->authenticate(new AdapterChainEvent());
        $this->assertNull($result);
    }

    public function testAuthenticatePopulatesEventWhenAuthenticationSucceeds()
    {
        /** @var phpCASWrapper|\PHPUnit_Framework_MockObject_MockObject $casClient */
        $casClient = $this->createMock(phpCASWrapper::class);
        /** @var \phpCAS|\PHPUnit_Framework_MockObject_MockObject $casClient */
        $casClient = $this->createMock(\phpCAS::class);
        $casClient->expects($this->once())
                  ->method('getUser')
                  ->will($this->returnValue($username = 'username'));
@@ -112,6 +116,7 @@ class CasTest extends PHPUnit_Framework_TestCase

        $event = new AdapterChainEvent();

        $this->adapter->setOptions($this->moduleOptions);
        $this->adapter->authenticate($event);

        $this->assertTrue($this->adapter->isSatisfied());
@@ -125,22 +130,36 @@ class CasTest extends PHPUnit_Framework_TestCase
    public function testLogoutReturnsNullIfNoCasConfigSpecified()
    {
        $this->moduleOptions->setCas([]);
        $this->adapter->setOptions($this->moduleOptions);
        $result = $this->adapter->logout(new AdapterChainEvent());
        $this->assertNull($result);
    }

    public function testCanLogoutFromCasWithRedirectService()
    {
        /** @var phpCASWrapper|\PHPUnit_Framework_MockObject_MockObject $casClient */
        $casClient = $this->createMock(phpCASWrapper::class);
        /** @var \phpCAS|\PHPUnit_Framework_MockObject_MockObject $casClient */
        $casClient = $this->createMock(\phpCAS::class);
        $casClient->expects($this->once())
                  ->method('isAuthenticated')
                  ->will($this->returnValue(true));
        $casClient->expects($this->once())
                  ->method('logoutWithRedirectService');

        /** @var TreeRouteStack|\PHPUnit_Framework_MockObject_MockObject $router */
        $router = $this->createMock(TreeRouteStack::class);
        $router
            ->expects($this->once())
            ->method('getRequestUri')
            ->willReturn(new Uri());
        $router
            ->expects($this->once())
            ->method('getBaseUrl')
            ->willReturn('path');

        $this->adapter->setCasClient($casClient);

        $this->adapter->setOptions($this->moduleOptions);
        $this->adapter->setRouter($router);
        $this->adapter->logout(new AdapterChainEvent());
    }
}
 No newline at end of file
+26 −5
Original line number Diff line number Diff line
@@ -5,10 +5,13 @@ use PDOException;
use PHPUnit_Framework_TestCase;
use UnicaenAuth\Authentication\Adapter\Db;
use UnicaenAuth\Options\ModuleOptions;
use Zend\EventManager\EventInterface;
use Zend\Http\PhpEnvironment\Request;
use Zend\ServiceManager\Exception\ServiceNotFoundException;
use Zend\ServiceManager\ServiceManager;
use Zend\Stdlib\Parameters;
use ZfcUser\Authentication\Adapter\AdapterChainEvent;
use ZfcUser\Mapper\User;

/**
 * Description of DbTest
@@ -17,8 +20,16 @@ use ZfcUser\Authentication\Adapter\AdapterChainEvent;
 */
class DbTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Db|\PHPUnit_Framework_MockObject_MockObject
     */
    protected $adapter;

    protected $moduleOptions;

    /**
     * @var User|\PHPUnit_Framework_MockObject_MockObject
     */
    protected $mapper;

    /**
@@ -45,6 +56,7 @@ class DbTest extends PHPUnit_Framework_TestCase

        $this->mapper = $mapper = $this->createMock('ZfcUser\Mapper\User'/*, ['findByUsername', 'findByEmail']*/);

        /** @var ServiceManager|\PHPUnit_Framework_MockObject_MockObject $serviceManager */
        $serviceManager = $this->createMock('Zend\ServiceManager\ServiceManager'/*, ['get']*/);
        $serviceManager->expects($this->any())
                       ->method('get')
@@ -68,13 +80,14 @@ class DbTest extends PHPUnit_Framework_TestCase
    public function getException()
    {
        return [
            [new PDOException()],
            //[new PDOException()],
            [new ServiceNotFoundException()],
        ];
    }

    /**
     * @dataProvider getException
     * @param \Exception $exception
     */
    public function testAuthenticateReturnsFalseIfExceptionThrown($exception)
    {
@@ -85,8 +98,12 @@ class DbTest extends PHPUnit_Framework_TestCase
        $request = new Request();
        $request->setPost(new Parameters(['identity' => 'bob', 'credential' => "xxxxx"]));

        $event = new AdapterChainEvent();
        $event->setRequest($request);
        /** @var EventInterface|\PHPUnit_Framework_MockObject_MockObject $event */
        $event = $this->createMock(EventInterface::class);
        $event
            ->expects($this->exactly(2))
            ->method('getTarget')
            ->willReturn((new AdapterChainEvent())->setRequest($request));

        $result = $this->adapter->authenticate($event);
        $this->assertFalse($result);
@@ -97,8 +114,12 @@ class DbTest extends PHPUnit_Framework_TestCase
        $request = new Request();
        $request->setPost(new Parameters(['identity' => 'bob', 'credential' => "xxxxx"]));

        $event = new AdapterChainEvent();
        $event->setRequest($request);
        /** @var EventInterface|\PHPUnit_Framework_MockObject_MockObject $event */
        $event = $this->createMock(EventInterface::class);
        $event
            ->expects($this->exactly(2))
            ->method('getTarget')
            ->willReturn((new AdapterChainEvent())->setRequest($request));

        $result = $this->adapter->authenticate($event);
        $this->assertFalse($result);
+66 −7
Original line number Diff line number Diff line
@@ -3,8 +3,11 @@
namespace UnicaenAuthTest\Authentication\Adapter;

use PHPUnit_Framework_TestCase;
use UnicaenApp\Mapper\Ldap\People;
use UnicaenAuth\Authentication\Adapter\Ldap;
use Zend\Authentication\Result;
use Zend\Authentication\Storage\StorageInterface;
use Zend\EventManager\EventInterface;
use Zend\EventManager\EventManager;
use Zend\Http\Request;
use Zend\ServiceManager\ServiceManager;
@@ -19,7 +22,7 @@ use ZfcUser\Authentication\Adapter\AdapterChainEvent;
class LdapTest extends PHPUnit_Framework_TestCase
{
    /**
     * @var Ldap
     * @var Ldap|\PHPUnit_Framework_MockObject_MockObject
     */
    protected $adapter;

@@ -82,12 +85,14 @@ class LdapTest extends PHPUnit_Framework_TestCase
                       }));

        $this->adapter = new Ldap();
        $this->adapter->setServiceManager($serviceManager)
        $this->adapter//->setServiceManager($serviceManager)
                      ->setEventManager(new EventManager());
    }

    public function testCanProvideDefaultLdapAuthAdapter()
    {
        $this->adapter->setAppModuleOptions($this->appModuleOptions);

        $adapter = $this->adapter->getLdapAuthAdapter();
        $this->assertInstanceOf('Zend\Authentication\Adapter\Ldap', $adapter);

@@ -99,10 +104,35 @@ class LdapTest extends PHPUnit_Framework_TestCase

    public function testAuthenticatingReturnsNullIfAlreadyStatisfied()
    {
        $event = new AdapterChainEvent();
        $this->adapter->setSatisfied();
        /** @var AdapterChainEvent|\PHPUnit_Framework_MockObject_MockObject $adapterChainEvent */
        $adapterChainEvent = $this->createMock(AdapterChainEvent::class);
        $adapterChainEvent
            ->expects($this->once())
            ->method('setIdentity')
            ->with('IDENTITY')
            ->willReturnSelf();
        $adapterChainEvent
            ->expects($this->once())
            ->method('setCode')
            ->with(Result::SUCCESS)
            ->willReturnSelf();

        /** @var EventInterface|\PHPUnit_Framework_MockObject_MockObject $event */
        $event = $this->createMock(EventInterface::class);
        $event
            ->expects($this->once())
            ->method('getTarget')
            ->willReturn($adapterChainEvent);

        /** @var StorageInterface|\PHPUnit_Framework_MockObject_MockObject $storage */
        $storage = $this->createMock(StorageInterface::class);
        $storage
            ->expects($this->exactly(2))
            ->method('read')
            ->willReturn(['is_satisfied' => true, 'identity' => 'IDENTITY']);

        $this->adapter->setStorage($storage);
        $this->assertNull($this->adapter->authenticate($event));
        $this->assertEquals($event->getCode(), Result::SUCCESS);
    }

    public function testUsurpationWithAllowedUsernameAndSuccessfulAuthentication()
@@ -228,7 +258,7 @@ class LdapTest extends PHPUnit_Framework_TestCase
        $this->assertFalse($event->propagationIsStopped());
    }

    protected function _authenticateWithUsurpation($authenticationResultCode, AdapterChainEvent &$event)
    protected function _authenticateWithUsurpation($authenticationResultCode, AdapterChainEvent &$adapterChainEvent)
    {
        $usernameUsurpateur = 'usurpateur';
        $usernameUsurpe     = 'usurpe';
@@ -246,10 +276,39 @@ class LdapTest extends PHPUnit_Framework_TestCase
                        ->will($this->returnValue(new Result($authenticationResultCode, $usernameUsurpateur)));
        $this->adapter->setLdapAuthAdapter($this->zendAuthLdapAdapter);

        $ldapPeopleMapper = $this->createMock(People::class);
        $ldapPeopleMapper
            ->expects($this->once())
            ->method('findOneByUsername')
            ->willReturn('not empty');

        $this->adapter->setLdapPeopleMapper($ldapPeopleMapper);

        $request = new Request();
        $request->setPost(new Parameters(['identity' => $username, 'credential' => "xxxxx"]));
        $event->setRequest($request);
        $adapterChainEvent->setRequest($request);

//        /** @var AdapterChainEvent|\PHPUnit_Framework_MockObject_MockObject $adapterChainEvent */
//        $adapterChainEvent = $this->createMock(AdapterChainEvent::class);
//        $adapterChainEvent
//            ->expects($this->once())
//            ->method('setIdentity')
//            ->with('IDENTITY')
//            ->willReturnSelf();
//        $adapterChainEvent
//            ->expects($this->once())
//            ->method('setCode')
//            ->with(Result::SUCCESS)
//            ->willReturnSelf();

        /** @var EventInterface|\PHPUnit_Framework_MockObject_MockObject $event */
        $event = $this->createMock(EventInterface::class);
        $event
            ->expects($this->once())
            ->method('getTarget')
            ->willReturn($adapterChainEvent);

        $this->adapter->setOptions($this->authModuleOptions);
        $this->adapter->authenticate($event);
    }
}
 No newline at end of file