РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1105 of 1361 menu

Метод loginUser

Метод loginUser класса WebTestCase выполняет аутентификацию пользователя непосредственно в тесте. Первым параметром передаётся объект пользователя (обычно сущность User), а вторым - имя брандмауэра из конфигурации безопасности. После вызова метода клиент считается вошедшим, и все последующие запросы выполняются от имени этого пользователя.

Метод не создаёт сессию через форму входа, а подставляет пользователя напрямую в токен-хранилище. Это ускоряет тесты и убирает зависимость от страницы логина.

Синтаксис

loginUser(UserInterface $user, string $firewallContext = 'main'): void

Пример

Давайте создадим тест, в котором пользователь входит и получает доступ к защищённой странице:

<?php namespace AppTestsController; use AppEntityUser; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleTestWebTestCase; class ArticleControllerTest extends WebTestCase { public function testProtectedPage(): void { $client = static::createClient(); $em = static::getContainer()->get(EntityManagerInterface::class); $user = new User(); $user->setEmail('user@example.com'); $user->setPassword('hashed_password'); $user->setRoles(['ROLE_USER']); $em->persist($user); $em->flush(); $client->loginUser($user); $client->request('GET', '/article'); $this->assertResponseIsSuccessful(); $this->assertSelectorTextContains('h1', 'Articles'); } } ?>

Результат выполнения теста:

"OK (1 test, 3 assertions)"

Пример

Давайте укажем нестандартный брандмауэр 'admin' вторым параметром:

<?php namespace AppTestsController; use AppEntityUser; use SymfonyBundleFrameworkBundleTestWebTestCase; class AdminControllerTest extends WebTestCase { public function testAdminPage(): void { $client = static::createClient(); $admin = new User(); $admin->setEmail('admin@example.com'); $admin->setPassword('hashed_password'); $admin->setRoles(['ROLE_ADMIN']); $client->loginUser($admin, 'admin'); $client->request('GET', '/admin'); $this->assertResponseIsSuccessful(); } } ?>

Результат выполнения теста:

"OK (1 test, 2 assertions)"

Смотрите также

  • класс WebTestCase,
    который является базой для функциональных тестов
  • метод createClient,
    который создаёт клиент для запросов в тестах
  • метод request,
    который выполняет HTTP-запрос к приложению
  • метод assertResponseIsSuccessful,
    который проверяет успешный ответ сервера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить