使用Rails 3.2.11和RSpec发布原始JSON数据

为了确保我的应用程序不易受到此攻击,我尝试在RSpec中创建一个控制器测试来覆盖它。为了做到这一点,我需要能够发布原始JSON,但我似乎还没有找到这样做的方法。在做一些研究时,我已经确定至少过去有一种方法可以使用RAW\u POST\u DATA标题来实现这一点,但这似乎不再有效:

它“不应通过使用整型令牌值”do来利用
request.env[“CONTENT_TYPE”]=“application/json”
request.env[“RAW_POST_DATA”]={token:0}.to_json
post:重置密码
终止

当我查看params散列时,令牌根本没有设置,它只包含{“controller”=>“user”,“action”=>“reset_password”}。我在尝试使用XML时得到了相同的结果,甚至在尝试仅使用常规post数据时也得到了相同的结果,在所有情况下,它似乎都没有设置周期

我知道最近Rails的漏洞改变了参数散列的方式,但是仍然有办法通过RSpec发布原始数据吗?我是否可以直接使用Rack::Test::Methods

据我所知,在控制器规范中不再可能发送原始POST数据。但是,在请求规范中,发送原始POST数据非常容易:

描述“示例”:type=>:请求做
params={token:0}
post“/user/reset_password”,参数为_json,{'CONTENT_TYPE'=>'application/json','ACCEPT'=>'application/json'}
#=>参数包含{“控制器”=>“用户”、“操作”=>“重置密码”、“令牌”=>0}
终止

发表评论