Size: a a a

2021 July 04

AR

Ali Rymkhanov in Laravel Pro
Спасибо Большое 😍😊☺️
источник

AS

Andrew Sparks in Laravel Pro
а ты подтвердил тестовый хук? там определенным текстом нужно ответить
источник

А

Алексей in Laravel Pro
Прочь страхи и сомнения. Твой код самый крутой). Как напишешь, так и есть круто
источник

AB

Alex B in Laravel Pro
Привет всем

Как можно поменять метод авторизации во время одного теста?
Есть у меня связка sanctum+inertia. Мне нужно в начале сделать обращение через web guard user model а потом api guard через другую модель

По отдельности это работает, но в рамках одного теста нет. По отдельности выглядит так, this->actingAs($user)

для другой модели, вот так Sanctum($model, [], 'some-guard')

в рамках одного тест метода не получается, так как для второй модели возвращается 403
источник

А

Антон in Laravel Pro
Я же тебе писал. Что ж ты такой невнимательный-то?
источник

AB

Alex B in Laravel Pro
this->refreshApplication()
источник

AB

Alex B in Laravel Pro
этот метод удаляет все записи из базы
источник

AB

Alex B in Laravel Pro
и бизнес флоу ломается, а мне всю цепочку бизнес процесса покрыть тестом
источник

А

Антон in Laravel Pro
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Foundation/Testing/TestCase.php#L106

https://github.com/laravel/framework/blob/62aee1bfeefd82f160c7aa3b4c63cb2f053215c0/src/Illuminate/Foundation/Testing/TestCase.php#L73

Он ничего из бд удалять не должен, если ты в абстрактном createApplication это не прописал. Бля, как можно неделю возиться с одной ошибкой.
источник

AR

Ali Rymkhanov in Laravel Pro
😄🙈
источник

AB

Alex B in Laravel Pro
я только вчера столкнулся, че ты агришься то?
источник

А

Антон in Laravel Pro
В пятницу, а не вчера.
источник

А

Антон in Laravel Pro
Это целая неделя. Ну т.е. ты не смог зайти и посмотреть, что делает createApplication? Ты не смог придумать иное решение, раз у вас рефреш приложения удаляет записи из бд, чтобы получить свежий инстанс Auth? Столько вариантов, я устану предлагать.
источник

AB

Alex B in Laravel Pro
мне не нужен свежий инстанс и ты не знаешь что у меня происходит в жизни, я не вожусь с одной задачей целую неделю, че ты агришься на меня то? не нравится не отвечай
источник

А

Антон in Laravel Pro
Как ты собрался авторизоваться 2 раза подряд без свежего инстанса?

Давай, гений, придумай, как обойти этот код без свежего инстанса
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/SessionGuard.php#L132

https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/Middleware/Authenticate.php#L64

https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/AuthManager.php#L201
источник

А

Антон in Laravel Pro
У тебя в в рамках одного теста один рантайм и один кэш. Это не 2 разных запроса, как если бы их делали пользователи.
источник

А

Антон in Laravel Pro
А вероятнее всего у тебя проблема в миддлваре
https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/Middleware/Authenticate.php#L64

При втором запросе тут будет старый Request от первого запроса, где твоего токена нет. Чтобы это обойти, нужно сделать так


foreach ($guards as $guard) {
      if (method_exists($guard, 'setRequest') {
          $guard->setRequest($request);
      }
      if ($this->auth->guard($guard)->check()) {
            return $this->auth->shouldUse($guard);
       }
}


В SessionGuard и TokenGuard они есть

https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/SessionGuard.php#L920

https://github.com/laravel/framework/blob/8.x/src/Illuminate/Auth/TokenGuard.php#L143
источник

А

Антон in Laravel Pro
Но вообще, санктум умеет перегружать текущий гвард https://github.com/laravel/sanctum/blob/2.x/src/Sanctum.php#L56-L58. Так что если это не работает, у вас где-то что-то работает не так: например, вы юзаете фасад, который кэширует гварды. В этом случае санктум его не сможет сбросить.
источник

КД

Кирилл Добров... in Laravel Pro
Ребят кто-то шарит метод saveOrFail() тригерет метод updated у observer модели ?
источник

КД

Кирилл Добров... in Laravel Pro
Потому что зарегал observe для модели обновлняю её и естественно ничего не происходит )
источник