Laravel версии 5.2Тестирование Несанкционированное ограничение пользователя в Laravel PHPUnit
В моем проекте, пользователи с role_id = 4 имеет роль администратора и может управлять пользователями.
Я определил следующие возможности в AuthServiceProvider:
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
$gate->define('can-manage-users', function ($user)
{
return $user->role_id == 4;
});
}
Я использовал эту способность в методе __construct UserController следующим образом:
public function __construct()
{
$this->authorize('can-manage-users');
}
В ExampleTest, я создал два тестов для проверки если работает определенная авторизация.
Первый тест для пользователя admin, у которого есть role_id = 4. Этот тест проходит.
public function testAdminCanManageUsers()
{
$user = Auth::loginUsingId(1);
$this->actingAs($user)
->visit('users')
->assertResponseOk();
}
Второй тест для другого пользователя, который не имеет ROLE_ID = 4. Я попытался с состоянием ответа 401 и 403. Но испытание терпит неудачу:
public function testNonAdminCannotManageUsers()
{
$user = Auth::loginUsingId(4);
$this->actingAs($user)
->visit('users')
->assertResponseStatus(403);
}
Первые несколько строк сообщение об отказе приводится ниже:
Запрос на [http://localhost/users] не выполнен. Получен код состояния [403].
C: \ WAMP \ WWW \ Laravel \ блог \ поставщика \ Laravel \ Framework \ SRC \ Осветите \ Foundation \ Testing \ Обеспокоенность \ InteractsWithPages.php: 196 C: \ WAMP \ WWW \ Laravel \ блог \ поставщика \ laravel \ framework \ src \ Illuminate \ Foundation \ Testing \ Concerns \ InteractsWithPages.php: 80 C: \ wamp \ www \ laravel \ blog \ vendor \ laravel \ framework \ src \ Illuminate \ Foundation \ Testing \ Concerns \ InteractsWithPages.php : 61 C: \ WAMP \ WWW \ Laravel \ блог \ Тесты \ ExampleTest.php: 33
, вызванные исключением 'Осветите \ Auth \ Access \ AuthorizationException' с сообщением. Это действие является несанкционированным " в C: \ WAMP \ WWW \ Laravel \ блог \ поставщика \ Laravel \ Framework \ SRC \ Осветите \ Auth \ Access \ HandlesAuthorization.php: 28
Я также попытался использовать 'видеть' метод следующим образом :
public function testNonAdminCannotManageUsers()
{
$user = Auth::loginUsingId(4);
$this->actingAs($user)
->visit('users')
->see('This action is unauthorized.');
}
Но это тоже не удается. Что я делаю не так? Как я могу пройти тест?
Продвижение по этой проблеме? – naneri