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]>.
