在 Laravel 10 中为受 Auth0 验证的受保护端点编写功能测试

问题描述 投票:0回答:1

情况:

我有一个 Laravel 10 应用程序,它在 Auth0 中被设置为“常规 Web 应用程序”。我想为受保护的路由编写功能测试,但我不确定如何执行身份验证。我找不到这方面的文档。

我的设置详情

  • Laravel 10
  • Auth0 7.8

我按照 https://auth0.com/docs/quickstart/webapp/laravel/interactive 使用 auth0 设置 laravel

  • 我有只有管理员才能访问的“api/posts”端点。管理员在 auth0 中定义并具有权限。

此时我需要这方面的指导,我是 auth0 集成的新手。

提前非常感谢您。

php laravel oauth jwt auth0
1个回答
0
投票

您可以通过几种不同的方式来解决这个问题,这适用于编写一般的 API 测试,而不仅仅是与 Auth0 连接。

  1. 如果您的 API 受 JWT 保护,您可以在运行测试时使用 JWT 库伪造自己的令牌。这允许您创建具有测试特定需求的令牌 - 您可以创建过期的令牌、具有无效或缺失声明的令牌、使用错误的证书签名等,以确保您的 API 相应地处理这些。

  2. 如果您需要测试运行某些流程的代码,或者您可能使用不透明令牌并在 API 中执行令牌自省等,那么您可以使用 WireMock(独立版本)之类的服务来创建模拟端点。然后,您的测试可以像平常一样调用端点,但您不必使用真实的东西。

  3. 如果您想测试一些前端流程,那么您可以使用 Cypress 等工具来创建基于浏览器的测试。这些测试可以执行登录并使用已建立的会话或获取的令牌来运行进一步的测试。

  4. 如果您需要从系统获取真实的令牌并且不想使用cypress,您可以创建使用curl来获取令牌的脚本。例如,看看我同事前段时间写的这个脚本:https://github.com/curityio/oauth-agent-kotlin-spring/blob/main/test/end-to-end/login.sh 它使用curl 在授权服务器上执行登录并获取OAuth 访问令牌。

© www.soinside.com 2019 - 2024. All rights reserved.