You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/11/30 15:02:12 UTC

svn commit: r1717252 - in /tomcat/trunk: java/org/apache/catalina/connector/ test/org/apache/catalina/authenticator/ test/org/apache/catalina/connector/ test/org/apache/catalina/core/ test/org/apache/catalina/filters/ test/org/apache/catalina/realm/ te...

Author: markt
Date: Mon Nov 30 14:02:12 2015
New Revision: 1717252

URL: http://svn.apache.org/viewvc?rev=1717252&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=56917
All relative URIs to be used with sendRedirect()

Added:
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java
      - copied, changed from r1716911, tomcat/trunk/test/org/apache/catalina/core/TesterContext.java
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterRequest.java
      - copied, changed from r1716911, tomcat/trunk/test/org/apache/catalina/connector/TesterRequest.java
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterResponse.java
      - copied, changed from r1716911, tomcat/trunk/test/org/apache/catalina/connector/TesterResponse.java
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java   (with props)
Removed:
    tomcat/trunk/test/org/apache/catalina/connector/TesterRequest.java
    tomcat/trunk/test/org/apache/catalina/connector/TesterResponse.java
    tomcat/trunk/test/org/apache/catalina/core/TesterContext.java
Modified:
    tomcat/trunk/java/org/apache/catalina/connector/Response.java
    tomcat/trunk/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
    tomcat/trunk/test/org/apache/catalina/authenticator/TestJaspicDigestAuthenticator.java
    tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java
    tomcat/trunk/test/org/apache/catalina/connector/TestResponse.java
    tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java
    tomcat/trunk/test/org/apache/catalina/filters/TestRemoteIpFilter.java
    tomcat/trunk/test/org/apache/catalina/realm/TestJNDIRealm.java
    tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java
    tomcat/trunk/test/org/apache/catalina/startup/TestWebappServiceLoader.java
    tomcat/trunk/test/org/apache/catalina/webresources/TesterWebResourceRoot.java
    tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java

Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Mon Nov 30 14:02:12 2015
@@ -19,6 +19,7 @@ package org.apache.catalina.connector;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.nio.charset.Charset;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
@@ -1266,6 +1267,7 @@ public class Response
         sendRedirect(location, SC_FOUND);
     }
 
