Update css file name in conf.py
[policy/engine.git] / ONAP-XACML / src / test / java / org / onap / policy / xacml / test / util / XACMLPolicyScannerTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-XACML
4  * ================================================================================
5  * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (C) 2019 Samsung
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.policy.xacml.test.util;
24
25 import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28 import static org.junit.Assert.assertNull;
29 import static org.junit.Assert.assertTrue;
30 import static org.junit.Assert.fail;
31 import com.att.research.xacml.api.Advice;
32 import com.att.research.xacml.api.Attribute;
33 import com.att.research.xacml.api.Obligation;
34 import com.att.research.xacml.util.XACMLPolicyScanner.Callback;
35 import com.att.research.xacml.util.XACMLPolicyScanner.CallbackResult;
36 import java.io.File;
37 import java.io.IOException;
38 import java.nio.file.Path;
39 import java.nio.file.Paths;
40 import java.util.List;
41 import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
42 import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
43 import oasis.names.tc.xacml._3_0.core.schema.wd_17.IdReferenceType;
44 import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
45 import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
46 import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
47 import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
48 import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
49 import org.apache.commons.logging.Log;
50 import org.apache.commons.logging.LogFactory;
51 import org.junit.Before;
52 import org.junit.Test;
53 import org.onap.policy.xacml.util.XACMLPolicyScanner;
54
55 public class XACMLPolicyScannerTest {
56
57     private static final Log logger = LogFactory.getLog(XACMLPolicyScannerTest.class);
58     private static Path configPolicyPathValue;
59     private static Path actionPolicyPathValue;
60
61     /**
62      * setUp.
63      */
64     @Before
65     public void setUp() {
66         File templateFile;
67         ClassLoader classLoader = getClass().getClassLoader();
68         try {
69             templateFile = new File(classLoader.getResource("Config_SampleTest1206.1.xml").getFile());
70             configPolicyPathValue = templateFile.toPath();
71             templateFile = new File(classLoader.getResource("Action_TestActionPolicy.1.xml").getFile());
72             actionPolicyPathValue = templateFile.toPath();
73         } catch (Exception e1) {
74             logger.error("Exception Occured" + e1);
75         }
76     }
77
78     @Test
79     public void xacmlPolicyScannerTest() throws IOException {
80         Callback callback = null;
81         try {
82             XACMLPolicyScanner actionScanner = new XACMLPolicyScanner(actionPolicyPathValue, callback);
83             assertNotNull(actionScanner.getPolicyObject());
84             Object actionObject = actionScanner.scan();
85             assertNotNull(actionObject);
86
87             XACMLPolicyScanner scanner = new XACMLPolicyScanner(configPolicyPathValue, callback);
88             assertTrue(scanner.getPolicyObject() != null);
89             Object object = scanner.scan();
90             assertTrue(object != null);
91             String id = XACMLPolicyScanner.getID(scanner.getPolicyObject());
92             assertTrue(id.equals("urn:com:xacml:policy:id:0b67998b-57e2-4e25-9ea9-f9154bf18df1"));
93             String version = XACMLPolicyScanner.getVersion(scanner.getPolicyObject());
94             assertTrue(version.equals("1"));
95             String versionFromPath = XACMLPolicyScanner.getVersion(configPolicyPathValue);
96             assertTrue(versionFromPath.equals("1"));
97             List<String> returnValue = XACMLPolicyScanner.getCreatedByModifiedBy(configPolicyPathValue);
98             assertTrue(returnValue.get(0).equals("test"));
99             String createdBy = XACMLPolicyScanner.getCreatedBy(configPolicyPathValue);
100             assertTrue(createdBy.equals("test"));
101             String modifiedBy = XACMLPolicyScanner.getModifiedBy(configPolicyPathValue);
102             assertTrue(modifiedBy.equals("test"));
103         } catch (Exception e) {
104             fail();
105             logger.error("Exception Occured" + e);
106         }
107     }
108
109     @Test
110     public void badPolicies() throws IOException {
111         Path unknown = Paths.get("foobar.xml");
112         XACMLPolicyScanner scanner = new XACMLPolicyScanner(unknown, null);
113         assertNull(scanner.getPolicyObject());
114         assertNull(scanner.scan());
115
116         assertThatExceptionOfType(IOException.class).isThrownBy(() -> {
117             XACMLPolicyScanner.getVersion(unknown);
118         });
119
120         Path logback = Paths.get("logback-test.xml");
121         scanner = new XACMLPolicyScanner(logback, null);
122     }
123
124     @Test
125     public void testRest() {
126         PolicySetType policySet = new PolicySetType();
127         policySet.setPolicySetId("id1");
128         policySet.setVersion("v1");
129         XACMLPolicyScanner scanner = new XACMLPolicyScanner(policySet);
130         assertNotNull(scanner);
131         assertEquals(policySet, scanner.getPolicyObject());
132         assertEquals(policySet.getPolicySetId(), XACMLPolicyScanner.getID(policySet));
133         assertEquals(policySet.getVersion(), XACMLPolicyScanner.getVersion(policySet));
134
135         scanner.setCallback(new TestCallback(CallbackResult.CONTINUE));
136         assertEquals(policySet, scanner.scan());
137         assertEquals(policySet, scanner.scan(new TestCallback(CallbackResult.CONTINUE)));
138         assertEquals(policySet, scanner.scan(new TestCallback(CallbackResult.STOP)));
139
140         PolicyType policy = new PolicyType();
141         policy.setPolicyId("id2");
142         policy.setVersion("v2");
143         scanner = new XACMLPolicyScanner(policy);
144         assertNotNull(scanner);
145         assertEquals(policy, scanner.getPolicyObject());
146         assertEquals(policy.getPolicyId(), XACMLPolicyScanner.getID(policy));
147         assertEquals(policy.getVersion(), XACMLPolicyScanner.getVersion(policy));
148         policy.setVersion(null);
149         assertNull(XACMLPolicyScanner.getVersion(policy));
150
151         assertNull(XACMLPolicyScanner.getID(new String()));
152         assertNull(XACMLPolicyScanner.getVersion(new String()));
153
154     }
155
156     @Test
157     public void testPolicySet() {
158         PolicySetType policySet = new PolicySetType();
159         policySet.setPolicySetId("id1");
160         policySet.setVersion("v1");
161
162     }
163
164     class TestCallback implements Callback {
165
166         CallbackResult begin = CallbackResult.CONTINUE;
167
168         TestCallback(CallbackResult onBegin) {
169             begin = onBegin;
170         }
171
172         @Override
173         public CallbackResult onBeginScan(Object root) {
174             return begin;
175         }
176
177         @Override
178         public void onFinishScan(Object root) {
179         }
180
181         @Override
182         public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) {
183             return CallbackResult.CONTINUE;
184         }
185
186         @Override
187         public CallbackResult onPostVisitPolicySet(PolicySetType parent, PolicySetType policySet) {
188             return CallbackResult.CONTINUE;
189         }
190
191         @Override
192         public CallbackResult onPreVisitPolicy(PolicySetType parent, PolicyType policy) {
193             return CallbackResult.CONTINUE;
194         }
195
196         @Override
197         public CallbackResult onPostVisitPolicy(PolicySetType parent, PolicyType policy) {
198             return CallbackResult.CONTINUE;
199         }
200
201         @Override
202         public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) {
203             return CallbackResult.CONTINUE;
204         }
205
206         @Override
207         public CallbackResult onPostVisitRule(PolicyType parent, RuleType rule) {
208             return CallbackResult.CONTINUE;
209         }
210
211         @Override
212         public CallbackResult onAttribute(Object parent, Object container, Attribute attribute) {
213             return CallbackResult.CONTINUE;
214         }
215
216         @Override
217         public CallbackResult onObligation(Object parent, ObligationExpressionType expression, Obligation obligation) {
218             return CallbackResult.CONTINUE;
219         }
220
221         @Override
222         public CallbackResult onAdvice(Object parent, AdviceExpressionType expression, Advice advice) {
223             return CallbackResult.CONTINUE;
224         }
225
226         @Override
227         public CallbackResult onVariable(PolicyType policy, VariableDefinitionType variable) {
228             return CallbackResult.CONTINUE;
229         }
230
231         @Override
232         public CallbackResult onCondition(RuleType rule, ConditionType condition) {
233             return CallbackResult.CONTINUE;
234         }
235
236         @Override
237         public CallbackResult onPolicySetIdReference(IdReferenceType reference, PolicySetType parent) {
238             return CallbackResult.CONTINUE;
239         }
240
241         @Override
242         public CallbackResult onPolicyIdReference(IdReferenceType reference, PolicySetType parent) {
243             return CallbackResult.CONTINUE;
244         }
245
246     }
247 }