Author: jdonnerstag
Date: Sun Jun 12 10:18:20 2011
New Revision: 1134901
URL: http://svn.apache.org/viewvc?rev=1134901&view=rev
Log:
fixed: Add methods to allow for better configuration of header values in
WicketTester
Issue: WICKET-3775
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/WicketTestCase.java
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/XmlDeclResponseTest.java
Modified:
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java?rev=1134901&r1=1134900&r2=1134901&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
(original)
+++
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/util/tester/BaseWicketTester.java
Sun Jun 12 10:18:20 2011
@@ -197,6 +197,10 @@ public class BaseWicketTester
// see https://issues.apache.org/jira/browse/WICKET-1214
private Component startComponent;
+ // User may provide request header value any time. They get applied
(and reset) upon next
+ // invocation of processRequest()
+ private Map<String, String> preHeader;
+
/**
* Creates <code>WicketTester</code> and automatically create a
<code>WebApplication</code>, but
* the tester will have no home page.
@@ -291,6 +295,8 @@ public class BaseWicketTester
// initialize the application
application.initApplication();
+ // We don't expect any changes during testing. In addition we
avoid creating
+ // ModificationWatcher threads tests.
application.getResourceSettings().setResourcePollFrequency(getResourcePollFrequency());
// reconfigure application for the test environment
@@ -505,13 +511,20 @@ public class BaseWicketTester
}
/**
+ * Process the request. This is a fairly central function and is almost
always invoked for
+ * executing the request.
+ * <p>
+ * You may subclass processRequest it, to monitor or change any
pre-configured value. Request
+ * headers can be configured more easily by calling {@link
#addRequestHeader(String, String)}.
*
* @param forcedRequest
+ * Can be null.
* @param forcedRequestHandler
+ * Can be null.
* @param redirect
* @return true, if process was executed successfully
*/
- private boolean processRequest(final MockHttpServletRequest
forcedRequest,
+ protected boolean processRequest(final MockHttpServletRequest
forcedRequest,
final IRequestHandler forcedRequestHandler, final boolean
redirect)
{
if (forcedRequest != null)
@@ -526,6 +539,21 @@ public class BaseWicketTester
lastRenderedPage = null;
}
+ // Add or replace any system provided header entry with the
user provided.
+ if ((request != null) && (preHeader != null))
+ {
+ for (Map.Entry<String, String> entry :
preHeader.entrySet())
+ {
+ if (Strings.isEmpty(entry.getKey()) == false)
+ {
+ request.addHeader(entry.getKey(),
entry.getValue());
+ }
+ }
+
+ // Reset the user provided headers
+ preHeader = null;
+ }
+
try
{
if (!redirect)
@@ -593,6 +621,30 @@ public class BaseWicketTester
}
/**
+ * Allows to set Request header value any time. They'll be applied
(add/modify) on process
+ * execution {@link #processRequest(MockHttpServletRequest,
IRequestHandler, boolean)}. They are
+ * reset immediately after and thus are not re-used for a sequence of
requests.
+ * <p>
+ * Deletion (not replace) of pre-configured header value can be
achieved by subclassing
+ * {@link #processRequest(MockHttpServletRequest, IRequestHandler,
boolean)} and modifying the
+ * request header directly.
+ *
+ * @param key
+ * @param value
+ */
+ public final void addRequestHeader(final String key, final String value)
+ {
+ Args.notEmpty(key, "key");
+
+ if (preHeader == null)
+ {
+ preHeader = Generics.newHashMap();
+ }
+
+ preHeader.put(key, value);
+ }
+
+ /**
*
*/
private void recordRequestResponse()
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/WicketTestCase.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/WicketTestCase.java?rev=1134901&r1=1134900&r2=1134901&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/WicketTestCase.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/WicketTestCase.java
Sun Jun 12 10:18:20 2011
@@ -66,7 +66,7 @@ public abstract class WicketTestCase ext
protected void setUp() throws Exception
{
WebApplication application = newApplication();
- tester = new WicketTester(application);
+ tester = newWicketTester(application);
}
/**
@@ -78,6 +78,18 @@ public abstract class WicketTestCase ext
}
/**
+ * In case you need to subclass WicketTester and want to be independent
on possible changes in
+ * setUp().
+ *
+ * @param app
+ * @return WIcketTester
+ */
+ protected WicketTester newWicketTester(final WebApplication app)
+ {
+ return new WicketTester(app);
+ }
+
+ /**
* @see junit.framework.TestCase#tearDown()
*/
@Override
Modified:
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/XmlDeclResponseTest.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/XmlDeclResponseTest.java?rev=1134901&r1=1134900&r2=1134901&view=diff
==============================================================================
---
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/XmlDeclResponseTest.java
(original)
+++
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/markup/html/XmlDeclResponseTest.java
Sun Jun 12 10:18:20 2011
@@ -22,9 +22,6 @@ import org.apache.wicket.markup.IMarkupF
import org.apache.wicket.markup.Markup;
import org.apache.wicket.markup.MarkupType;
import org.apache.wicket.protocol.http.WebApplication;
-import org.apache.wicket.protocol.http.mock.MockHttpServletRequest;
-import org.apache.wicket.request.IRequestHandler;
-import org.apache.wicket.util.tester.WicketTester;
import org.junit.Test;
/**
@@ -40,13 +37,6 @@ public class XmlDeclResponseTest extends
private int insertXmlDecl = 0;
@Override
- protected void setUp() throws Exception
- {
- WebApplication application = newApplication();
- tester = new MyWicketTester(application);
- }
-
- @Override
protected WebApplication newApplication()
{
return new WebApplication()
@@ -85,22 +75,22 @@ public class XmlDeclResponseTest extends
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
@@ -120,22 +110,22 @@ public class XmlDeclResponseTest extends
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
@@ -155,22 +145,22 @@ public class XmlDeclResponseTest extends
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = acceptString;
+ tester.addRequestHeader("HTTP_ACCEPT", acceptString);
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWith, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.HTML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
- ((MyWicketTester)tester).acceptHeader = "xx";
+ tester.addRequestHeader("HTTP_ACCEPT", "xx");
tester.startPage(new SimplePage(MarkupType.XML_MIME));
doc = tester.getLastResponseAsString();
assertEquals(markupWithout, doc);
@@ -205,31 +195,4 @@ public class XmlDeclResponseTest extends
return Markup.of(markupWithout);
}
}
-
- /** */
- public static class MyWicketTester extends WicketTester
- {
- /** */
- public String acceptHeader;
-
- /**
- * @param app
- */
- public MyWicketTester(final WebApplication app)
- {
- super(app);
- }
-
- @Override
- public boolean processRequest(final MockHttpServletRequest
request,
- final IRequestHandler forcedRequestHandler)
- {
- if (acceptHeader != null)
- {
- request.addHeader("HTTP_ACCEPT", acceptHeader);
- }
-
- return super.processRequest(request,
forcedRequestHandler);
- }
- }
}