ruby on rails - test_helper - ¿Cómo se realiza la POST con missing_authentity_token en rspec rails request test?
rails test methods (2)
Protección CSRF deshabilitada en el entorno de prueba . Intenta habilitar su uso:
before do
ActionController::Base.allow_forgery_protection = true
end
after do
ActionController::Base.allow_forgery_protection = false
end
Estoy simulando una solicitud proveniente de un servicio externo, que no tendrá un token de autenticidad. Quiero que la prueba falle si falta skip_before_action :verify_authenticity_token
.
¿Cómo hago esto desde una especificación de solicitud de Rspec?
Actualmente estoy usando post
como a continuación, pero felizmente aceptado.
post endpoint, my_json_string, {''CONTENT_TYPE'' => "application/json"}
Desactivar la protección CSRF no funcionó para mí. Así que creé este módulo que usa el cuerpo de respuesta para recuperar el token de autenticidad:
https://gist.github.com/Rodrigora/440220a2e24bd42b7b0c
Luego, puedo probar las solicitudes de publicación / publicación sin deshabilitar la protección contra falsificaciones:
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