如何 POST rspec rails 中缺少 authenticity_token 请求测试?
How to POST with missing authenticity_token in rspec rails request test?
我正在模拟来自外部服务的请求,该服务没有真实性令牌。如果缺少 skip_before_action :verify_authenticity_token
,我希望测试失败。
如何根据 Rspec 请求规范执行此操作?
目前我正在使用 post
如下,但它很高兴被接受。
post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
CSRF 保护disabled in test environment。尝试启用它使用:
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
我正在模拟来自外部服务的请求,该服务没有真实性令牌。如果缺少 skip_before_action :verify_authenticity_token
,我希望测试失败。
如何根据 Rspec 请求规范执行此操作?
目前我正在使用 post
如下,但它很高兴被接受。
post endpoint, my_json_string, {'CONTENT_TYPE' => "application/json"}
CSRF 保护disabled in test environment。尝试启用它使用:
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