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