Модульное тестирование Symfony с помощью loginUser(), вход в систему не работает (возврат 302 на страницу входа)Php

Кемеровские программисты php общаются здесь
Anonymous
Модульное тестирование Symfony с помощью loginUser(), вход в систему не работает (возврат 302 на страницу входа)

Сообщение Anonymous »

Я создаю тест для приложения Symfony 5.4.
Я создал такой тест:

Код: Выделить всё

public function testCreateProduct() {
$client = static::createClient();
/** @var User $mainAdmin */
$mainAdmin = static::getContainer()->get(UserRepository::class)->find(1);

//$client->catchExceptions(false);
$client->loginUser($mainAdmin);

$crawler = $client->request('GET', '/en/product/new');

$this->assertResponseIsSuccessful();
$this->assertSelectorTextContains('span.username', $mainAdmin->getUsername());

}
Но вход в систему не работает, я получаю перенаправление 302 на страницу входа, и если я устанавливаю catchExceptions(false), я получаю AccessDeniedException.< /p>
Как я могу это отладить?

Изменить:
Я пытался изменить патч на общедоступный. маршрут, затем я выполнил dd($this->getUser(), $request)

Код: Выделить всё

getUser()
имеет значение null, но сеанс запроса содержит пользователя:

Код: Выделить всё

#session: Symfony\Component\HttpFoundation\Session\Session {#16616
#storage: Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage {#16631
-savePath: "C:\www\project\var\cache\test/sessions"
#id: "a9d00704e1a0211d06ebddadfaabbf0188e9d65d94faac05afbdc63bb9fb7caa"
#name: "MOCKSESSID"
#started: true
#closed: false
#data: array:3 [
"_sf2_attributes" => &1 array:1 [
"_security_main" => "O:52:"Symfony\Bundle\FrameworkBundle\Test\TestBrowserToken":2:{i:0;s:4:"main";i:1;a:5:{i:0;C:15:"App\Entity\User":118:{a:5:{i:0;i:2;i:1;s:5:"admin";i:2;s:60:"$2y$13$abcdefghi......";i:3;i:1;i:4;b:0;}}i:1;b:1;i:2;N;i:3;a:0:{}i:4;a:9:{i:0;s:9:"ROLE_USER";i:1;s:10:"ROLE_ADMIN";i:2;[...]}}}"
]
"_sf2_meta" => &2 array:3 [
"u" => 1645718565
"c" => 1645718565
"l" => 0
]
"_symfony_flashes" => &3 []
]
Я вижу разницу между

Код: Выделить всё

$request->getSession()->getBag('attributes')
сделано в разработке (работает) и в тесте: в разработке у меня есть _security_secured_area, а в тесте — _security_main. Может ли это быть причиной?

Подробнее здесь: https://stackoverflow.com/questions/712 ... 2-to-login

Вернуться в «Php»