Calling wicketTester.clickLink(...) on a StatelessLink causes 
"PageExpiredException" with Wicket 1.5.0
------------------------------------------------------------------------------------------------------

                 Key: WICKET-4045
                 URL: https://issues.apache.org/jira/browse/WICKET-4045
             Project: Wicket
          Issue Type: Bug
          Components: wicket
    Affects Versions: 1.5.0
         Environment: Ubuntu Linux 11.04
Java 1.7
            Reporter: Jeff Campbell
            Priority: Blocker


When running a JUnit test and I call wicketTester.clickLink(...) on a 
StatlessLink in a 1.5.0 project, will cause a PageExpiredException, if I change 
the code back to Wicket 1.4.18 the code does NOT throw any exception and the 
test works as expected.  This is marked BLOCKER because this bug causes all of 
our unit tests to fail when we migrate over to Wicket 1.5.0 

Reproduce
1. I created a new Maven archetype project:
mvn archetype:generate -DarchetypeGroupId=org.apache.wicket 
-DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.5.0 
-DgroupId=com.mycompany -DartifactId=myproject 
-DarchetypeRepository=https://repository.apache.org/ -DinteractiveMode=false

2. Add a link to HomePage.html
<a wicket:id="clickMeLink" href="#">Click Me</a>

3. Add a StatelessLink to HomePage.java
     add(new StatelessLink("clickMeLink") {
        @Override
        public void onClick() {
          System.out.println("Clicked!!");
          setResponsePage(OtherPage.class);
        }
     });

4. Add a blank OtherPage.java and OtherPage.html

5. Add a JUnit test:

  @Test
  public void homepageRendersSuccessfully() {
    //start and render the test page
    tester.startPage(HomePage.class);

    //assert rendered page class
    tester.assertRenderedPage(HomePage.class);

    tester.clickLink("clickMeLink");                         // !!!!! 
"PageExpiredException" with Wicket 1.5.0
    tester.assertRenderedPage(OtherPage.class);
  }

6. Run "mvn install"

Results
An Test failure occurs with: 
org.apache.wicket.protocol.http.PageExpiredException: Page expired.
        at 
org.apache.wicket.request.handler.PageProvider.getPageInstance(PageProvider.java:171)
        at 
org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.getPage(ListenerInterfaceRequestHandler.java:89)
        at 
org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:149)
        at 
org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:719)
        at 
org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:63)
        at 
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:210)
        at 
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:253)
        at 
org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:596)
        at 
org.apache.wicket.util.tester.BaseWicketTester.processRequest(BaseWicketTester.java:516)
        at 
org.apache.wicket.util.tester.BaseWicketTester.executeListener(BaseWicketTester.java:988)
        at 
org.apache.wicket.util.tester.BaseWicketTester.clickLink(BaseWicketTester.java:1795)
        at 
org.apache.wicket.util.tester.BaseWicketTester.clickLink(BaseWicketTester.java:1677)
        at 
com.mycompany.TestHomePage.homepageRendersSuccessfully(TestHomePage.java:29)

Expected Results
No Test failures


Other Notes:
If I change the link from "StatelessLink" to "Link" then the Test will succeed 
(although this is NOT what we want to do... we want our pages to be Stateless)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to