SLING-3505 - Improve handling of updates to mapping (alias, vanity path)
* increased code coverage
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1594778 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java b/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
index 51ae1e1..5c48748 100644
--- a/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
+++ b/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java
@@ -1198,6 +1198,59 @@
}
}
+ @Test public void testResolveRemovedResourceAlias() throws Exception {
+ // define an alias for the rootPath
+ String alias = "testAlias";
+ rootNode.setProperty("sling:alias", alias);
+
+ saveMappings(session);
+ String path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)
+ + "/" + alias + ".print.html");
+
+ HttpServletRequest request = new FakeSlingHttpServletRequest(path);
+ Resource res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ assertEquals(rootPath, res.getPath());
+ assertEquals(rootNode.getPrimaryNodeType().getName(),
+ res.getResourceType());
+
+ assertEquals(".print.html",
+ res.getResourceMetadata().getResolutionPathInfo());
+
+ assertNotNull(res.adaptTo(Node.class));
+ assertTrue(rootNode.isSame(res.adaptTo(Node.class)));
+
+ path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath) + "/"
+ + alias + ".print.html/suffix.pdf");
+
+ request = new FakeSlingHttpServletRequest(path);
+ res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ assertEquals(rootPath, res.getPath());
+ assertEquals(rootNode.getPrimaryNodeType().getName(),
+ res.getResourceType());
+
+ assertEquals(".print.html/suffix.pdf",
+ res.getResourceMetadata().getResolutionPathInfo());
+
+ assertNotNull(res.adaptTo(Node.class));
+ assertTrue(rootNode.isSame(res.adaptTo(Node.class)));
+
+ //remove alias property
+ rootNode.getProperty("sling:alias").remove();
+ saveMappings(session);
+
+ path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)
+ + "/" + alias + ".print.html");
+
+ request = new FakeSlingHttpServletRequest(path);
+ res = resResolver.resolve(request, path);
+
+ assertNotNull(res);
+ assertTrue(res instanceof NonExistingResource);
+ assertEquals("/"+alias+".print.html", res.getPath());
+ }
+
@Test public void testResolveResourceAliasJcrContent() throws Exception {
// define an alias for the rootPath in the jcr:content child node
String alias = "testAlias";
@@ -1346,6 +1399,72 @@
}
+ @Test public void testResolveRemovedesourceAliasJcrContent() throws Exception {
+ // define an alias for the rootPath in the jcr:content child node
+ String alias = "testAlias";
+ Node content = rootNode.addNode("jcr:content", "nt:unstructured");
+ content.setProperty("sling:alias", alias);
+
+ try {
+ saveMappings(session);
+ String path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)
+ + "/" + alias + ".print.html");
+
+ HttpServletRequest request = new FakeSlingHttpServletRequest(path);
+ Resource res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ assertEquals(rootPath, res.getPath());
+ assertEquals(rootNode.getPrimaryNodeType().getName(),
+ res.getResourceType());
+
+ assertEquals(".print.html",
+ res.getResourceMetadata().getResolutionPathInfo());
+
+ assertNotNull(res.adaptTo(Node.class));
+ assertTrue(rootNode.isSame(res.adaptTo(Node.class)));
+
+ path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath) + "/"
+ + alias + ".print.html/suffix.pdf");
+
+ request = new FakeSlingHttpServletRequest(path);
+ res = resResolver.resolve(request, path);
+ assertNotNull(res);
+ assertEquals(rootPath, res.getPath());
+ assertEquals(rootNode.getPrimaryNodeType().getName(),
+ res.getResourceType());
+
+ assertEquals(".print.html/suffix.pdf",
+ res.getResourceMetadata().getResolutionPathInfo());
+
+ assertNotNull(res.adaptTo(Node.class));
+ assertTrue(rootNode.isSame(res.adaptTo(Node.class)));
+
+ path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)
+ + "/" + alias + "/" + alias + ".print.html");
+ res = resResolver.resolve(request, path);
+ assertEquals("GET request resolution does not go up the path",
+ Resource.RESOURCE_TYPE_NON_EXISTING, res.getResourceType());
+
+ //remove alias property
+ content.getProperty("sling:alias").remove();
+ saveMappings(session);
+
+ path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)
+ + "/" + alias + ".print.html");
+ request = new FakeSlingHttpServletRequest(path);
+ res = resResolver.resolve(request, path);
+
+ assertNotNull(res);
+ assertTrue(res instanceof NonExistingResource);
+ assertEquals("/"+alias+".print.html", res.getPath());
+
+ } finally {
+ content.remove();
+ session.save();
+ }
+
+ }
+
@Test public void testResolveVanityPath() throws Exception {
String path = ResourceUtil.normalize(ResourceUtil.getParent(rootPath)