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