Ahoj uživatelé Stripes 1.4.3,
rád bych se zeptal, jak přes Stripes Mock objekty jednotkově testujete
Wizard formy? Stripes se při použití anotace @Wizard u beanu zachovají
následovně:
--When a form is rendered Stripes will insert an encrypted hidden
field containing the names of all fields that were rendered on the
page (for security reasons, if this goes missing Stripes will complain
loudly)
--At the end of rendering a form, any fields that are present in the
request but haven't been rendered in form are written out as hidden
fields
--Required field validation is performed based on the list of fields
known to be on the submitting page
Při vygenerování stránky, kde se používá form vygenerovaný Stripes a
napojený na Wizard bean se do formu přidá parametr __fp se
zakryptovanou hodnotou (viz. první odrážka) a přes browser vše funguje
bez problémů. Pokud chci ale wizard form testovat přes Stripes Mock
třídy, pak po zavolání MockRoundtrip.execute() dojde na hlasité
stížnosti, přesně dle dokumentace :)
2008-02-19 13:42:44,500 WARN
[net.sourceforge.stripes.exception.DefaultExceptionHandler] -
Unhandled exception caught by the Stripes default exception handler.
net.sourceforge.stripes.exception.StripesRuntimeException: Submission
of a wizard form in Stripes absolutely requires that the hidden field
Stripes writes containing the names of the fields present on the form
is present and encrypted (as Stripes write it). This is necessary to
prevent a user from spoofing the system and getting around any
security/data checks.
Prostě do response už Mock objekt nepřidá ty zakryptované hodnoty.
Možnost, jak označit testovanou metodu, aby se po jejím zavolání
zmíněné kontroly neprováděly je použít @Wizard(startEvents="begin") -
pak je po zavolání metody ("begin") vše OK a Stripes nekřičí. Což je
však pro jednotkové testování v podstatě nepoužitelné.
Domnívám se, že podporu pro testování Wizard by měl mít a nastavovat
přímo Mock objekt, v tomto případě MockRoundtrip (
http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/mock/MockRoundtrip.html).
Dovolím si tedy stanovit 2 možné příčiny, proč jsem to zatím nezlomil:
1. Blbě čtu dokumentaci a něco jsem přehlédl, tzn. neumím hledat.
2. Nikdo Wizard formy ve Stripes netestuje a já jsem jediný na celém světě ?
Díky za nakopnutí, pokud víte kam :).
Jirka Hradil