Hi!

My main question is: how to process multiple consecutive "raw"
requests using WicketTester, during the same user session.

By "raw" I mean page requests that do not result from clicking links
on pages, but instead, they would be equivalent to the user simply
typing them into the browser (like the startPage).

My scheme is as follows:

We assume the user is logged in, but certain member functionality
(MemberArea -page) is not accessible until email has been confirmed.

1. In the Unit-test the user starts a session with
wicketTester.startPage(MemberArea.class);

2. Authentication scheme remembers the user and logs her in.

3. Authentication scheme, however, notices the user has not confirmed
her email, and issues a throw new
RestartResponseAtInterceptPageException(EmailConfirmationPending.class);

4. In order to be allowed to continue, the user is supposed visit a
bookmarkable email confirmation link
http://<site>/EmailConfirmation/confirmationKey

If the email confirmation is approved, the EmailConfirmation -page
should redirect the user back to the originally requested content
(i.e., MemberArea -page in this test case).

This is the scenario we want to be unit-tested.

Now, if she was using a browser, it would be easy: just type the url
into the browser. However, with the wicketTester, I cannot seem to
find a way of accomplishing this. I cannot embed the link onto the web
page, because this would not correspond to the standard scheme: the
link is supposed to arrive separately via email.

I have tried the following approaches with results indicated below:
a) calling new WicketTester(myApplication).startPage(new
EmailConfirmation(pageParameters)), which results in a completely
cleared PageMap and the method continueToOriginalDestination() in
EmailConfirmation fails for some reason.
Instead, wicketTester.assertRenderedPage(MemberArea.class) should
return true, but it does not because the EmailConfirmation.class is
rendered.

b) calling wicketTester.setupRequestAndResponse(); and
wicketTester.getLastRenderedPage().setResponsePage(new
EmailConfirmation(pageParameters)), results in a slightly better
functionality.
However, instead of continueToOriginalDestination() on the
EmailConfirmation page rendering the MemberArea page, it now renders
the EmailConfirmationPending -page
which intercepted the request. Not good.

c) another try, calling wicketTester.setupRequestAndResponse() and
wicketTester.getServletRequest().setRequestToComponent(new
EmailConfirmation(pageParameters)) gives the same results as b).

If I perform the same tests with a browser, I get the expected
results. Is this somehow not the proper way to handle the raw
requests with wicketTester and expecting the PageMap to be updated
accordingly?

Hou should I properly implement such tests? Or is it a bug/missing
feature in wicket?

Thank you in advance!

--
Martin Makundi

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to