You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2022/02/25 11:01:08 UTC

[sling-org-apache-sling-resourceresolver] branch master updated: SLING-11138: run MockedResourceResolverImplTest with MapEntries populated (#61)

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

diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git


The following commit(s) were added to refs/heads/master by this push:
     new 722285f  SLING-11138: run MockedResourceResolverImplTest with MapEntries populated (#61)
722285f is described below

commit 722285f3fc786356b64e7bf7a14a4e7a0676bd4a
Author: Dirk Rudolph <di...@gmail.com>
AuthorDate: Fri Feb 25 12:01:01 2022 +0100

    SLING-11138: run MockedResourceResolverImplTest with MapEntries populated (#61)
---
 .../resourceresolver/impl/mapping/MapEntry.java    | 14 +++++-----
 .../impl/mapping/ResourceMapperImpl.java           |  8 +++---
 .../impl/MockedResourceResolverImplTest.java       | 31 +++++++++++++++++-----
 3 files changed, 35 insertions(+), 18 deletions(-)

diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
index 67553d8..d21bb9a 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
@@ -279,7 +279,7 @@ public class MapEntry implements Comparable<MapEntry> {
         final Matcher m = urlPattern.matcher(value);
         if (m.find()) {
             final String[] redirects = getRedirect();
-            final String[] results = new String[redirects.length];
+            final List<String> results = new ArrayList<>(redirects.length);
             for (int i = 0; i < redirects.length; i++) {
             	try {
             		String redirect = redirects[i];
@@ -298,14 +298,12 @@ public class MapEntry implements Comparable<MapEntry> {
             				}
             			}
             		}
-            		results[i] = m.replaceFirst(redirect);
-            	} catch (final StringIndexOutOfBoundsException siob){
-            		log.debug("Exception while replacing, ignoring entry {} ", redirects[i], siob);
-                } catch (final IllegalArgumentException iae){
-                    log.debug("Exception while replacing, ignoring entry {} ", redirects[i], iae);
-             	}
+            		results.add(m.replaceFirst(redirect));
+            	} catch (final StringIndexOutOfBoundsException | IllegalArgumentException ex){
+            		log.debug("Exception while replacing, ignoring entry {} ", redirects[i], ex);
+                }
             }
-            return results;
+            return !results.isEmpty() ? results.toArray(new String[0]) : null;
         }
 
         return null;
diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
index 59e879f..d3de98b 100644
--- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
+++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java
@@ -174,9 +174,11 @@ public class ResourceMapperImpl implements ResourceMapper {
             mappings.replaceAll(path -> path.concat(fragmentQuery));
         }
 
-        mappings.forEach( path ->
-            logger.debug("map: Returning URL {} as mapping for path {}", path, resourcePath)    
-        );
+        if (logger.isDebugEnabled()) {
+            mappings.forEach(path ->
+                logger.debug("map: Returning URL {} as mapping for path {}", path, resourcePath)
+            );
+        }
         
         Collections.reverse(mappings);
         
diff --git a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
index d0c7b84..1205b91 100644
--- a/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
+++ b/src/test/java/org/apache/sling/resourceresolver/impl/MockedResourceResolverImplTest.java
@@ -17,11 +17,17 @@
  */
 package org.apache.sling.resourceresolver.impl;
 
+import static org.apache.sling.resourceresolver.util.MockTestUtil.getInaccessibleField;
 import static org.apache.sling.resourceresolver.util.MockTestUtil.getResourceName;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.lang.annotation.Annotation;
 import java.util.ArrayList;
@@ -46,6 +52,7 @@ import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.apache.sling.api.resource.ValueMap;
 import org.apache.sling.api.wrappers.ValueMapDecorator;
 import org.apache.sling.resourceresolver.impl.mapping.MapEntries;
+import org.apache.sling.resourceresolver.impl.mapping.StringInterpolationProvider;
 import org.apache.sling.resourceresolver.impl.observation.ResourceChangeListenerWhiteboard;
 import org.apache.sling.resourceresolver.impl.providers.ResourceProviderHandler;
 import org.apache.sling.resourceresolver.impl.providers.ResourceProviderInfo;
@@ -146,13 +153,12 @@ public class MockedResourceResolverImplTest {
         activator = new ResourceResolverFactoryActivator();
 
         // system bundle access
-        final Bundle systemBundle = Mockito.mock(Bundle.class);
+        final Bundle systemBundle = mock(Bundle.class);
         Mockito.when(systemBundle.getState()).thenReturn(Bundle.ACTIVE);
         Mockito.when(bundleContext.getBundle(Constants.SYSTEM_BUNDLE_LOCATION)).thenReturn(systemBundle);
         activator.resourceAccessSecurityTracker = new ResourceAccessSecurityTracker();
         activator.resourceProviderTracker = resourceProviderTracker;
         activator.changeListenerWhiteboard = resourceChangeListenerWhiteboard;
-        activator.serviceUserMapper = Mockito.mock(ServiceUserMapper.class);
         handlers.add(createRPHandler(resourceProvider, "org.apache.sling.resourceresolver.impl.DummyTestProvider", 10L, "/"));
 
         // setup mapping resources at /etc/map to exercise vanity etc.
@@ -167,9 +173,14 @@ public class MockedResourceResolverImplTest {
         Mockito.when(queriableResourceProviderA.getQueryLanguageProvider()).thenReturn(queryProvider);
 
         ResourceProviderStorage storage = new ResourceProviderStorage(handlers);
-
         Mockito.when(resourceProviderTracker.getResourceProviderStorage()).thenReturn(storage);
 
+        activator.serviceUserMapper = mock(ServiceUserMapper.class);
+        when(activator.serviceUserMapper.getServicePrincipalNames(any(), any())).thenReturn(Collections.singletonList("user"));
+
+        activator.stringInterpolationProvider = mock(StringInterpolationProvider.class);
+        when(activator.stringInterpolationProvider.substitute(anyString())).thenAnswer(inv -> (String) inv.getArguments()[0]);
+
         // activate the components.
         activator.activate(bundleContext, new ResourceResolverFactoryConfig() {
             @Override
@@ -325,12 +336,17 @@ public class MockedResourceResolverImplTest {
         for (String path : activator.getAllowedAliasLocations()) {
             assertFalse("Path must not end with '/': " + path, StringUtils.endsWith(path, "/"));
         }
+
+        // ensure mappings are set
+        assertNotEquals("Mappings unavailable",
+            MapEntries.EMPTY,
+            getInaccessibleField("commonFactory",rrf,CommonResourceResolverFactoryImpl.class).getMapEntries());
     }
 
     public static ResourceProviderHandler createRPHandler(ResourceProvider<?> rp, String pid, long ranking,
             String path) {
-        ServiceReference ref = Mockito.mock(ServiceReference.class);
-        BundleContext bc = Mockito.mock(BundleContext.class);
+        ServiceReference ref = mock(ServiceReference.class);
+        BundleContext bc = mock(BundleContext.class);
         Mockito.when(bc.getService(Mockito.eq(ref))).thenReturn(rp);
         Mockito.when(ref.getProperty(Mockito.eq(Constants.SERVICE_ID))).thenReturn(new Random().nextLong());
         Mockito.when(ref.getProperty(Mockito.eq(Constants.SERVICE_PID))).thenReturn(pid);
@@ -412,7 +428,7 @@ public class MockedResourceResolverImplTest {
      */
     @SuppressWarnings("unchecked")
     private Resource buildResource(String fullpath, Iterable<Resource> children, ResourceResolver resourceResolver, ResourceProvider<?> provider, String ... properties) {
-        Resource resource = Mockito.mock(Resource.class);
+        Resource resource = mock(Resource.class);
         Mockito.when(resource.getName()).thenReturn(getResourceName(fullpath));
         Mockito.when(resource.getPath()).thenReturn(fullpath);
         ResourceMetadata resourceMetadata = new ResourceMetadata();
@@ -537,10 +553,11 @@ public class MockedResourceResolverImplTest {
     public void testMapping() throws LoginException {
         ResourceResolver resourceResolver = resourceResolverFactory.getResourceResolver(null);
         buildResource("/single/test", EMPTY_RESOURCE_LIST, resourceResolver, resourceProvider);
-        HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
+        HttpServletRequest request = mock(HttpServletRequest.class);
         Mockito.when(request.getScheme()).thenReturn("http");
         Mockito.when(request.getServerPort()).thenReturn(80);
         Mockito.when(request.getServerName()).thenReturn("localhost");
+
         String path = resourceResolver.map(request,"/single/test?q=123123");
         Assert.assertEquals("/single/test?q=123123", path);
         buildResource("/single/test", EMPTY_RESOURCE_LIST, resourceResolver, resourceProvider);