Как имитировать аутентификацию через HWIOAuth в функциональном тесте Symfony2?
HWIOAuthBundle - это набор композиторов, позволяющий осуществлять социальный вход в проекты Symfony2:
https://github.com/hwi/HWIOAuthBundle
В документах Symfony2 приведен пример того, как имитировать аутентификацию в функциональном тесте:
http://symfony.com/doc/current/cookbook/testing/simulating_authentication.html
Мне не удалось заставить этих двух работать вместе в моих тестах. Система безопасности Symfony2 указывает, что есть не анонимный пользователь, но getUser() в моих контроллерах возвращает null.
У кого-то был успех с этим или есть некоторые указатели на то, как лучше всего отлаживать или реализовывать?
Использование:
- Symfony2 - 2.6.3
- HWIOAuthBundle - dev-master - 309d802f8de9f39e30851a145a7fc0de69b94076
Ответы
Ответ 1
use Liip\FunctionalTestBundle\Test\WebTestCase;
use HWI\Bundle\OAuthBundle\Security\Core\Authentication\Token\OAuthToken;
use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUser;
class ControllerTest extends WebTestCase
{
public function testSecurity()
{
$client = static::createClient();
$token = new OAuthToken('test', array( 'ROLE_USER', 'ROLE_OAUTH_USER' ));
$user = new OAuthUser('[email protected]');
$token->setUser($user);
$session = $client->getContainer()->get('session');
$session->set('_security_name_of_your_firewall', serialize($token));
$session->save();
$cookie = new Cookie($session->getName(), $session->getId());
$client->getCookieJar()->set($cookie);
// $client now acts as authenticated client