Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2014-05-06 14:24:34 +0000
committerSimone Bordet2014-05-06 14:24:34 +0000
commite983e00a4572d4841aa4876f986fe2d7c19a2ce8 (patch)
treef1547eb851d153395b296402000dbea7e428abf8
parentb966c025017c7dbb93a9cc5d9a148a8c4e586645 (diff)
downloadorg.eclipse.jetty.project-e983e00a4572d4841aa4876f986fe2d7c19a2ce8.tar.gz
org.eclipse.jetty.project-e983e00a4572d4841aa4876f986fe2d7c19a2ce8.tar.xz
org.eclipse.jetty.project-e983e00a4572d4841aa4876f986fe2d7c19a2ce8.zip
Tests for TryFilesFilter.
-rw-r--r--jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilterTest.java107
1 files changed, 107 insertions, 0 deletions
diff --git a/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilterTest.java b/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilterTest.java
new file mode 100644
index 0000000000..e1d78c79b4
--- /dev/null
+++ b/jetty-fcgi/fcgi-server/src/test/java/org/eclipse/jetty/fcgi/server/proxy/TryFilesFilterTest.java
@@ -0,0 +1,107 @@
+//
+// ========================================================================
+// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd.
+// ------------------------------------------------------------------------
+// All rights reserved. This program and the accompanying materials
+// are made available under the terms of the Eclipse Public License v1.0
+// and Apache License v2.0 which accompanies this distribution.
+//
+// The Eclipse Public License is available at
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// The Apache License v2.0 is available at
+// http://www.opensource.org/licenses/apache2.0.php
+//
+// You may elect to redistribute this code under either of these licenses.
+// ========================================================================
+//
+
+package org.eclipse.jetty.fcgi.server.proxy;
+
+import java.io.IOException;
+import java.util.EnumSet;
+import javax.servlet.DispatcherType;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.eclipse.jetty.client.HttpClient;
+import org.eclipse.jetty.client.api.ContentResponse;
+import org.eclipse.jetty.server.Server;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.servlet.FilterHolder;
+import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TryFilesFilterTest
+{
+ private Server server;
+ private ServerConnector connector;
+ private ServerConnector sslConnector;
+ private HttpClient client;
+ private String forwardPath;
+
+ public void prepare(HttpServlet servlet) throws Exception
+ {
+ server = new Server();
+ connector = new ServerConnector(server);
+ server.addConnector(connector);
+
+ SslContextFactory sslContextFactory = new SslContextFactory();
+ sslContextFactory.setEndpointIdentificationAlgorithm("");
+ sslContextFactory.setKeyStorePath("src/test/resources/keystore.jks");
+ sslContextFactory.setKeyStorePassword("storepwd");
+ sslContextFactory.setTrustStorePath("src/test/resources/truststore.jks");
+ sslContextFactory.setTrustStorePassword("storepwd");
+ sslConnector = new ServerConnector(server, sslContextFactory);
+ server.addConnector(sslConnector);
+
+ ServletContextHandler context = new ServletContextHandler(server, "/");
+
+ FilterHolder filterHolder = context.addFilter(TryFilesFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
+ forwardPath = "/index.php";
+ filterHolder.setInitParameter(TryFilesFilter.FILES_INIT_PARAM, "$path " + forwardPath + "?p=$path");
+
+ context.addServlet(new ServletHolder(servlet), "/*");
+
+ client = new HttpClient(sslContextFactory);
+ server.addBean(client);
+
+ server.start();
+ }
+
+ @After
+ public void dispose() throws Exception
+ {
+ server.stop();
+ }
+
+ @Test
+ public void testHTTPSRequestIsForwarded() throws Exception
+ {
+ final String path = "/one/";
+ prepare(new HttpServlet()
+ {
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ Assert.assertTrue("https".equalsIgnoreCase(req.getScheme()));
+ Assert.assertTrue(req.isSecure());
+ Assert.assertEquals(forwardPath, req.getRequestURI());
+ Assert.assertTrue(req.getQueryString().endsWith(path));
+ }
+ });
+
+ ContentResponse response = client.newRequest("localhost", sslConnector.getLocalPort())
+ .scheme("https")
+ .path(path)
+ .send();
+
+ Assert.assertEquals(200, response.getStatus());
+ }
+}

Back to the top