Symfony: аутентификация пользователя в функциональном тесте - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь аутентифицировать пользователя в функциональном тесте, чтобы проверить, перенаправлен ли он.

Мой контроллер:

public function preRegisterAction()
{
    if ($this->getUser() instanceof User) {
        return new RedirectResponse();
    }

    return $this->render(
        'pages/pre-register.html.twig'
    );
}

Мой тест:

public function setUp()
{
    $this->client = static::createClient();
}

public function testPreRegisterAction()
{
    $user = new User();
    $user->setEmail('test@test.fr');
    $user->setCreated(new \DateTime());
    $user->setId(43);

    $tokenStorage = $this->client->getContainer()->get('security.token_storage');
    $tokenStorage->setToken(new UsernamePasswordToken($user, null, 'main', ['ROLE_USER']));

    $this->client->request('GET', '/choix');
    $this->assertTrue($this->client->getResponse()->isRedirection());
}

Я не знаю, нормально ли использование утверждения.Но даже использование хранилища токенов, похоже, не работает.Когда я выполняю var_dump tokenstorage в моем контроллере, я не вижу пользователя, которого я ввел в тест.

1 Ответ

0 голосов
/ 01 июня 2018

Я не знаю точно, почему ваш код не работает в тестах.У меня нет глубоких знаний о компоненте безопасности, но есть два рекомендуемых способа аутентификации пользователя.

  1. Использование более быстрого механизма аутентификации только для тестов
  2. Создание токена аутентификации
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...