Итак, я работаю с тестами Laravel и создаю тесты для доступа к странице пользователей, где я могу видеть всех пользователей и редактировать их. в UsersController.php
Я сделал, что только администратор может получить доступ к странице пользователя. Роли и разрешения, которые я использовал из плагина spatie https://github.com/spatie/laravel-permission. Я сделал тест, чтобы проверить, может ли простой пользователь получить доступ к странице пользователя, и вот код в UserTest.php
/** @test */
public function user_try_to_access_users_page()
{
$user = factory(User::class)->create();
$user->assignRole('user');
$this->actingAs($user);
$response = $this->get('/users');
$response->assertStatus(403);
}
А вот код в UsersController.php
это позволяет только администратору доступ к нему.
public function index()
{
$testUser = Auth::user();
if ($testUser->hasRole('admin'))
{
$users = User::all();
return view('users.index', ['users' => $users]);
}
return response(view('errors.403'), 403);
}
Теперь, когда я пытаюсь запустить тест, он дает мне ошибку
Тесты \ Feature \ UserTest :: user_try_to_access_users_page
Spatie \ Permission \ Exceptions \ UnauthorizedException: у пользователя нет необходимых ролей.
В этой строке $response = $this->get('/users');
,
Это хорошо, потому что не позволяет пользователю получить доступ к странице, но он должен дать код 403, а не ошибку.
Спасибо за ваше время.
Задача ещё не решена.
Других решений пока нет …