Symfony Unit Testing с LoginUser (), вход в систему не работает (возвращение 302 на страницу входа в систему)Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Symfony Unit Testing с 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());

}
< /code>
Но логин не работает, я получаю 302 перенаправление на страницу входа в систему, и если я устанавливаю CatchExceptions (false) < /code> я получаю AccessDeniedException < /code>. < /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 []
]
< /code>

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

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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