简单的 Laravel Passport 路由测试

Posted

技术标签:

【中文标题】简单的 Laravel Passport 路由测试【英文标题】:Simple Laravel Passeport Route Testing 【发布时间】:2019-10-16 22:36:38 【问题描述】:

在为默认 Passport 5.8 路由执行单元测试时遇到一个小问题。

其实我在get模式下测试了路由/oauth/clients:

/** @test */
   public function getOauthClients()
   
       $user = factory(User::class)->make();
       $response = $this->actingAs($user)->getJson('/oauth/clients');
       $response->assertSuccessful();
   

但是当我想在 get 模式下测试默认提供的路由时: /oauth/token ,我不知道我需要遵循哪些步骤。

提前谢谢你。

【问题讨论】:

【参考方案1】:

您应该尝试:

Passport::actingAs(
    factory(User::class)->create()
);
$response = $this->getJson('/oauth/clients');
// ...

Passport 附带了一些用于此目的的测试助手,例如上面的 actuator 方法。

引用documentation:

Passport 的actingAs 方法可用于指定当前经过身份验证的用户及其范围。 ActingAs 方法的第一个参数是用户实例,第二个参数是应授予用户令牌的范围数组:

【讨论】:

谢谢。如何继续测试路线:/oauth/token. 那么您应该尝试使用该问题的答案之一:***.com/questions/50113508/…

以上是关于简单的 Laravel Passport 路由测试的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport - 保护不同用户类型的路由

如何使用 Laravel Passport 组织这样的路由保护?

404 - 未找到存在 Laravel 8 的 Passport Api 路由

Laravel Passport 及其替代品中的支持权限

Laravel 5.7 在播种机中使用 Passport 进行测试

Laravel 5.3 + Passport:总是未经身份验证的错误