使用VCR过滤敏感数据

时间:2012-03-22 03:43:44

标签: ruby ruby-on-rails-3 testing rspec vcr

我正在使用VCR gem记录http交互,并在将来重播它们。我想在uri请求中过滤掉我的实际密码值。这是uri的样子:

http://services.somesite.com/Services.asmx/Cabins
Username=long&Password=john&StartDate=03%2F22%2F2012&EndDate=03%2F29%2F2012

虽然这里提供了解释,但我仍然不确定在自己尝试几次之后该怎么做:

https://www.relishapp.com/myronmarston/vcr/v/2-0-0/docs/configuration/filter-sensitive-data

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:25)

VCR.configure do |c|
  c.filter_sensitive_data("<SOMESITE_PASSWORD>") do
    ENV['SOMESITE_PASSWORD']
    # or $credentials['somesite']['password'] or whatever
  end
end

基本上,你给VCR一些占位符文本,然后块需要返回真实密码,从任何规范密码“存储库”读取它。

请注意,只有在第一次记录请求时才需要真实密码;在后续运行中,它可以是假密码(只要它与发出请求的代码使用的假密码相同)。

答案 1 :(得分:7)

for rails 4+,如果您使用的是secrets.yml,则可能需要

VCR.configure do |config|
  Rails.application.secrets.each do |k,v|
    config.filter_sensitive_data("ENV[#{k}]") { v }
  end
end

现在你肯定不会忘记任何