¿Cuál es la mejor forma de crear pruebas funcionales para probar formularios con la protección CSRF habilitada en Symfony?Formulario de prueba funcional con CSRF habilitado en Symfony
Actualmente tengo que añadir el siguiente código antes de cada forma submittion:
$form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();
Luego añadir los $ token y $ token_name para formar parámetros como este:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))
La opción sugerida en la documentación:
'_with_csrf' => true,
No funciona en absoluto.
¿Hay alguna manera más simple de evitar agregar tokens a cada formulario probado manualmente? ¿O hay una manera de desactivar la comprobación de csrf cuando se ejecutan las pruebas?
La forma en que he descrito anteriormente está bien cuando tienes que probar 1-2 formularios, pero si el proyecto contiene decenas de formas únicas, se convierte en un problema.
T La opción de documentación utiliza una instancia de BaseForm para extender desde; Sin embargo, el token CSRF se genera utilizando el tipo de formulario, por lo que MyFooForm! = BaseForm y, por lo tanto, esa es la razón por la cual la opción falla ... tu opción es la forma en que terminé haciéndolo también en mis proyectos. – richsage
Hay otra razón por la que falla también. Agrega el token csrf a la lista de parámetros, pero generalmente en formas está en matrices (como en el ejemplo anterior). Por lo tanto, es completamente inútil :-(. Gracias por su comentario. – Stepashka