我正在模拟来自外部服务的请求,该服务没有真实性令牌。skip_before_action :verify_authenticity_token
如果丢失,我希望测试失败。
如何从 Rspec 请求规范执行此操作?
目前我正在使用post
如下,但很高兴被接受。
post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
我正在模拟来自外部服务的请求,该服务没有真实性令牌。skip_before_action :verify_authenticity_token
如果丢失,我希望测试失败。
如何从 Rspec 请求规范执行此操作?
目前我正在使用post
如下,但很高兴被接受。
post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
测试环境中禁用CSRF 保护。尝试启用它使用:
before do
ActionController::Base.allow_forgery_protection = true
end
after do
ActionController::Base.allow_forgery_protection = false
end
禁用 CSRF 保护对我不起作用。所以我创建了这个模块,它使用响应体来检索真实性令牌:
https://gist.github.com/Rodrigora/440220a2e24bd42b7b0c
然后,我可以在不禁用伪造保护的情况下测试 put/post 请求:
before do
@token = login(create(:user, password: 'password'))
end
it 'tests model creation' do
expect {
post_with_token 'path/to/model', model_params, @token
}.to change(Model, :count).by(1)
end