You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2019/12/20 13:35:59 UTC

[sling-org-apache-sling-servlets-resolver] branch issue/SLING-8936 updated: SLING-8936 - refactor tests to get a reusable base class

This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a commit to branch issue/SLING-8936
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-servlets-resolver.git


The following commit(s) were added to refs/heads/issue/SLING-8936 by this push:
     new b2f5309  SLING-8936 - refactor tests to get a reusable base class
b2f5309 is described below

commit b2f5309e106aab7f0b13bdd40af75a9781aa1a9c
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Dec 20 12:55:58 2019 +0100

    SLING-8936 - refactor tests to get a reusable base class
---
 .../internal/SecureRequestsOptingServletTest.java  | 106 +++++++++++++++++++++
 ...Test.java => SlingServletResolverTestBase.java} |  96 ++-----------------
 2 files changed, 112 insertions(+), 90 deletions(-)

diff --git a/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java b/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
new file mode 100644
index 0000000..aab277b
--- /dev/null
+++ b/src/test/java/org/apache/sling/servlets/resolver/internal/SecureRequestsOptingServletTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.sling.servlets.resolver.internal;
+
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.Assert.assertEquals;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.servlet.Servlet;
+import javax.servlet.http.HttpServlet;
+
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceUtil;
+import org.apache.sling.api.servlets.OptingServlet;
+import org.apache.sling.api.servlets.ServletResolverConstants;
+import org.apache.sling.commons.testing.osgi.MockServiceReference;
+import org.apache.sling.commons.testing.sling.MockResource;
+import org.apache.sling.commons.testing.sling.MockResourceResolver;
+import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
+import org.apache.sling.servlets.resolver.internal.resource.MockServletResource;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.Constants;
+
+public class SecureRequestsOptingServletTest extends SlingServletResolverTestBase {
+
+    protected  static final String SERVLET_PATH = "/mock";
+    protected  static final String SERVLET_NAME = "TestServlet";
+    protected static final String SERVLET_EXTENSION = "html";
+    private Servlet testServlet;
+
+    protected void defineTestServlets(Bundle bundle) {
+        testServlet = new SecureRequestsOptingServlet();
+
+        MockServiceReference ref = new MockServiceReference(bundle);
+        ref.setProperty(Constants.SERVICE_ID, 1L);
+        ref.setProperty(ServletResolverConstants.SLING_SERVLET_NAME, SERVLET_NAME);
+        ref.setProperty(ServletResolverConstants.SLING_SERVLET_PATHS, SERVLET_PATH);
+        ref.setProperty(ServletResolverConstants.SLING_SERVLET_EXTENSIONS, SERVLET_EXTENSION);
+
+        String path = "/"
+            + MockSlingHttpServletRequest.RESOURCE_TYPE
+            + "/"
+            + ResourceUtil.getName(MockSlingHttpServletRequest.RESOURCE_TYPE)
+            + ".servlet";
+        MockServletResource res = new MockServletResource(mockResourceResolver,
+            testServlet, path);
+            mockResourceResolver.addResource(res);
+
+        MockResource parent = new MockResource(mockResourceResolver,
+            ResourceUtil.getParent(res.getPath()), "nt:folder");
+            mockResourceResolver.addResource(parent);
+
+        List<Resource> childRes = new ArrayList<>();
+        childRes.add(res);
+        mockResourceResolver.addChildren(parent, childRes);
+    }
+
+    @Test public void testAcceptsSecureRequest() {
+        MockSlingHttpServletRequest secureRequest = new MockSlingHttpServletRequest(
+            SERVLET_PATH, null, SERVLET_EXTENSION, null, null);
+        secureRequest.setResourceResolver(mockResourceResolver);
+        secureRequest.setSecure(true);
+        Servlet result = servletResolver.resolveServlet(secureRequest);
+        assertEquals("Expecting our test servlet", testServlet, result);
+    }
+
+    @Test public void testIgnoreInsecureRequest() {
+        MockSlingHttpServletRequest insecureRequest = new MockSlingHttpServletRequest(
+            SERVLET_PATH, null, SERVLET_EXTENSION, null, null);
+        insecureRequest.setResourceResolver(mockResourceResolver);
+        insecureRequest.setSecure(false);
+        Servlet result = servletResolver.resolveServlet(insecureRequest);
+        assertTrue("Expecting a different servlet than our own",
+            result.getClass() != SecureRequestsOptingServlet.class);
+    }
+
+    @SuppressWarnings("serial")
+    private static class SecureRequestsOptingServlet extends HttpServlet
+            implements OptingServlet {
+
+        @Override
+        public boolean accepts(SlingHttpServletRequest request) {
+            return request.isSecure();
+        }
+    }
+}
diff --git a/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java b/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTestBase.java
similarity index 55%
rename from src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java
rename to src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTestBase.java
index 074a73a..8e150fe 100644
--- a/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTest.java
+++ b/src/test/java/org/apache/sling/servlets/resolver/internal/SlingServletResolverTestBase.java
@@ -18,52 +18,26 @@
  */
 package org.apache.sling.servlets.resolver.internal;
 
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-
 import java.lang.reflect.Field;
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import javax.servlet.Servlet;
-import javax.servlet.http.HttpServlet;
-
-import org.apache.sling.api.SlingHttpServletRequest;
 import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.api.servlets.OptingServlet;
