You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2010/10/31 17:03:22 UTC
svn commit: r1029390 -
/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java
Author: mgrigorov
Date: Sun Oct 31 16:03:22 2010
New Revision: 1029390
URL: http://svn.apache.org/viewvc?rev=1029390&view=rev
Log:
WICKET-3143 No Exception page are rendered when using ajax
Extend the test with checks for the different values of AjaxErrorStrategy.
Modified:
wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java
Modified: wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java?rev=1029390&r1=1029389&r2=1029390&view=diff
==============================================================================
--- wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java (original)
+++ wicket/trunk/wicket/src/test/java/org/apache/wicket/ajax/InternalErrorCallsAjaxOnFailureTest.java Sun Oct 31 16:03:22 2010
@@ -16,11 +16,15 @@
*/
package org.apache.wicket.ajax;
+import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
-import java.util.List;
-
+import org.apache.wicket.markup.html.pages.ExceptionErrorPage;
+import org.apache.wicket.markup.html.pages.InternalErrorPage;
import org.apache.wicket.protocol.http.mock.MockHttpServletResponse;
+import org.apache.wicket.resource.DummyApplication;
+import org.apache.wicket.settings.IExceptionSettings;
+import org.apache.wicket.settings.IExceptionSettings.AjaxErrorStrategy;
import org.apache.wicket.util.tester.BaseWicketTester;
import org.apache.wicket.util.tester.WicketTester;
import org.junit.Test;
@@ -29,13 +33,20 @@ import org.junit.Test;
* Tests that for internal errors in Ajax requests Wicket will send the error response immediately
* (RedirectPolicy.NEVER_REDIRECT). Since WicketTester initializes new MockHttpServletResponse after
* a request the response with the error is the last one in
- * {@link BaseWicketTester#getPreviousResponses()}
+ * {@link BaseWicketTester#getLastResponse()}
+ *
+ * See WICKET-3143 No Exception page are rendered when using ajax
+ *
*/
public class InternalErrorCallsAjaxOnFailureTest
{
+ /**
+ * The default {@link IExceptionSettings#getAjaxErrorHandlingStrategy()} is
+ * {@link AjaxErrorStrategy#REDIRECT_TO_ERROR_PAGE}
+ */
@Test
- public void callsOnFailure()
+ public void showsInternalErrorPage()
{
WicketTester tester = new WicketTester();
@@ -45,9 +56,50 @@ public class InternalErrorCallsAjaxOnFai
tester.clickLink("failure-link", true);
// the response before current should holds the error page markup
- List<MockHttpServletResponse> previousResponses = tester.getPreviousResponses();
- MockHttpServletResponse errorPageResponse = previousResponses.get(previousResponses.size() - 1);
+ MockHttpServletResponse errorPageResponse = tester.getLastResponse();
+ assertEquals(Integer.valueOf(500), errorPageResponse.getStatus());
assertTrue(errorPageResponse.getDocument().contains(
InternalErrorCallsAjaxOnFailurePage.ERROR_MESSAGE));
+
+ // assert the page with detailed error explanation is rendered
+ tester.assertRenderedPage(ExceptionErrorPage.class);
+ }
+
+
+ /**
+ * Setup {@link AjaxErrorStrategy#INVOKE_FAILURE_HANDLER} so Wicket will not redirect to the
+ * configured {@link InternalErrorPage}/{@link ExceptionErrorPage} but will preserve the current
+ * page and send http status 500 to wicket-ajax.js
+ */
+ @Test
+ public void callsOnFailure()
+ {
+
+ WicketTester tester = new WicketTester(new DummyApplication()
+ {
+
+ /**
+ * @see org.apache.wicket.protocol.http.WebApplication#init()
+ */
+ @Override
+ protected void init()
+ {
+ super.init();
+
+ getExceptionSettings().setAjaxErrorHandlingStrategy(
+ AjaxErrorStrategy.INVOKE_FAILURE_HANDLER);
+ }
+
+ });
+ tester.setExposeExceptions(false);
+ tester.startPage(InternalErrorCallsAjaxOnFailurePage.class);
+
+ tester.clickLink("failure-link", true);
+
+ MockHttpServletResponse errorPageResponse = tester.getLastResponse();
+ assertEquals(Integer.valueOf(500), errorPageResponse.getStatus());
+
+ // assert that the original page is still the last rendered one
+ tester.assertRenderedPage(InternalErrorCallsAjaxOnFailurePage.class);
}
}