Тестирование Laravel - UnauthorizedException: у пользователя нет нужных ролей - PullRequest
0 голосов
/ 23 ноября 2018

Итак, я работаю с тестами 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, а не ошибку.Спасибо за ваше время.

...