首页 > 解决方案 > Laravel:测试多用户注销

问题描述

我目前在实施测试以验证用户确实无权执行该操作时遇到问题,只要有权限的用户执行了先前的操作。

我已经使用Laravel Jwt成功实现了多用户登录,并且控制器得到了适当的保护。

基本设置

使用可以有两种模型(角色):

示例测试流程

  1. 创建员工并登录系统
  2. 员工发送创建请求并创建记录 XYZ
  3. 创建成员并登录系统
  4. 成员发送删除记录 XYZ 请求并抛出未验证错误

预期行为:创建记录 XYZ,然后引发未经身份验证的错误。

实际行为:记录XYZ由Member创建然后删除

代码

public function testRole_throwsNotAuthenticated() {
    // $staff & $member are created using factories

    // staff logged in & record is created
    $this->actingAs($staff, 'staff')->json('POST', '...', []);

    // member logged in & record is deleted -> should not allow this
    $this->actingAs($member, 'members')->json('DELETE', '...', []);

    // assertion removed for cleaner code 
}

我尝试过的

   auth('staff')->check(); // returns true
   auth('members')->check(); // returns true
   auth('staff')->logout(); // returns error JTW is not parsable

请注意以下内容

标签: phplaravellaravel-5.8phpunit

解决方案


推荐阅读