Не получается написать тест для проверки страницы, доступ на которую разрешен только определенной группе пользователей (ROLE_USER). При этом проверка SecurityContext->isGranted('ROLE_USER') проходит. А когда стучусь на страницу, идет редирект на /login . Что не так?
Пример кода файла теста:
//...src/...Tests/SomeTest.php
private function login()
{
$session = $this->container->get('session');
$user = $this->doctrine->getManager()
->getRepository('ApplicationSonataUserBundle:User')
->findOneBy(
array(
'username' => self::LOGIN
)
);
$userManager = $this->container->get('fos_user.user_manager');
$sfUser = $userManager->findUserByUsername(self::LOGIN);
$token = new UsernamePasswordToken($sfUser, $user->getPassword(),'main', $user->getRoles() );
$session->set('_security_'.self::FIREWALL, serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$this->client->getCookieJar()->set($cookie);
$this->container->get('security.context')->setToken($token);
return $session->getId();
}
public function testPriceListPageActive()
{
$PHPSESSID = $this->login();
$securityContext = $this->container->get('security.context');
//вот здесь проверка проходит - все ок
if( $securityContext->isGranted('ROLE_USER') ){
//а request не проходит, делает редирект на /login
$crawler = $this->client->request( 'GET', '/pricelist/page' ,[],[],['Cookie' => 'PHPSESSID='.$PHPSESSID] );
}
else {
throw new \Exception("Error Access Denied");
}
}
Буду рад ответу тем кто реализовал такие тесты без HTTP_BASIC авторизации.
Прошу подсказать, возможно, неверные заголовки отсылаю.