我在测试中使用rspec,当我在github上发布我的gem时,我想保护我的API密钥。 这样做的最佳做法是什么?我应该使用VCR然后从git日志中删除我的密钥吗?
答案 0 :(得分:1)
从广义上讲,以下是我过去在类似情况下使用过的三种方法。您选择的将取决于您的具体情况。
如果您的测试套件需要或至少更喜欢使用实际API密钥的实际API调用,则可以让测试调用者在运行测试时提供凭据。
两种最常见的方法是:
否则,
这可以是您描述的VCR方法。这也可能是修补API调用以返回一些假结果。
假设API和API客户端的行为与预期相符。然后,分解构造API输入的代码部分并处理API输出。测试生成的输入的属性。测试具有已知或假输出的输出处理器的行为。
最后,警告:
如果您曾将API密钥提交给版本控制,则会在历史记录中显示。如果您曾经推送到公共托管服务,它将被暴露在互联网上,最值得注意的是,它将暴露给专门的机器人,这些机器人会抓取新推送的敏感凭证提交。如果是您,请立即更改您的凭据!
我目前无法找到原始博文,但至少有一篇报道称某人不小心将其AWS凭据推送到GitHub。他们随后醒来了几千美元的钞票。