"Sign in with Apple" (REST API) 自动化测试的最佳实践是什么?

What are the best practices for automated testing of "Sign in with Apple" (REST API)?

我想创建一组可以 运行 在 CI/CD 管道中的自动化测试。我正在努力了解如何验证 Generate and Validate Tokens portion of the "Sign in with Apple" flow (REST API 实施):

如何验证我是否正确处理了刷新令牌的授权代码交换?考虑到授权码是一次性的,并且只有五分钟有效,这反过来又来自身份验证。在我的例子中,身份验证需要 2FA。

测试结束

一个常见的起点是执行 UI 测试以基本方式验证登录,使用 Selenium 等技术:

  • 这些将自动登录测试用户帐户,以执行真实登录并交换令牌授权码。

  • 登录后 UI 可以继续测试应用程序逻辑,例如使用真实令牌调用真实 API。

正在测试的组件

但有时,与 OAuth 相关的基础设施会成为障碍,例如,如果无法自动执行 2FA 操作,例如输入一次性密码。

使用此类技术可以模拟身份系统。一种选择是假装 Apple 身份验证已完成,同时 issuing your own mock tokens 使用 JWT 库,具有与 Apple 相同的属性。

一个关键的行为当然是确保 零代码在 UI 或 API 中被更改,以便它们继续 运行 相同生产逻辑,不知道他们正在使用模拟令牌。

HTTP 模拟端点

我的开源Wiremock tool can be a useful addition to your toolbox in this case, as in these API focused tests。要使用此类工具,管道的自动化测试阶段需要将 UI 和/或 API 重新指向您假装代表 Apple 身份系统的 URL。因此需要进行部署工作。

设计基础设施

当然,这取决于你想专注于测试的内容,以及你乐于模拟的领域。我建议从头到尾考虑这一点,同时考虑 UIs 和 API。重要的是要避免出现被屏蔽无法测试的情况。