我为一个REST api开发了一个Ruby接口。我使用rspec和vcr进行测试 所有测试都使用专门为其创建的帐户凭证 我无法决定:存储我的测试(vcr磁带)的缓存响应是否正确 存储库,或允许用户和订阅者编写自己的磁带?
以皇帝的名义!让圣战开始吧!
答案 0 :(得分:6)
录像机的录像带作为测试的固定装置。您确实需要将它们提交到存储库中,否则您的测试将无法在其他人的计算机上正确运行,或者只能通过严重的外部依赖来纠正,这违反了测试原则。
当然,您需要在保留上述内容的同时隐藏公共或团队的凭据。
解决方案是filter_senstive_data
设置和Figaro gem。
首先,This answer from Myron in a similar question可以在很大程度上解决您的问题。
设置录像机
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
现在,对于ENV['SOMESITE_PASSWORD']
,使用Figaro gem可以将其作为真实凭据。
Figaro的安装将创建一个文件config/application.yml
并将其添加到.gitignore
。因此,您可以在那里输入您的凭证用户名和密码,而不会有泄露给公众的风险。
答案 1 :(得分:3)
只要您未在请求中包含任何敏感信息,我就认为没有理由不提交它们。
但是只要在第一次测试播种盒之后它能够正常工作,无论如何都没有太大的危险。
我个人喜欢根据历史请求进行检查,以防我必须诊断一些模糊的机器特定错误,从而改变我的请求格式。 (IE由于动态加载的库而导致事物被错误地转义的一些编码错误。)