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