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

pauls pushed a commit to branch issues/SLING-11093
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-bundle-tracker-it.git

commit 5e105fe2bdfe2ff18cc4f336e39b4cdf05c18dc7
Author: Karl Pauls <[email protected]>
AuthorDate: Wed Jan 26 17:18:31 2022 +0100

    SLING-11093: add a test that checks that we only register the absolute 
resource type if the relative resource type is the same
---
 .../src/main/scripts/libs/rtsuper/extends          |  1 +
 .../src/main/scripts/apps/rtsuper/rtsuper.html     | 19 +++++++++++++++++
 it/pom.xml                                         |  2 +-
 .../it/ExampleBundlePrecompiledTeleportedIT.java   | 24 ++++++++++++++++++++++
 4 files changed, 45 insertions(+), 1 deletion(-)

diff --git 
a/examples/org-apache-sling-scripting-examplebundle-precompiled-extend1/src/main/scripts/libs/rtsuper/extends
 
b/examples/org-apache-sling-scripting-examplebundle-precompiled-extend1/src/main/scripts/libs/rtsuper/extends
new file mode 100644
index 0000000..f9263f5
--- /dev/null
+++ 
b/examples/org-apache-sling-scripting-examplebundle-precompiled-extend1/src/main/scripts/libs/rtsuper/extends
@@ -0,0 +1 @@
+/apps/rtsuper
\ No newline at end of file
diff --git 
a/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/rtsuper/rtsuper.html
 
b/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/rtsuper/rtsuper.html
new file mode 100644
index 0000000..bee4276
--- /dev/null
+++ 
b/examples/org-apache-sling-scripting-examplebundle-precompiled/src/main/scripts/apps/rtsuper/rtsuper.html
@@ -0,0 +1,19 @@
+<!--/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/-->
+/libs/rtsuper
\ No newline at end of file
diff --git a/it/pom.xml b/it/pom.xml
index ac198b2..438a2b6 100644
--- a/it/pom.xml
+++ b/it/pom.xml
@@ -188,7 +188,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.servlets.resolver</artifactId>
-            <version>2.9.1-SNAPSHOT</version>
+            <version>2.9.3-SNAPSHOT</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git 
a/it/src/test/java/org/apache/sling/scripting/bundle/tracker/it/ExampleBundlePrecompiledTeleportedIT.java
 
b/it/src/test/java/org/apache/sling/scripting/bundle/tracker/it/ExampleBundlePrecompiledTeleportedIT.java
index 0f18051..8a3d618 100644
--- 
a/it/src/test/java/org/apache/sling/scripting/bundle/tracker/it/ExampleBundlePrecompiledTeleportedIT.java
+++ 
b/it/src/test/java/org/apache/sling/scripting/bundle/tracker/it/ExampleBundlePrecompiledTeleportedIT.java
@@ -28,6 +28,7 @@ import org.apache.sling.api.resource.ResourceResolver;
 import org.apache.sling.api.resource.ResourceResolverFactory;
 import org.junit.Test;
 
+import static junit.framework.TestCase.assertNull;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -89,4 +90,27 @@ public class ExampleBundlePrecompiledTeleportedIT extends 
AbstractTeleportedTest
             }
         }
     }
+
+    /*
+     * We need to test that if we register with an absolute resource type and 
a relative one we are not ending up with
+     * a registration in the wrong prefix. As an example, when we register a 
resource type called rtsuper we end up with a capability
+     * for [rtsuper,/apps/rtsuper]. That will make it so that the resolver 
prepends the search path prefix (which is configurable).
+     * For a default configuration, this could end up being /apps/rtsuper or 
/libs/rtsuper, based on the prefix value, which is a mistake
+     * because, in that case, the resource super type would be on both and 
could cause a cycle.
+     *
+     * To recreate this scenario without changing the resolver config for the 
prefix selection this test has the script in
+     * /apps and the extends in /libs with a value for /apps/rtsuper - hence, 
we expect that we are not finding a super type
+     * on the script in /apps because otherwise it would have picked the wrong 
prefix (which we avoid by not registering
+     * relative resource types when there is an absolute one for the same 
resource type).
+     */
+    @Test
+    public void testRtSuper() throws LoginException {
+        final String expectedRT = "rtsuper";
+        ResourceResolverFactory resourceResolverFactory = 
teleporter.getService(ResourceResolverFactory.class);
+        try (ResourceResolver resolver = 
resourceResolverFactory.getResourceResolver(AUTH_MAP)) {
+            Resource main = resolver.resolve("/apps/" + expectedRT);
+            assertNotNull(main);
+            assertNull(main.getResourceSuperType());
+        }
+    }
 }

Reply via email to