Тестовый пользователь подключен в Symfony / PhpUnit

В моем контроллере я использую службу security.token_storage, чтобы подключить пользователя, например:

$client = $this->container->get('security.token_storage')->getToken()->getUser(); $username = $client->getNom()." ".$client->getPrenom();

В своем функциональном тесте я пытаюсь войти в систему пользователя, чтобы получить его в своем контроллере, но если я отлаживаю внутри, он говорит мне, что я анонимный:

private function logIn()
{
    $client = static::createClient();
    $firewallName = 'main';
    $token = new UsernamePasswordToken("admin", "admin", "main", array());
    static::$kernel->getContainer()->get('security.token_storage')->setToken($token);
    $session = static::$kernel->getContainer()->get('session');
    $session->set('_security_'.$firewallName, serialize($token));
    $session->save();
    $cookie = new Cookie($session->getName(), $session->getId());
    $client->getCookieJar()->set($cookie);

    return $client;
}

public function testIndex()
{
    $client = $this->logIn();
    $crawler = $client->request('GET', '/');
    $login = $crawler->filter("#username_index")->text();
    $this->assertEquals($login, 'ADMIN NOM Admin Prenom');
}

Как я могу передать моему пользователю моего теста мой основной код?

Напишите, пожалуйста, что вы хотите протестировать?

Kamil Adryjanek 09.07.2018 23:31

отредактируйте свое сообщение, чтобы добавить код, который вы прокомментировали;)

goto 10.07.2018 07:06

Вы что-то упускаете. Взгляните на этот ТАК ответ, чтобы узнать что.

DonCallisto 10.07.2018 08:45

@DonCallisto пробую, но не получается ... честно говоря, может я не правильно использую ...

Topheur 10.07.2018 09:05

Хорошо, но почему вы используете PHPUnit для функциональных тестов?

Kamil Adryjanek 10.07.2018 09:18

@KamilAdryjanek - не такая уж редкость ...

DonCallisto 10.07.2018 09:48

Вы следовали этой документации? symfony.com/doc/current/testing/http_authentication.html Вам необходимо добавить переменную http_basic: ~ в вашу тестовую среду

Nathan Meyer 10.07.2018 11:36

@NathanMeyer я использую не этот метод, в этой документации я использую второе решение.

Topheur 10.07.2018 12:04

Хорошо, я вижу кое-что еще. $token = new UsernamePasswordToken("admin", "admin", "main", array()); Почему бы вам не объявить здесь роль?

Nathan Meyer 10.07.2018 12:09

То же самое с ролями и без ...

Topheur 10.07.2018 22:38

@Topheur Если вы не объявляете роль, я не думаю, что у вашего пользователя будет какая-либо роль пользователя: github.com/symfony/symfony/blob/master/src/Symfony/Component‌ /…

Nathan Meyer 13.07.2018 14:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
11
131
0

Другие вопросы по теме