从Rails 2.3.4升级到2.3.14,现在测试失败了(令人震惊,我知道)

时间:2012-01-25 22:58:03

标签: ruby-on-rails ruby-on-rails-2

问题似乎在于所有执行POST,PUT,DELETE请求的测试。似乎csrf令牌没有附加这些请求。因此我被重定向到/ login。当然,GET请求完全没问题。

值得一提的是,实际的浏览器交互很好。所以它适用于dev,但不适用于测试环境。

有人见过这个吗?

2 个答案:

答案 0 :(得分:0)

可能是由于修复了csrf安全漏洞。如果您尚未添加csrf_meta_tags并更新了jquery-ujs文件,则可能还需要执行此升级。如果它在开发模式下工作,则可能不是这种情况。下面是关于这个主题的更详细的博客文章。 http://jasoncodes.com/posts/rails-csrf-vulnerability

答案 1 :(得分:0)

好的,问题出在protect_from_forgery上。对于一些我不知道的原因before_filter :login_required过早触发。我不知道具体细节或如何“正确”解决这个问题。但这样做可以让我最终运行我的测试:

protect_from_forgery unless Rails.env.test?