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);
-               }
-       }
 }


Reply via email to