Qual è il modo migliore per creare test funzionali per testare i moduli con la protezione CSRF abilitata in Symfony?Modulo di test funzionale con CSRF abilitato in Symfony
Attualmente ho aggiungere il seguente codice prima di ogni forma submittion:
$form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();
Poi aggiungo il $ token e $ TOKEN_NAME per formare parametri come questo:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))
L'opzione suggerita nel la documentazione:
'_with_csrf' => true,
Non funziona affatto.
C'è un modo più semplice per evitare di aggiungere token a ogni modulo testato manualmente? O c'è un modo per disattivare il controllo csrf durante l'esecuzione dei test?
Il modo in cui ho descritto sopra è ok quando devi testare 1-2 moduli ma se il progetto contiene decine di forme uniche diventa un dolore.
T L'opzione di documentazione usa un'istanza di BaseForm da cui estendersi; il token CSRF viene generato utilizzando il tipo di modulo però, quindi MyFooForm! = BaseForm e quindi è per questo che l'opzione fallisce ... la tua opzione è il modo in cui ho finito di farlo anche nei miei progetti. – richsage
C'è un altro motivo per cui fallisce pure. Aggiunge il token csrf all'elenco dei parametri, ma di solito nei moduli è negli array (come nell'esempio sopra). Quindi è completamente inutile :-(. Grazie per il tuo commento. – Stepashka