tests test_helper test rails how ruby-on-rails rspec csrf authenticity-token

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