-import org.apache.sling.api.servlets.ServletResolverConstants;
-import org.apache.sling.commons.testing.osgi.MockServiceReference;
-import org.apache.sling.commons.testing.sling.MockResource;
 import org.apache.sling.commons.testing.sling.MockResourceResolver;
-import org.apache.sling.commons.testing.sling.MockSlingHttpServletRequest;
 import org.apache.sling.servlets.resolver.internal.resolution.ResolutionCache;
-import org.apache.sling.servlets.resolver.internal.resource.MockServletResource;
 import org.junit.Before;
-import org.junit.Test;
 import org.mockito.Mockito;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-
-public class SlingServletResolverTest {
-
-    private Servlet servlet;
 
-    private SlingServletResolver servletResolver;
+public abstract class SlingServletResolverTestBase {
 
-    public static final String SERVLET_PATH = "/mock";
+    protected SlingServletResolver servletResolver;
 
-    public static final String SERVLET_NAME = "TestServlet";
-
-    private static final String SERVLET_EXTENSION = "html";
-
-    private MockResourceResolver mockResourceResolver;
+    protected MockResourceResolver mockResourceResolver;
 
     @Before public void setUp() throws Exception {
         final ResolverConfig config = Mockito.mock(ResolverConfig.class);
@@ -130,7 +104,6 @@ public class SlingServletResolverTest {
             }
         };
 
-        servlet = new MockSlingRequestHandlerServlet();
         servletResolver = new SlingServletResolver();
 
         Class<?> resolverClass = servletResolver.getClass();
@@ -151,72 +124,15 @@ public class SlingServletResolverTest {
         final BundleContext bundleContext = Mockito.mock(BundleContext.class);
         Mockito.when(bundle.getBundleContext()).thenReturn(bundleContext);
 
-        MockServiceReference serviceReference = new MockServiceReference(bundle);
-        serviceReference.setProperty(Constants.SERVICE_ID, 1L);
-        serviceReference.setProperty(ServletResolverConstants.SLING_SERVLET_NAME,
-            SERVLET_NAME);
-        serviceReference.setProperty(
-                ServletResolverConstants.SLING_SERVLET_PATHS, SERVLET_PATH);
-        serviceReference.setProperty(
-            ServletResolverConstants.SLING_SERVLET_EXTENSIONS,
-            SERVLET_EXTENSION);
-
+        defineTestServlets(bundle);
         servletResolver.activate(config);
 
-        String path = "/"
-            + MockSlingHttpServletRequest.RESOURCE_TYPE
-            + "/"
-            + ResourceUtil.getName(MockSlingHttpServletRequest.RESOURCE_TYPE)
-            + ".servlet";
-        MockServletResource res = new MockServletResource(mockResourceResolver,
-            servlet, path);
-        mockResourceResolver.addResource(res);
-
-        MockResource parent = new MockResource(mockResourceResolver,
-            ResourceUtil.getParent(res.getPath()), "nt:folder");
-        mockResourceResolver.addResource(parent);
-
-        List<Resource> childRes = new ArrayList<>();
-        childRes.add(res);
-        mockResourceResolver.addChildren(parent, childRes);
     }
 
+    protected abstract void defineTestServlets(Bundle bundle);
+
     protected String getRequestWorkspaceName() {
         return "fromRequest";
     }
 
-    @Test public void testAcceptsRequest() {
-        MockSlingHttpServletRequest secureRequest = new MockSlingHttpServletRequest(
-            SERVLET_PATH, null, SERVLET_EXTENSION, null, null);
-        secureRequest.setResourceResolver(mockResourceResolver);
-        secureRequest.setSecure(true);
-        Servlet result = servletResolver.resolveServlet(secureRequest);
-        assertEquals("Did not resolve to correct servlet", servlet, result);
-    }
-
-    @Test public void testIgnoreRequest() {
-        MockSlingHttpServletRequest insecureRequest = new MockSlingHttpServletRequest(
-            SERVLET_PATH, null, SERVLET_EXTENSION, null, null);
-        insecureRequest.setResourceResolver(mockResourceResolver);
-        insecureRequest.setSecure(false);
-        Servlet result = servletResolver.resolveServlet(insecureRequest);
-        assertTrue("Did not ignore unwanted request",
-            result.getClass() != MockSlingRequestHandlerServlet.class);
-    }
-
-    /**
-     * This sample servlet will only handle secure requests.
-     *
-     * @see org.apache.sling.api.servlets.OptingServlet#accepts
-     */
-    @SuppressWarnings("serial")
-    private static class MockSlingRequestHandlerServlet extends HttpServlet
-            implements OptingServlet {
-
-        @Override
-        public boolean accepts(SlingHttpServletRequest request) {
-            return request.isSecure();
-        }
-    }
-
 }