neoDSI   CTO & Développeur back-end symfony
+33 6 62 75 87 89 Contact

Test unitaire de l’authentification dans symfony2 avec phpunit

article symfony2 security

Lors des tests unitaires il faut s’authentifier pour avoir accès aux pages qui sont sécurisées et derrière le firewall de la sécurité symfony.

Dans la classe de test de cette partie, on commence par ajouter les use sur les namespaces nécessaires :

use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\BrowserKit\Cookie;

Ensuite dans la méthode de test :

$token = new UsernamePasswordToken('username', 'password', 'secured_area', array('ROLE_USER'));
$session = static::$kernel->getContainer()->get('session');
$session->set('_security_secured_area', serialize($token));
$session->save();
$client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));

On commence par créer un token en fonction du username, de son mot de passe, du nom de la zone firewalls de symfony (du security.yml), et du role du user. On peut aussi retrouver tout ceci avec la classe qui gère les users.

Les lignes suivantes permettent de mettre en session le token (avec la clé _security_secured_area qui reprend le nom de la zone firewalls).

On peut ensuite tester les pages qui demandent une authentification.