Почему у меня не получается через тест авторизоваться?

Я делаю тест http, но у меня выходит
Expected status code 200 but received 500.
Failed asserting that false is true.

При этом с таким запросом во вью когда я отправляю данные через axios то у меня все норма получается
Вот код теста
public function testLogin()
    {
        $responca = $this->post('/api/login', [
            'username' => 'r.absalyamov',
            'password' => 'kazan1811'
        ]);
        $responca->assertStatus(200);
    }

Кто может подсказать в чем проблема может быть, почему у меня выходит тут 500 ошибка, а когда я делаю неправильный пароль то срабатывает утверждение 200. Ну и соотвтетсвенно когда я неправильно ввожу логин то ошибка Expected status code 200 but received 401.
У меня только такой вариант не понятен, когда я ввожу правильный usename и password почему у меня срабатывает 500 ошибка, хотя не в тесте такого статуса не приходит
Контроллер который тестируется
public function login(Request $request)
    {
// Проверяем на пустые поля
        $errors = Validator::make($request->all(), [
            'username' => 'required',
            'password' => 'required'
        ])->errors();

Если есть значение то выводим 401 ошибку
        if (count($errors)){
            return response(['errors' => $errors], 401);
        }
//Проверяем есть ли пользователь
        $user = User::where('name', $request->username)->first();
        if (!$user)
            return response(['status' => 'error', 'message' => 'Пользователь не найден'], 401);//Если пользователя нет, то выводим 401 ошибку
//Проверяем пароль
        if (Hash::check($request->password, $user->password)){
//Если все нормально, то создаем api токен
            $response = new ApiTokenUser();
            $response = $response->setToken($user->email, $request->password);
            $response = json_decode((string) $response->getBody(), true); // И формируем ответ
        } else {
            $response = ['errors' => true, 'message' => 'Неверный пароль']; // формируем ответ
        }
//Выводим клиенту что пришло
        return response($response);
    }
  • Вопрос задан
  • 465 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Откройте логи — там все написано.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы