我为一个 REST api 开发了一个 Ruby 接口。我使用 rspec 和 vcr 进行测试。
所有测试都使用专门为其创建的帐户凭据。
我无法决定:将我的测试(vcr 磁带)的缓存响应存储在存储库中是否正确,或者允许用户和订阅者编写自己的磁带?
以皇上之名!让圣战开始吧!
我为一个 REST api 开发了一个 Ruby 接口。我使用 rspec 和 vcr 进行测试。
所有测试都使用专门为其创建的帐户凭据。
我无法决定:将我的测试(vcr 磁带)的缓存响应存储在存储库中是否正确,或者允许用户和订阅者编写自己的磁带?
以皇上之名!让圣战开始吧!
VCR 的磁带可作为您测试的固定装置。您确实需要将它们提交到存储库中,否则您的测试将无法在其他机器上正确运行,或者仅在具有严重外部依赖性的情况下进行纠正,这违反了测试原则。
当然,您需要在保留上述信息的同时向公众或团队隐藏您的凭据。
解决方案是filter_senstive_data
设置和 Figaro gem。
首先,Myron 在类似问题中的这个答案可以在很大程度上解决您的问题。
设置录像机
VCR.configure do |c|
c.filter_sensitive_data("<SOMESITE_PASSWORD>") do
ENV['SOMESITE_PASSWORD']
end
end
上面的代码块是从 Myron 的答案中复制的,因为我想稍后添加更多
有关此设置的更多信息,请查看文档https://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data
现在,使用Figaro gemENV['SOMESITE_PASSWORD']
可以成为真正的凭证。
安装 Figaro 将创建一个文件config/application.yml
并将其添加到.gitignore
. 因此,您只需在此处输入您的凭据用户名和密码,而不必冒险将其泄露给公众。
只要您不在请求中包含任何敏感信息,那么我认为您没有理由不能提交它们。
但只要它在第一次测试播种磁带后能正常工作,任何一种方式都没有太大的风险。
就我个人而言,我喜欢根据历史请求进行检查的想法,以防我不得不诊断一些模糊的特定于机器的错误来更改我的请求格式。(IE 一些编码错误,由于动态加载的库,事情被错误地转义)。