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

rombert pushed a commit to branch master
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceaccesssecurity-it.git

commit ac2f202c63cca6b2e6e1fc0f91f5e8b65d623251
Author: Mike Müller <[email protected]>
AuthorDate: Sun Sep 14 10:02:54 2014 +0000

    SLING-3930 - Service rankings from ResourceAccessGates are not properly 
handled
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1624823 
13f79535-47bb-0310-9956-ffa450edef68
---
 .../it/impl/gates/ApplicationGate1Ranking100.java  | 28 +++++++++++++++++
 .../it/impl/gates/ApplicationGate1Ranking1000.java | 28 +++++++++++++++++
 .../it/impl/gates/FinalAppGate1Ranking100.java     | 28 +++++++++++++++++
 .../it/impl/gates/FinalAppGate1Ranking1000.java    | 28 +++++++++++++++++
 ...nsecuredProviderResourceAccessSecurityTest.java | 35 ++++++++++++++++++++++
 5 files changed, 147 insertions(+)

diff --git 
a/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking100.java
 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking100.java
new file mode 100644
index 0000000..f3648a1
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking100.java
@@ -0,0 +1,28 @@
+package org.apache.sling.resourceaccesssecurity.it.impl.gates;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.resourceaccesssecurity.ResourceAccessGate;
+import org.osgi.framework.Constants;
+
+@Component
+@Service(value=ResourceAccessGate.class)
+@Properties({
+        @Property(name=ResourceAccessGate.PATH, label="Path", 
value="/test/(un|)secured-provider/read(-update|)/(app|mixed)/.*", 
+                description="The path is a regular expression for which 
resources the service should be called"),
+        @Property(name=ResourceAccessGate.OPERATIONS, value="read,update"),
+        @Property(name=ResourceAccessGate.CONTEXT, 
value=ResourceAccessGate.APPLICATION_CONTEXT),
+        @Property(name = Constants.SERVICE_RANKING, intValue = 100, 
propertyPrivate = false)
+})
+public class ApplicationGate1Ranking100 extends AResourceAccessGate {
+    
+    public static String GATE_ID = "appgate1ranking100";
+
+    @Override
+    protected String getGateId() {
+        return GATE_ID;
+    }
+
+}
diff --git 
a/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking1000.java
 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking1000.java
new file mode 100644
index 0000000..0989f95
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/ApplicationGate1Ranking1000.java
@@ -0,0 +1,28 @@
+package org.apache.sling.resourceaccesssecurity.it.impl.gates;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.resourceaccesssecurity.ResourceAccessGate;
+import org.osgi.framework.Constants;
+
+@Component
+@Service(value=ResourceAccessGate.class)
+@Properties({
+        @Property(name=ResourceAccessGate.PATH, label="Path", 
value="/test/(un|)secured-provider/read(-update|)/(app|mixed)/.*", 
+                description="The path is a regular expression for which 
resources the service should be called"),
+        @Property(name=ResourceAccessGate.OPERATIONS, value="read,update"),
+        @Property(name=ResourceAccessGate.CONTEXT, 
value=ResourceAccessGate.APPLICATION_CONTEXT),
+        @Property(name = Constants.SERVICE_RANKING, intValue = 1000, 
propertyPrivate = false)
+})
+public class ApplicationGate1Ranking1000 extends AResourceAccessGate {
+    
+    public static String GATE_ID = "appgate1ranking1000";
+
+    @Override
+    protected String getGateId() {
+        return GATE_ID;
+    }
+
+}
diff --git 
a/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking100.java
 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking100.java
new file mode 100644
index 0000000..ae7f5d2
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking100.java
@@ -0,0 +1,28 @@
+package org.apache.sling.resourceaccesssecurity.it.impl.gates;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.resourceaccesssecurity.ResourceAccessGate;
+import org.osgi.framework.Constants;
+
+@Component
+@Service(value=ResourceAccessGate.class)
+@Properties({
+        @Property(name=ResourceAccessGate.PATH, label="Path", 
value="/test/(un|)secured-provider/read(-update|)/(app|mixed)/.*", 
+                description="The path is a regular expression for which 
resources the service should be called"),
+        @Property(name=ResourceAccessGate.FINALOPERATIONS, 
value="read,update"),
+        @Property(name=ResourceAccessGate.CONTEXT, 
value=ResourceAccessGate.APPLICATION_CONTEXT),
+        @Property(name = Constants.SERVICE_RANKING, intValue = 100, 
propertyPrivate = false)
+})
+public class FinalAppGate1Ranking100 extends AResourceAccessGate {
+
+    public static String GATE_ID = "finalappgate1ranking100";
+
+    @Override
+    protected String getGateId() {
+        return GATE_ID;
+    }
+
+}
diff --git 
a/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking1000.java
 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking1000.java
new file mode 100644
index 0000000..670cec9
--- /dev/null
+++ 
b/src/main/java/org/apache/sling/resourceaccesssecurity/it/impl/gates/FinalAppGate1Ranking1000.java
@@ -0,0 +1,28 @@
+package org.apache.sling.resourceaccesssecurity.it.impl.gates;
+
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Properties;
+import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.resourceaccesssecurity.ResourceAccessGate;
+import org.osgi.framework.Constants;
+
+@Component
+@Service(value=ResourceAccessGate.class)
+@Properties({
+        @Property(name=ResourceAccessGate.PATH, label="Path", 
value="/test/(un|)secured-provider/read(-update|)/(app|mixed)/.*", 
+                description="The path is a regular expression for which 
resources the service should be called"),
+        @Property(name=ResourceAccessGate.FINALOPERATIONS, 
value="read,update"),
+        @Property(name=ResourceAccessGate.CONTEXT, 
value=ResourceAccessGate.APPLICATION_CONTEXT),
+        @Property(name = Constants.SERVICE_RANKING, intValue = 1000, 
propertyPrivate = false)
+})
+public class FinalAppGate1Ranking1000 extends AResourceAccessGate {
+
+    public static String GATE_ID = "finalappgate1ranking1000";
+
+    @Override
+    protected String getGateId() {
+        return GATE_ID;
+    }
+
+}
diff --git 
a/src/test/java/org/apache/sling/resourceaccesssecurity/it/UnsecuredProviderResourceAccessSecurityTest.java
 
b/src/test/java/org/apache/sling/resourceaccesssecurity/it/UnsecuredProviderResourceAccessSecurityTest.java
index b2351da..6b5333a 100644
--- 
a/src/test/java/org/apache/sling/resourceaccesssecurity/it/UnsecuredProviderResourceAccessSecurityTest.java
+++ 
b/src/test/java/org/apache/sling/resourceaccesssecurity/it/UnsecuredProviderResourceAccessSecurityTest.java
@@ -44,4 +44,39 @@ public class UnsecuredProviderResourceAccessSecurityTest 
extends ResourceAccessS
 
         testRead(getTestUsername(), getTestPassword(), path, 404);
     }
+    
+    @Test
+    public void testReadOnlyApplicationAccessGatePresent() throws Exception {
+        String path = 
"/test/unsecured-provider/read/app/appgate1-allowread/test.json";
+
+        testRead(getTestUsername(), getTestPassword(), path, 200);
+    }
+    
+    @Test
+    public void testCantReadOnlyApplicationAccessGatePresent() throws 
Exception {
+        String path = 
"/test/unsecured-provider/read/app/appgate1-denyread/test.json";
+
+        testRead(getTestUsername(), getTestPassword(), path, 404);
+    }
+    
+    @Test
+    public void testServiceRanking() throws Exception {
+        String path1 = 
"/test/unsecured-provider/read/app/appgate1-allowread_finalappgate1ranking1000-denyread/test.json";
+        String path2 = 
"/test/unsecured-provider/read/app/appgate1-allowread_finalappgate1ranking100-denyread/test.json";
+        String path3 = 
"/test/unsecured-provider/read/app/finalappgate1-allowread_finalappgate1ranking1000-denyread/test.json";
+        String path4 = 
"/test/unsecured-provider/read/app/appgate1ranking1000-allowread_finalappgate1ranking100-denyread/test.json";
+        String path5 = 
"/test/unsecured-provider/read/app/appgate1ranking100-allowread_finalappgate1-denyread/test.json";
+        String path6 = 
"/test/unsecured-provider/read/app/appgate1-allowread_appgate1ranking1000-denyread/test.json";
+        String path7 = 
"/test/unsecured-provider/read/app/appgate1ranking100-allowread_appgate1ranking1000-denyread/test.json";
+
+        testRead(getTestUsername(), getTestPassword(), path1, 404);
+        testRead(getTestUsername(), getTestPassword(), path2, 404);
+        testRead(getTestUsername(), getTestPassword(), path3, 404);
+        testRead(getTestUsername(), getTestPassword(), path4, 200);
+        testRead(getTestUsername(), getTestPassword(), path5, 200);
+        testRead(getTestUsername(), getTestPassword(), path6, 200);
+        testRead(getTestUsername(), getTestPassword(), path7, 200);
+    }
+    
+    
 }

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to