如何对需要access_token的第三方API端点进行单元测试?

时间:2017-03-30 17:07:28

标签: php laravel unit-testing oauth-2.0

我正在开发一个后端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中开发,但正如您所看到的,这个问题与语言无关。

1 个答案:

答案 0 :(得分:0)

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

  1. 使用测试表/文件(或.env)/缓存键值对,将api密钥存储在测试表/文件/缓存中,然后在单元测试中检索密钥,该密钥将params传递给请求测试
  2. command line个参数传递给phpunit
  3. 使用存储库接口获取控制器类中的api密钥。您可以拥有此接口的2个存储库类实现 - 第一个从请求参数获取密钥,第二个从测试表/文件/缓存中获取密钥,如第1点所述
  4. 也可能有其他方式。您选择哪一个取决于您的应用。如果api密钥与大多数单元测试相关,那么你可以选择#2,否则#1。 #3非常适合大型应用程序 - 更多层次的抽象和更清晰的代码,但是针对中小型应用程序的过度工程