This is an automated email from the ASF dual-hosted git repository.
andysch 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 9271b58 Added an Etc Mapping Test to showcase the endless circular
mapping
9271b58 is described below
commit 9271b58ea6394133c04733be22b5a3728b824d1f
Author: Andreas Schaefer <[email protected]>
AuthorDate: Mon Aug 6 08:39:24 2018 -0700
Added an Etc Mapping Test to showcase the endless circular mapping
---
.../impl/EtcMappingResourceResolverTest.java | 34 ++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git
a/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
b/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
index 256dfe9..b8f73e1 100644
---
a/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
+++
b/src/test/java/org/apache/sling/resourceresolver/impl/EtcMappingResourceResolverTest.java
@@ -272,4 +272,38 @@ public class EtcMappingResourceResolverTest {
resolvedResource = resourceResolver.resolve(request, "/stories/");
checkInternalResource(resolvedResource, "/anecdotes/stories");
}
+
+ /**
+ * ATTENTION: this tests showcases an erroneous condition of an endless
circular mapping in the /etc/map. When
+ * this test passes this condition is present. After a fix this test must
be adjusted.
+ *
+ * This confirms an issue with the Etc Mapping where a mapping from a node
to a child node (here / to /content)
+ * ends up in a endless circular mapping.
+ * The only way to recover from this is to go to the OSGi console and
change the /etc/map path in the Resource
+ * Resolver factory.
+ * Either the Etc Mapping discovers this condition and stops it or at
least ignores mapping for Composum to allow
+ * the /etc/map to be edited.
+ */
+ @Test
+ public void endless_circular_mapping() throws Exception {
+ buildResource(http.getPath() + "/localhost.8080", http,
resourceResolver, resourceProvider, PROP_REDIRECT_EXTERNAL, "/content");
+ refreshMapEntries("/etc/map", true);
+
+ ExpectedEtcMapping expectedEtcMapping = new
ExpectedEtcMapping("^http/localhost.8080/", "/content/");
+ expectedEtcMapping.assertEtcMap("Etc Mapping for root node to
content", commonFactory.getMapEntries().getResolveMaps());
+
+ buildResource("/content/test", null, resourceResolver,
resourceProvider);
+ buildResource("/content/content/test", null, resourceResolver,
resourceProvider);
+ buildResource("/content/content/content/test", null, resourceResolver,
resourceProvider);
+
+ HttpServletRequest request =
createRequestFromUrl("http://localhost:8080/");
+ Resource resolvedResource = resourceResolver.resolve(request,
"/test.html");
+ checkRedirectResource(resolvedResource, "/content/test.html", 302);
+
+ resolvedResource = resourceResolver.resolve(request,
"/content/test.html");
+ checkRedirectResource(resolvedResource, "/content/content/test.html",
302);
+
+ resolvedResource = resourceResolver.resolve(request,
"/content/content/test.html");
+ checkRedirectResource(resolvedResource,
"/content/content/content/test.html", 302);
+ }
}