#php #laravel #testing
#php #laravel #тестирование
Вопрос:
Как я могу проверить аутентификацию пользователя? Мой тест:
public function successLogin()
{
$user = User::factory()->create(['login' => '123']);
$user->makeVisible(['password']);
$this->post(route('login'), $user->toArray());
$this->assertAuthenticated(); // not asserts
}
Я видел это решение
$this->User->makeVisible(['password']);
Но что это за проблема? Модель? Оно не определено.
Ответ №1:
Было принято решение изменить post-запрос auth на метод attempt:
public function successLogin()
{
$user = User::factory()->create(['password' => Hash::make('pass')]);
Auth::attempt(['login' => $user->login, 'password' => 'pass']);
$this->assertAuthenticated();
}
public function failedLogin()
{
User::factory()->create(['login' => 'username1', 'password' => Hash::make('pass')]);
Auth::attempt(['login' => 'username2', 'password' => 'pass']);
$this->assertGuest();
}