Authentication in functional tests in Symfony 2.1 Authentication in functional tests in Symfony 2.1 symfony symfony

Authentication in functional tests in Symfony 2.1


Proper way to authenticate user is:

$firewallName = 'your-firewall-name';$container = self::$kernel->getContainer()$token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles());$container->get('security.context')->setToken($token);

and firewall authentication:

$session = $container->get('session');$session->set('_security_'.$firewallName, serialize($token));$session->save();


I've logged a ticket on: https://github.com/symfony/symfony/issues/3287

There appears to be an existing issue with Symfony 2.1 RC.


In my testsuite (working on 2.0 and now 2.1) I use a Base class WebTestCase that extends the Symfony2 WebTestCase class.

I have these two functions that create an anonymous client or a logged one in my tests:

static protected function createClient(array $options = array(), array $server = array()){    $client = parent::createClient($options, $server);    self::$container = self::$kernel->getContainer();    return $client;}protected function createAuthClient($user, $pass){    return self::createClient(array(), array(        'PHP_AUTH_USER' => $user,        'PHP_AUTH_PW'   => $pass,    ));}

Then, in my Test classes, I use:

    $client = static::createClient();

to create an anon client and

    $client = static::createAuthClient('user','pass');

to create an authenticated one.

This works like a charm on 2.1