【问题标题】:How to unit test 3rd party API endpoints that need access_token?如何对需要 access_token 的第 3 方 API 端点进行单元测试?
【发布时间】:2017-08-24 18:04:34
【问题描述】:

我正在开发一个后端 API,它使用 Github 的 API 来检索一些存储库并用它做一些事情。我也在使用 Codeship CI,所以我的所有数据都需要在代码中才能正确构建。

在我的后端 /api/github/repos 中有一个路由,它以 Github access_token 作为参数并使用列出所有已登录用户存储库的 https://api.github.com/user/repos 端点。

我的疑问是:我如何对这条路线进行单元测试?我不能在单元测试中写我的access_token,因为它是敏感数据,我将它存储在 Github 公共存储库中,我也不能将该数据播种到数据库中,因为access_token 仍将写入代码中。我应该把我的access_token 放在哪里?还有其他方法吗?

我正在使用 Laravel 框架在 PHP 中进行开发,但正如您所见,这个问题与语言无关。

【问题讨论】:

    标签: php laravel unit-testing oauth-2.0


    【解决方案1】:

    有多种方法可以做到这一点:

    1. 使用测试表/文件(或.env)/缓存键值对,将api键存储在测试表/文件/缓存中,然后在单元测试中检索键,将params传递给请求测试
    2. command line 参数传递给phpunit
    3. 使用存储库接口获取控制器类中的 api 密钥。您可以拥有此接口的 2 个存储库类实现 - 第一个从请求参数中获取密钥,第二个从测试表/文件/缓存中获取密钥,如点 #1

    可能还有其他方法。您选择哪一个取决于您的应用程序。如果 api 密钥与大多数单元测试相关,您可以选择 #2,否则选择 #1。 #3 将是大型应用程序的理想选择 - 更多抽象层和更简洁的代码,但对于中小型应用程序来说过度设计

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-09
      • 2021-11-06
      • 1970-01-01
      相关资源
      最近更新 更多