Was ist der beste Weg zum Erstellen von Funktionstests zum Testen von Formularen mit aktiviertem CSRF-Schutz in Symfony?Funktionsprüfungsformular mit aktiviertem CSRF in Symfony
Zur Zeit habe ich den folgenden Code vor jedem Formular submittion hinzufügen:
$form = new sfGuardFormSignin();
$token = $form->getCSRFToken();
$token_name = $form->getCSRFFieldName();
Dann füge ich die $ Token und $ token_name Parameter wie folgt zu bilden:
call('/login', 'POST', array (
'signin' =>
array (
'username' => $username,
'password' => $password,
$token_name => $token,
)))
Die Option vorgeschlagen in die Dokumentation:
'_with_csrf' => true,
funktioniert überhaupt nicht.
Gibt es eine einfachere Möglichkeit, das Hinzufügen eines Tokens zu jedem manuell getesteten Formular zu vermeiden? Oder gibt es eine Möglichkeit, csrf-Überprüfung zu deaktivieren, wenn Tests ausgeführt werden?
Der Weg, den ich oben beschrieben habe, ist in Ordnung, wenn Sie 1-2 Formulare testen müssen, aber wenn das Projekt zig eindeutige Formulare enthält, wird es ein Schmerz.
T Die Dokumentationsoption verwendet eine Instanz von BaseForm zum Erweitern von; Das CSRF-Token wird jedoch unter Verwendung der Art des Formulars generiert, also MyFooForm! = BaseForm und deshalb schlägt die Option fehl ... Ihre Option ist die Art, wie ich es auch in meinen Projekten getan habe. – richsage
Es gibt einen anderen Grund, warum es auch nicht funktioniert. Es fügt das csrf-Token zur Liste der Parameter hinzu, aber normalerweise in Formularen in Arrays (wie im obigen Beispiel). So ist es völlig nutzlos :-(. Danke für Ihren Kommentar. – Stepashka