You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by pa...@apache.org on 2022/01/26 16:18:43 UTC

[sling-org-apache-sling-scripting-bundle-tracker-it] 01/01: SLING-11093: add a test that checks that we only register the absolute resource type if the relative resource type is the same

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 <ka...@gmail.com>
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());
+        }
+    }
 }