Adding PDP unit test
diff --git a/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java b/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java
new file mode 100644
index 0000000..02194b6
--- /dev/null
+++ b/openaz-xacml-test/src/test/java/org/apache/openaz/xacml/pdp/std/json/RequestEvaluationTest.java
@@ -0,0 +1,146 @@
+/*
+ * 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.
+ *
+ */
+
+package org.apache.openaz.xacml.pdp.std.json;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Properties;
+
+import org.apache.openaz.xacml.api.Decision;
+import org.apache.openaz.xacml.api.Request;
+import org.apache.openaz.xacml.api.Response;
+import org.apache.openaz.xacml.api.pdp.PDPEngine;
+import org.apache.openaz.xacml.api.pdp.PDPEngineFactory;
+import org.apache.openaz.xacml.std.IdentifierImpl;
+import org.apache.openaz.xacml.std.StdAttributeValue;
+import org.apache.openaz.xacml.std.StdMutableAttribute;
+import org.apache.openaz.xacml.std.StdMutableRequest;
+import org.apache.openaz.xacml.std.StdMutableRequestAttributes;
+
+
+/**
+ * Create a XACML Request and evaluate it against a PDP
+ */
+public class RequestEvaluationTest {
+
+ @org.junit.Test
+ public void testEvaluateRequestinPDP() throws Exception {
+ Properties properties = new Properties();
+ properties.put("xacml.rootPolicies", "manager");
+ properties.put("xacml.referencedPolicies", "doubleit");
+ properties.put("manager.file",
+ "src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml");
+ properties.put("doubleit.file",
+ "src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml");
+
+ PDPEngineFactory engineFactory = PDPEngineFactory.newInstance();
+ PDPEngine pdpEngine = engineFactory.newEngine(properties);
+
+ // Successful request
+ Request request = createRequest("manager");
+
+ Response response = pdpEngine.decide(request);
+ assertFalse(response.getResults().isEmpty());
+ assertTrue(response.getResults().iterator().next().getDecision() == Decision.PERMIT);
+
+ // Unsuccessful request
+ request = createRequest("employee");
+
+ response = pdpEngine.decide(request);
+ assertFalse(response.getResults().isEmpty());
+ assertTrue(response.getResults().iterator().next().getDecision() != Decision.PERMIT);
+ }
+
+ private Request createRequest(String roleName) {
+ StdMutableRequest request = new StdMutableRequest();
+
+ // Add Subject
+ StdMutableRequestAttributes subjectRequestAttributes = new StdMutableRequestAttributes();
+ subjectRequestAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+
+ // Subject Id
+ StdMutableAttribute subjectIdAttribute = new StdMutableAttribute();
+ subjectIdAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+ subjectIdAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject:subject-id"));
+ StdAttributeValue<String> subjectIdAttributeValue =
+ new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"), "alice");
+ subjectIdAttribute.addValue(subjectIdAttributeValue);
+
+ // Subject role
+ StdMutableAttribute subjectRoleAttribute = new StdMutableAttribute();
+ subjectRoleAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"));
+ subjectRoleAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:2.0:subject:role"));
+ StdAttributeValue<String> subjectRoleAttributeValue =
+ new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#anyURI"), roleName);
+ subjectRoleAttribute.addValue(subjectRoleAttributeValue);
+
+ subjectRequestAttributes.add(subjectIdAttribute);
+ subjectRequestAttributes.add(subjectRoleAttribute);
+ request.add(subjectRequestAttributes);
+
+ // Add Resource
+ StdMutableRequestAttributes resourceAttributes = new StdMutableRequestAttributes();
+ resourceAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource"));
+
+ StdMutableAttribute resourceAttribute = new StdMutableAttribute();
+ resourceAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource"));
+ resourceAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:resource:resource-id"));
+ StdAttributeValue<String> resourceAttributeValue =
+ new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"),
+ "{http://www.example.org/contract/DoubleIt}DoubleItService#DoubleIt");
+ resourceAttribute.addValue(resourceAttributeValue);
+
+ resourceAttributes.add(resourceAttribute);
+ request.add(resourceAttributes);
+
+ // Add Action
+ StdMutableRequestAttributes actionAttributes = new StdMutableRequestAttributes();
+ actionAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:action"));
+
+ StdMutableAttribute actionAttribute = new StdMutableAttribute();
+ actionAttribute.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:action"));
+ actionAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:action:action-id"));
+ StdAttributeValue<String> actionAttributeValue =
+ new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string"), "execute");
+ actionAttribute.addValue(actionAttributeValue);
+
+ actionAttributes.add(actionAttribute);
+ request.add(actionAttributes);
+
+ // Add Environment
+ StdMutableRequestAttributes environmentAttributes = new StdMutableRequestAttributes();
+ environmentAttributes.setCategory(new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:environment"));
+
+ StdMutableAttribute environmentAttribute = new StdMutableAttribute();
+ environmentAttribute.setAttributeId(new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:environment:current-dateTime"));
+ StdAttributeValue<String> environmentAttributeValue =
+ new StdAttributeValue<String>(new IdentifierImpl("http://www.w3.org/2001/XMLSchema#dateTime"),
+ "2015-07-14T11:02:01.465+01:00");
+ environmentAttribute.addValue(environmentAttributeValue);
+
+ environmentAttributes.add(environmentAttribute);
+ request.add(environmentAttributes);
+
+ return request;
+ }
+
+}
\ No newline at end of file
diff --git a/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml
new file mode 100644
index 0000000..b2cebdf
--- /dev/null
+++ b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_permission_policy.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PolicySet PolicySetId="org.apache.permissions.doubleit"
+ PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides"
+ Version="1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 xacml-core-v3-schema-wd-17.xsd"
+ xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >
+ <Target />
+ <Policy PolicyId="Permissions:for:the:manager:role"
+ Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides">
+ <Target />
+ <Rule RuleId="Permission:to:doubleit" Effect="Permit">
+ <Target>
+ <AnyOf>
+ <AllOf>
+ <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">{http://www.example.org/contract/DoubleIt}DoubleItService#DoubleIt</AttributeValue>
+ <AttributeDesignator MustBePresent="false"
+ Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
+ AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string" />
+ </Match>
+ </AllOf>
+ </AnyOf>
+ <AnyOf>
+ <AllOf>
+ <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">execute</AttributeValue>
+ <AttributeDesignator MustBePresent="false"
+ Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action"
+ AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
+ DataType="http://www.w3.org/2001/XMLSchema#string" />
+ </Match>
+ </AllOf>
+ </AnyOf>
+ </Target>
+ </Rule>
+ </Policy>
+</PolicySet>
+
+
diff --git a/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml
new file mode 100644
index 0000000..dca7b4b
--- /dev/null
+++ b/openaz-xacml-test/src/test/resources/org/apache/openaz/pdp/std/json/manager_role_policy.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<PolicySet PolicySetId="org.apache.role.manager"
+ PolicyCombiningAlgId="urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides"
+ Version="1.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17 xacml-core-v3-schema-wd-17.xsd"
+ xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" >
+ <Target>
+ <AnyOf>
+ <AllOf>
+ <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
+ <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">manager</AttributeValue>
+ <AttributeDesignator MustBePresent="false"
+ Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
+ AttributeId="urn:oasis:names:tc:xacml:2.0:subject:role"
+ DataType="http://www.w3.org/2001/XMLSchema#anyURI" />
+ </Match>
+ </AllOf>
+ </AnyOf>
+ </Target>
+
+ <!-- Use permissions associated with the manager role -->
+ <PolicySetIdReference>org.apache.permissions.doubleit</PolicySetIdReference>
+</PolicySet>
+
+