Author: pete
Date: Sat Jun 25 14:37:41 2011
New Revision: 1139546

URL: http://svn.apache.org/viewvc?rev=1139546&view=rev
Log:
WICKET-3834 WicketTester does not follow absolute redirects (propagate 
protocol://host:port of the last non-ajax request)

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/protocol/https/HttpsMapperApplicationTest.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=1139546&r1=1139545&r2=1139546&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
 Sat Jun 25 14:37:41 2011
@@ -358,6 +358,20 @@ public class BaseWicketTester
        {
                request = new MockHttpServletRequest(application, httpSession, 
servletContext);
                request.setURL(request.getContextPath() + 
request.getServletPath() + "/");
+
+               // assign protocol://host:port to next request unless the last 
request was ajax
+               final boolean assignBaseLocation =
+                       lastRequest != null && 
lastRequest.getHeader("Wicket-Ajax") == null;
+
+               // resume request processing with scheme://host:port from last 
request
+               if (assignBaseLocation)
+               {
+                       request.setScheme(lastRequest.getScheme());
+                       request.setSecure(lastRequest.isSecure());
+                       request.setServerName(lastRequest.getServerName());
+                       request.setServerPort(lastRequest.getServerPort());
+               }
+               
                response = new MockHttpServletResponse(request);
 
                ServletWebRequest servletWebRequest = newServletWebRequest();

Modified: 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/https/HttpsMapperApplicationTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/https/HttpsMapperApplicationTest.java?rev=1139546&r1=1139545&r2=1139546&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/https/HttpsMapperApplicationTest.java
 (original)
+++ 
wicket/trunk/wicket-core/src/test/java/org/apache/wicket/protocol/https/HttpsMapperApplicationTest.java
 Sat Jun 25 14:37:41 2011
@@ -115,4 +115,18 @@ public class HttpsMapperApplicationTest
                assertEquals("https", tester.getLastRequest().getScheme());
                assertEquals(456, tester.getLastRequest().getServerPort());
        }
+
+       @Test
+       public void testProtocolSwitchForNextRequest()
+       {
+               WicketTester tester = new WicketTester(new 
HttpsMapperApplication());
+
+               requestPage(tester, HttpsPage.class);
+
+               assertEquals("https", tester.getLastRequest().getScheme());
+               assertEquals(443, tester.getLastRequest().getServerPort());
+               
+               assertEquals("https", tester.getRequest().getScheme());
+               assertEquals(443, tester.getRequest().getServerPort());
+       }
 }


Reply via email to