Author: asanso Date: Thu May 15 06:06:05 2014 New Revision: 1594778 URL: http://svn.apache.org/r1594778 Log: SLING-3505 - Improve handling of updates to mapping (alias, vanity path)
* increased code coverage Modified: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java Modified: sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java URL: http://svn.apache.org/viewvc/sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java?rev=1594778&r1=1594777&r2=1594778&view=diff ============================================================================== --- sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java (original) +++ sling/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/serversidetests/ResourceResolverTest.java Thu May 15 06:06:05 2014 @@ -1198,6 +1198,59 @@ public class ResourceResolverTest { } } + @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 @@ public class ResourceResolverTest { } + @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)