Я хочу создать авторизованного клиента для моего функционального теста.
Я использую Symfony 4.1, PHPUnit 6.5.9 и FOSUserBundle для управления пользователями.
Я попробовал этот код, но он не работает:
class BrandTest extends WebTestCase
{
public function testBrand()
{
$client = $this->createAuthorizedClient();
$client->request('GET', '/account/brand');
$this->assertTrue($client->getResponse()->isSuccessful());
}
public function createAuthorizedClient()
{
$client = static::createClient();
$container = $client->getContainer();
$session = $container->get('session');
/** @var $userManager \FOS\UserBundle\Doctrine\UserManager */
$userManager = $container->get('fos_user.user_manager');
$firewallName = $container->getParameter('fos_user.firewall_name');
$user = $userManager->findUserBy(array('email' => 'mymail@gmail.com'));
$token = new UsernamePasswordToken($user, $user->getPassword(), $firewallName, $user->getRoles());
$session->set('_security_' . $firewallName, serialize($token));
$session->save();
$client->getCookieJar()->set(new Cookie($session->getName(), $session->getId()));
return $client;
}
}