Commit bea3710e authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Adapteurs d'authentification Db : tests unitaires.

parent 204a2491
......@@ -13,7 +13,7 @@ use ZfcUser\Options\AuthenticationOptionsInterface;
* Adpater d'authentification à partir de la base de données.
*
* Ajout par rapport à la classe mère : si aucune base de données ou table n'existe,
* l'authentification de plante pas.
* l'authentification ne plante pas (i.e. renvoit false).
*
* @author Bertrand GAUTHIER <bertrand.gauthier@unicaen.fr>
*/
......
<?php
namespace UnicaenAuthTest\Authentication\Adapter;
use PDOException;
use PHPUnit_Framework_TestCase;
use UnicaenAuth\Authentication\Adapter\Db;
use UnicaenAuth\Options\ModuleOptions;
use Zend\Http\PhpEnvironment\Request;
use Zend\ServiceManager\Exception\ServiceNotFoundException;
use Zend\Stdlib\Parameters;
use ZfcUser\Authentication\Adapter\AdapterChainEvent;
/**
* Description of DbTest
*
* @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
*/
class DbTest extends PHPUnit_Framework_TestCase
{
protected $adapter;
protected $moduleOptions;
protected $mapper;
/**
* Sets up the fixture, for example, open a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
$this->moduleOptions = $moduleOptions = new ModuleOptions(array(
'cas' => array(
'connection' => array(
'default' => array(
'params' => array(
'hostname' => 'cas.unicaen.fr',
'port' => 443,
'version' => "2.0",
'uri' => "",
'debug' => false,
),
),
),
),
));
$this->mapper = $mapper = $this->getMock('ZfcUser\Mapper\User', array('findByUsername', 'findByEmail'));
$serviceManager = $this->getMock('Zend\ServiceManager\ServiceManager', array('get'));
$serviceManager->expects($this->any())
->method('get')
->will($this->returnCallback(function($serviceName) use ($moduleOptions, $mapper) {
if ('zfcuser_module_options' === $serviceName) {
return new \ZfcUser\Options\ModuleOptions();
}
if ('unicaen-auth_module_options' === $serviceName) {
return $moduleOptions;
}
if ('zfcuser_user_mapper' === $serviceName) {
return $mapper;
}
return null;
}));
$this->adapter = new Db();
$this->adapter->setServiceManager($serviceManager);
}
public function getException()
{
return array(
array(new PDOException()),
array(new ServiceNotFoundException()),
);
}
/**
* @dataProvider getException
*/
public function testAuthenticateReturnsFalseIfExceptionThrown($exception)
{
$this->mapper->expects($this->once())
->method($this->logicalOr('findByUsername', 'findByEmail'))
->will($this->throwException($exception));
$request = new Request();
$request->setPost(new Parameters(array('identity' => 'bob', 'credential' => "xxxxx")));
$event = new AdapterChainEvent();
$event->setRequest($request);
$result = $this->adapter->authenticate($event);
$this->assertFalse($result);
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment