Skip to content

Instantly share code, notes, and snippets.

@fpapadopou
Forked from beberlei/MyWebTestCase.php
Last active September 3, 2017 15:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fpapadopou/417b0e0576a55ffbdeffc16cfef60b78 to your computer and use it in GitHub Desktop.
Save fpapadopou/417b0e0576a55ffbdeffc16cfef60b78 to your computer and use it in GitHub Desktop.
Easily Inject authenticated Symfony User objects into functional test
<?php
use Liip\FunctionalTestBundle\Test\WebTestCase;
use Symfony\Component\HttpKernel\Profiler\Profiler;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Core\User\UserInterface;
/**
* @group functional
*/
class MyWebTestCase extends WebTestCase
{
abstract protected function getCurrentUser();
/**
* @param string $firewallName
* @param array $options
* @param array $server
* @return Symfony\Component\BrowserKit\Client
*/
protected function createClientWithAuthentication($firewallName, array $options = array(), array $server = array())
{
/* @var $client \Symfony\Component\BrowserKit\Client */
$client = $this->createClient($options, $server);
// has to be set otherwise "hasPreviousSession" in Request returns false.
$client->getCookieJar()->set(new \Symfony\Component\BrowserKit\Cookie(session_name(), true));
/* @var $user UserInterface */
$user = $this->getCurrentUser();
$token = new UsernamePasswordToken($user, null, $firewallName, $user->getRoles());
self::$kernel->getContainer()->get('session')->set('_security_' . $firewallName, serialize($token));
return $client;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment