Проверка подлинности при тестировании функций со скрытым свойством

#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();
}