Projít definici formuláře:
- CSRF (addProtection).
- Validační pravidla nepropustí hodnotu, kterou nelze zpracovat (onSuccess).
- Pokud formulář plní entitu, validační pravidla musí být přinejmenším stejně přísná, jako pravidla na entitě a v databázi. Kontrolovat jak podle deklarace entity, tak podle DB tabulky, občas tam máme nesrovnalosti (ty nejlépe přitom odstranit).
- Pokud prvek není
setRequired
, tak si zpracování musí poradit s prázdným řetězcem, nebo ho změnit na něco, s čím si poradí (třeba NULL). - Pokud
SelectBox
má prompt, tak může být hodnotou NULL (pokud nenísetRequired
).
- Formulář nemůže instancovat někdo, kdo k tomu nemá oprávnění.
- Pokud celý presenter s tovární metodou vyžaduje minimálně stejný stupeň oprávnění, jako formulář, tak je splněno.
- Jinak je nutné přidat nějakou kontrolu do té továrny.
- Při zpracování se nedůvěřuje skrytým polím.
- Například editační formulář ideálně nemá ID v
HiddenField
, ale v názvu komponenty a oprávnění k editaci dané položky se kontroluje při vytváření té komponenty.
- Například editační formulář ideálně nemá ID v
Vyzkoušet:
- Add/edit form zkoušet zvlášť jako editační a zvlášť jako přidávací.
- Odeslání formuláře bez jakýchkoli úprav. Musí buďto projít, nebo korektně vyfakovat.
- Odeslání formuláře s minimálními možnými úpravami podle validačních pravidel. Dtto.
- Všemožné nesmyslné vstupy.
- Všemožné nesmyslné vstupy s vypnutým javascriptem. Například špatný formát datumu (o ten se normálně stará nějaký datepicker, ale ten se taky nemusí vždy načíst).
Pokud by byl čas na psaní testů:
- Automatické testy na všechno to, co výše zkouším ručně.
- Test, že formulář obsahuje všechna očekávaná pole.
- Test, že výsledné HTML obsahuje všechna definovaná pole.
má smysl dávat CSRF i do administrace?