+
     /**
      * Internal method that allows a redirect to be sent with a status other
      * than {@link HttpServletResponse#SC_FOUND} (302). No attempt is made to
@@ -1273,8 +1275,7 @@ public class Response
      */
     public void sendRedirect(String location, int status) throws IOException {
         if (isCommitted()) {
-            throw new IllegalStateException
-                (sm.getString("coyoteResponse.sendRedirect.ise"));
+            throw new IllegalStateException(sm.getString("coyoteResponse.sendRedirect.ise"));
         }
 
         // Ignore any call from an included servlet
@@ -1287,13 +1288,13 @@ public class Response
 
         // Generate a temporary redirect to the specified location
         try {
-            String absolute = toAbsolute(location);
+            String locationUri = URI.create(location).toASCIIString();
             setStatus(status);
-            setHeader("Location", absolute);
+            setHeader("Location", locationUri);
             if (getContext().getSendRedirectBody()) {
                 PrintWriter writer = getWriter();
                 writer.print(sm.getString("coyoteResponse.sendRedirect.note",
-                        RequestUtil.filter(absolute)));
+                        RequestUtil.filter(locationUri)));
                 flushBuffer();
             }
         } catch (IllegalArgumentException e) {

Modified: tomcat/trunk/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java (original)
+++ tomcat/trunk/test/org/apache/catalina/authenticator/TestDigestAuthenticator.java Mon Nov 30 14:02:12 2015
@@ -32,11 +32,11 @@ import org.junit.Test;
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Request;
-import org.apache.catalina.core.TesterContext;
 import org.apache.catalina.startup.TesterMapRealm;
 import org.apache.catalina.startup.TesterServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterContext;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;

Modified: tomcat/trunk/test/org/apache/catalina/authenticator/TestJaspicDigestAuthenticator.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/authenticator/TestJaspicDigestAuthenticator.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/authenticator/TestJaspicDigestAuthenticator.java (original)
+++ tomcat/trunk/test/org/apache/catalina/authenticator/TestJaspicDigestAuthenticator.java Mon Nov 30 14:02:12 2015
@@ -37,11 +37,11 @@ import org.apache.catalina.LifecycleExce
 import org.apache.catalina.authenticator.jaspic.JaspicAuthenticator;
 import org.apache.catalina.authenticator.jaspic.provider.TomcatAuthConfigProvider;
 import org.apache.catalina.connector.Request;
-import org.apache.catalina.core.TesterContext;
 import org.apache.catalina.startup.TesterMapRealm;
 import org.apache.catalina.startup.TesterServlet;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterContext;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.descriptor.web.LoginConfig;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;

Modified: tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java (original)
+++ tomcat/trunk/test/org/apache/catalina/connector/TestRequest.java Mon Nov 30 14:02:12 2015
@@ -52,6 +52,7 @@ import org.apache.catalina.startup.Simpl
 import org.apache.catalina.startup.TesterMapRealm;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterRequest;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.descriptor.web.FilterDef;
 import org.apache.tomcat.util.descriptor.web.FilterMap;

Modified: tomcat/trunk/test/org/apache/catalina/connector/TestResponse.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestResponse.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TestResponse.java (original)
+++ tomcat/trunk/test/org/apache/catalina/connector/TestResponse.java Mon Nov 30 14:02:12 2015
@@ -38,6 +38,7 @@ import org.junit.Test;
 import org.apache.catalina.Context;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterRequest;
 import org.apache.tomcat.util.buf.ByteChunk;
 
 /**
@@ -360,7 +361,219 @@ public class TestResponse extends Tomcat
     }
 
 
+    private void doTestEncodeURL(String location, String expected) {
+        Request req = new TesterRequest(true);
+        req.setRequestedSessionId("1234");
+        req.setRequestedSessionURL(true);
+        Response resp = new Response();
+        resp.setRequest(req);
+
+        String result = resp.encodeURL(location);
+        Assert.assertEquals(expected, result);
+    }
+
+
+    @Test
+    public void testEncodeURL01() throws Exception {
+        doTestEncodeURL("./bar.html", "./bar.html;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeURL02() throws Exception {
+        doTestEncodeURL(".", ".;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeURL03() throws Exception {
+        doTestEncodeURL("..", "..;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeURL04() throws Exception {
+        doTestEncodeURL(".././..", ".././..;jsessionid=1234");
+    }
+
+
+    public void testEncodeURL05() throws Exception {
+        doTestEncodeURL("../../..", "../../..");
+    }
+
+
+    @Test
+    public void testEncodeURL06() throws Exception {
+        doTestEncodeURL("bar.html", "bar.html;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeURL07() throws Exception {
+        doTestEncodeURL("bar.html?x=/../", "bar.html;jsessionid=1234?x=/../");
+    }
+
+
+    @Test
+    public void testEncodeURL08() throws Exception {
+        doTestEncodeURL("bar.html?x=/../../", "bar.html;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL09() throws Exception {
+        doTestEncodeURL("./.?x=/../../", "./.;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL10() throws Exception {
+        doTestEncodeURL("./..?x=/../../", "./..;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL11() throws Exception {
+        doTestEncodeURL("./..?x=/../..", "./..;jsessionid=1234?x=/../..");
+    }
+
+
+    @Test
+    public void testEncodeURL12() throws Exception {
+        doTestEncodeURL("bar.html#/../", "bar.html;jsessionid=1234#/../");
+    }
+
+
+    @Test
+    public void testEncodeURL13() throws Exception {
+        doTestEncodeURL("bar.html#/../../", "bar.html;jsessionid=1234#/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL14() throws Exception {
+        doTestEncodeURL("./.#/../../", "./.;jsessionid=1234#/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL15() throws Exception {
+        doTestEncodeURL("./..#/../../", "./..;jsessionid=1234#/../../");
+    }
+
+
+    @Test
+    public void testEncodeURL16() throws Exception {
+        doTestEncodeURL("./..#/../..", "./..;jsessionid=1234#/../..");
+    }
+
+
+    private void doTestEncodeRedirectURL(String location, String expected) {
+        Request req = new TesterRequest(true);
+        req.setRequestedSessionId("1234");
+        req.setRequestedSessionURL(true);
+        Response resp = new Response();
+        resp.setRequest(req);
+
+        String result = resp.encodeRedirectURL(location);
+        Assert.assertEquals(expected, result);
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL01() throws Exception {
+        doTestEncodeRedirectURL("./bar.html", "./bar.html;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL02() throws Exception {
+        doTestEncodeRedirectURL(".", ".;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL03() throws Exception {
+        doTestEncodeRedirectURL("..", "..;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL04() throws Exception {
+        doTestEncodeRedirectURL(".././..", ".././..;jsessionid=1234");
+    }
+
+
+    @Test(expected=IllegalArgumentException.class)
+    public void testEncodeRedirectURL05() throws Exception {
+        doTestEncodeRedirectURL("../../..", "throws IAE");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL06() throws Exception {
+        doTestEncodeRedirectURL("bar.html", "bar.html;jsessionid=1234");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL07() throws Exception {
+        doTestEncodeRedirectURL("bar.html?x=/../", "bar.html;jsessionid=1234?x=/../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL08() throws Exception {
+        doTestEncodeRedirectURL("bar.html?x=/../../", "bar.html;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL09() throws Exception {
+        doTestEncodeRedirectURL("./.?x=/../../", "./.;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL10() throws Exception {
+        doTestEncodeRedirectURL("./..?x=/../../", "./..;jsessionid=1234?x=/../../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL11() throws Exception {
+        doTestEncodeRedirectURL("./..?x=/../..", "./..;jsessionid=1234?x=/../..");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL12() throws Exception {
+        doTestEncodeRedirectURL("bar.html#/../", "bar.html;jsessionid=1234#/../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL13() throws Exception {
+        doTestEncodeRedirectURL("bar.html#/../../", "bar.html;jsessionid=1234#/../../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL14() throws Exception {
+        doTestEncodeRedirectURL("./.#/../../", "./.;jsessionid=1234#/../../");
+    }
+
+
+    @Test
+    public void testEncodeRedirectURL15() throws Exception {
+        doTestEncodeRedirectURL("./..#/../../", "./..;jsessionid=1234#/../../");
+    }
+
+
     @Test
+    public void testEncodeRedirectURL16() throws Exception {
+        doTestEncodeURL("./..#/../..", "./..;jsessionid=1234#/../..");
+    }    @Test
     public void testBug53469a() throws Exception {
         Request req = new TesterRequest();
         Response resp = new Response();

Modified: tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java (original)
+++ tomcat/trunk/test/org/apache/catalina/connector/TestResponsePerformance.java Mon Nov 30 14:02:12 2015
@@ -22,6 +22,7 @@ import org.junit.Assert;
 import org.junit.Test;
 
 import org.apache.catalina.startup.LoggingBaseTest;
+import org.apache.tomcat.unittest.TesterRequest;
 
 public class TestResponsePerformance extends LoggingBaseTest {
 

Modified: tomcat/trunk/test/org/apache/catalina/filters/TestRemoteIpFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/filters/TestRemoteIpFilter.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/filters/TestRemoteIpFilter.java (original)
+++ tomcat/trunk/test/org/apache/catalina/filters/TestRemoteIpFilter.java Mon Nov 30 14:02:12 2015
@@ -49,10 +49,10 @@ import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.connector.Connector;
 import org.apache.catalina.connector.Request;
-import org.apache.catalina.connector.TesterResponse;
-import org.apache.catalina.core.TesterContext;
 import org.apache.catalina.startup.Tomcat;
 import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.unittest.TesterContext;
+import org.apache.tomcat.unittest.TesterResponse;
 import org.apache.tomcat.util.descriptor.web.FilterDef;
 import org.apache.tomcat.util.descriptor.web.FilterMap;
 

Modified: tomcat/trunk/test/org/apache/catalina/realm/TestJNDIRealm.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/realm/TestJNDIRealm.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/realm/TestJNDIRealm.java (original)
+++ tomcat/trunk/test/org/apache/catalina/realm/TestJNDIRealm.java Mon Nov 30 14:02:12 2015
@@ -35,8 +35,8 @@ import org.junit.Test;
 
 import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
-import org.apache.catalina.core.TesterContext;
 import org.apache.naming.NameParserImpl;
+import org.apache.tomcat.unittest.TesterContext;
 import org.apache.tomcat.util.security.MD5Encoder;
 import org.easymock.EasyMock;
 

Modified: tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java (original)
+++ tomcat/trunk/test/org/apache/catalina/realm/TestRealmBase.java Mon Nov 30 14:02:12 2015
@@ -30,10 +30,10 @@ import org.junit.Test;
 import org.apache.catalina.Context;
 import org.apache.catalina.connector.Request;
 import org.apache.catalina.connector.Response;
-import org.apache.catalina.connector.TesterRequest;
-import org.apache.catalina.connector.TesterResponse;
-import org.apache.catalina.core.TesterContext;
 import org.apache.catalina.startup.TesterMapRealm;
+import org.apache.tomcat.unittest.TesterContext;
+import org.apache.tomcat.unittest.TesterRequest;
+import org.apache.tomcat.unittest.TesterResponse;
 import org.apache.tomcat.util.descriptor.web.SecurityCollection;
 import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
 

Modified: tomcat/trunk/test/org/apache/catalina/startup/TestWebappServiceLoader.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestWebappServiceLoader.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TestWebappServiceLoader.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TestWebappServiceLoader.java Mon Nov 30 14:02:12 2015
@@ -32,7 +32,7 @@ import org.junit.Before;
 import org.junit.Test;
 
 import org.apache.catalina.Context;
-import org.apache.catalina.core.TesterContext;
+import org.apache.tomcat.unittest.TesterContext;
 import org.easymock.EasyMock;
 import org.easymock.IMocksControl;
 

Modified: tomcat/trunk/test/org/apache/catalina/webresources/TesterWebResourceRoot.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/webresources/TesterWebResourceRoot.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/webresources/TesterWebResourceRoot.java (original)
+++ tomcat/trunk/test/org/apache/catalina/webresources/TesterWebResourceRoot.java Mon Nov 30 14:02:12 2015
@@ -22,7 +22,7 @@ import org.apache.catalina.Context;
 import org.apache.catalina.LifecycleException;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.LifecycleState;
-import org.apache.catalina.core.TesterContext;
+import org.apache.tomcat.unittest.TesterContext;
 
 /**
  * Minimal implementation for use in unit tests that supports main and pre

Copied: tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java (from r1716911, tomcat/trunk/test/org/apache/catalina/core/TesterContext.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java?p2=tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java&p1=tomcat/trunk/test/org/apache/catalina/core/TesterContext.java&r1=1716911&r2=1717252&rev=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/core/TesterContext.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterContext.java Mon Nov 30 14:02:12 2015
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.catalina.core;
+package org.apache.tomcat.unittest;
 
 import java.beans.PropertyChangeListener;
 import java.io.File;
@@ -588,9 +588,13 @@ public class TesterContext implements Co
         // NO-OP
     }
 
+    private ServletContext servletContext;
     @Override
     public ServletContext getServletContext() {
-        return null;
+        return servletContext;
+    }
+    public void setServletContext(ServletContext servletContext) {
+        this.servletContext = servletContext;
     }
 
     @Override

Copied: tomcat/trunk/test/org/apache/tomcat/unittest/TesterRequest.java (from r1716911, tomcat/trunk/test/org/apache/catalina/connector/TesterRequest.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterRequest.java?p2=tomcat/trunk/test/org/apache/tomcat/unittest/TesterRequest.java&p1=tomcat/trunk/test/org/apache/catalina/connector/TesterRequest.java&r1=1716911&r2=1717252&rev=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TesterRequest.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterRequest.java Mon Nov 30 14:02:12 2015
@@ -14,16 +14,51 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.catalina.connector;
+package org.apache.tomcat.unittest;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.ServletContext;
+import javax.servlet.SessionTrackingMode;
+
+import org.apache.catalina.Context;
+import org.apache.catalina.connector.Request;
+import org.apache.catalina.session.StandardSession;
 
 public class TesterRequest extends Request {
+
+    private final TesterContext context;
+    private final TesterServletContext servletContext;
+
+
+    public TesterRequest() {
+        this(false);
+    }
+
+
+    public TesterRequest(boolean withSession) {
+        context = new TesterContext();
+        servletContext = new TesterServletContext();
+        context.setServletContext(servletContext);
+        if (withSession) {
+            Set<SessionTrackingMode> modes = new HashSet<>();
+            modes.add(SessionTrackingMode.URL);
+            modes.add(SessionTrackingMode.COOKIE);
+            servletContext.setSessionTrackingModes(modes);
+            session = new StandardSession(null);
+            session.setId("1234", false);
+            session.setValid(true);
+        }
+    }
+
+
     @Override
     public String getScheme() {
         return "http";
@@ -39,11 +74,31 @@ public class TesterRequest extends Reque
         return 8080;
     }
 
+
     @Override
-    public String getDecodedRequestURI() {
+    public String getRequestURI() {
         return "/level1/level2/foo.html";
     }
 
+    @Override
+    public String getDecodedRequestURI() {
+        // Decoding not required
+        return getRequestURI();
+    }
+
+
+    @Override
+    public Context getContext() {
+        return context;
+    }
+
+
+    @Override
+    public ServletContext getServletContext() {
+        return servletContext;
+    }
+
+
     private String method;
     public void setMethod(String method) {
         this.method = method;
@@ -54,7 +109,7 @@ public class TesterRequest extends Reque
     }
 
     private final Map<String,List<String>> headers = new HashMap<>();
-    protected void addHeader(String name, String value) {
+    public void addHeader(String name, String value) {
         List<String> values = headers.get(name);
         if (values == null) {
             values = new ArrayList<>();

Copied: tomcat/trunk/test/org/apache/tomcat/unittest/TesterResponse.java (from r1716911, tomcat/trunk/test/org/apache/catalina/connector/TesterResponse.java)
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterResponse.java?p2=tomcat/trunk/test/org/apache/tomcat/unittest/TesterResponse.java&p1=tomcat/trunk/test/org/apache/catalina/connector/TesterResponse.java&r1=1716911&r2=1717252&rev=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/connector/TesterResponse.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterResponse.java Mon Nov 30 14:02:12 2015
@@ -14,10 +14,12 @@
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
  */
-package org.apache.catalina.connector;
+package org.apache.tomcat.unittest;
 
 import java.io.IOException;
 
+import org.apache.catalina.connector.Response;
+
 /**
  * Minimal changes to Response to enable tests that use this class to operate
  * correctly.

Modified: tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java?rev=1717252&r1=1717251&r2=1717252&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterServletContext.java Mon Nov 30 14:02:12 2015
@@ -22,6 +22,7 @@ import java.net.URL;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.EventListener;
+import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 
@@ -38,7 +39,6 @@ import javax.servlet.SessionTrackingMode
 import javax.servlet.descriptor.JspConfigDescriptor;
 
 import org.apache.catalina.core.ApplicationFilterRegistration;
-import org.apache.catalina.core.TesterContext;
 import org.apache.tomcat.util.descriptor.web.FilterDef;
 
 public class TesterServletContext implements ServletContext {
@@ -278,15 +278,18 @@ public class TesterServletContext implem
         throw new RuntimeException("Not implemented");
     }
 
+    private SessionCookieConfig sessionCookieConfig = new TesterSessionCookieConfig();
     @Override
     public SessionCookieConfig getSessionCookieConfig() {
-        throw new RuntimeException("Not implemented");
+        return sessionCookieConfig;
     }
 
+    private final Set<SessionTrackingMode> sessionTrackingModes = new HashSet<>();
     @Override
     public void setSessionTrackingModes(
             Set<SessionTrackingMode> sessionTrackingModes) {
-        throw new RuntimeException("Not implemented");
+        this.sessionTrackingModes.clear();
+        this.sessionTrackingModes.addAll(sessionTrackingModes);
     }
 
     @Override
@@ -296,7 +299,7 @@ public class TesterServletContext implem
 
     @Override
     public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
-        throw new RuntimeException("Not implemented");
+        return sessionTrackingModes;
     }
 
     @Override

Added: tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java?rev=1717252&view=auto
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java (added)
+++ tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java Mon Nov 30 14:02:12 2015
@@ -0,0 +1,93 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.tomcat.unittest;
+
+import javax.servlet.SessionCookieConfig;
+
+public class TesterSessionCookieConfig implements SessionCookieConfig {
+
+    private String name;
+    @Override
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public void setDomain(String domain) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getDomain() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setPath(String path) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getPath() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setComment(String comment) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public String getComment() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setHttpOnly(boolean httpOnly) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isHttpOnly() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setSecure(boolean secure) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isSecure() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void setMaxAge(int MaxAge) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public int getMaxAge() {
+        throw new UnsupportedOperationException();
+    }
+}

Propchange: tomcat/trunk/test/org/apache/tomcat/unittest/TesterSessionCookieConfig.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org