2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 Nordix Foundation.
4 * ================================================================================
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
21 package org.onap.policy.rest.util;
23 import static org.assertj.core.api.Assertions.assertThatThrownBy;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
28 import java.io.BufferedReader;
29 import java.io.StringReader;
30 import java.util.ArrayList;
31 import java.util.Date;
32 import java.util.LinkedHashMap;
33 import java.util.List;
36 import javax.servlet.http.HttpServletRequest;
38 import org.junit.Test;
39 import org.junit.runner.RunWith;
40 import org.mockito.Mock;
41 import org.mockito.Mockito;
42 import org.mockito.runners.MockitoJUnitRunner;
43 import org.onap.policy.api.AttributeType;
44 import org.onap.policy.api.PolicyClass;
45 import org.onap.policy.api.PolicyConfigType;
46 import org.onap.policy.api.PolicyParameters;
47 import org.onap.policy.api.PolicyType;
48 import org.onap.policy.api.RuleProvider;
49 import org.onap.policy.common.utils.resources.TextFileUtils;
50 import org.onap.policy.rest.adapter.PolicyRestAdapter;
52 @RunWith(MockitoJUnitRunner.class)
53 public class PolicyValidationRequestWrapperTest {
56 HttpServletRequest request;
59 public void testHttpRequest() throws Exception {
60 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
62 assertNull(wrapper.populateRequestParameters((HttpServletRequest) null));
64 BufferedReader decisionPolicyReader = new BufferedReader(new StringReader(
65 TextFileUtils.getTextFileAsString("src/test/resources/policies/DecisionPolicy.json")));
67 Mockito.when(request.getReader()).thenReturn(decisionPolicyReader);
69 wrapper.populateRequestParameters(request);
71 BufferedReader policyJsonTrapFaultReader = new BufferedReader(new StringReader(
72 TextFileUtils.getTextFileAsString("src/test/resources/policies/PolicyJsonTrapFault.json")));
74 Mockito.when(request.getReader()).thenReturn(policyJsonTrapFaultReader);
76 wrapper.populateRequestParameters(request);
78 BufferedReader badJsonReader = new BufferedReader(new StringReader("{"));
80 Mockito.when(request.getReader()).thenReturn(badJsonReader);
82 wrapper.populateRequestParameters(request);
86 public void testDefaultParameterHandling() throws Exception {
87 PolicyParameters parameters = createParametersObject();
89 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
91 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
92 .isInstanceOf(NullPointerException.class);
94 parameters.setPolicyConfigType(PolicyConfigType.Firewall);
95 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
96 assertEquals("Firewall Config", adapter.getConfigPolicyType());
98 parameters.setConfigBody("");
99 assertNull(wrapper.populateRequestParameters((parameters)));
101 parameters.setConfigBody("{\"name");
102 assertNull(wrapper.populateRequestParameters((parameters)));
104 parameters.setConfigBodyType(PolicyType.OTHER);
105 parameters.setConfigBody(null);
106 adapter = wrapper.populateRequestParameters((parameters));
107 assertEquals("Firewall Config", adapter.getConfigPolicyType());
109 parameters.setPolicyConfigType(PolicyConfigType.Extended);
110 adapter = wrapper.populateRequestParameters((parameters));
111 assertEquals("EXTENDED", adapter.getConfigPolicyType());
113 parameters.setTtlDate(null);
114 adapter = wrapper.populateRequestParameters((parameters));
115 assertEquals("NA", adapter.getTtlDate());
119 public void testConfigFirewallParameterHandling() throws Exception {
120 PolicyParameters parameters = createParametersObject();
121 parameters.setPolicyConfigType(PolicyConfigType.Firewall);
123 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
125 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
126 assertEquals("Firewall Config", adapter.getConfigPolicyType());
128 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
129 adapter = wrapper.populateRequestParameters((parameters));
130 assertEquals(null, adapter.getSecurityZone());
131 assertEquals("ConfigName", adapter.getConfigName());
133 parameters.setConfigBody("{\"securityZoneId\": \"SecurityZone\"}");
134 adapter = wrapper.populateRequestParameters((parameters));
135 assertEquals("SecurityZone", adapter.getSecurityZone());
137 parameters.setConfigBody("{\"configName\": \"AnotherConfigName\"}");
138 adapter = wrapper.populateRequestParameters((parameters));
139 assertEquals("AnotherConfigName", adapter.getConfigName());
143 public void testConfigMicroserviceParameterHandling() throws Exception {
144 PolicyParameters parameters = createParametersObject();
145 parameters.setPolicyConfigType(PolicyConfigType.MicroService);
147 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
149 assertNull(wrapper.populateRequestParameters((parameters)));
151 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
153 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
154 assertEquals("Micro Service", adapter.getConfigPolicyType());
156 parameters.setConfigBody("{\"service\": \"MyService\"}");
157 adapter = wrapper.populateRequestParameters((parameters));
158 assertEquals("MyService", adapter.getServiceType());
160 parameters.setConfigBody("{\"content\": \"{}\"}");
161 adapter = wrapper.populateRequestParameters((parameters));
162 assertEquals("\"{}\"", adapter.getPolicyJSON().toString());
164 parameters.setConfigBody("{\"content\": {hess:}}");
165 assertNull(wrapper.populateRequestParameters((parameters)));
169 public void testConfigOptimizationParameterHandling() throws Exception {
170 PolicyParameters parameters = createParametersObject();
171 parameters.setPolicyConfigType(PolicyConfigType.Optimization);
173 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
175 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
176 assertEquals("Optimization", adapter.getConfigPolicyType());
178 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
180 adapter = wrapper.populateRequestParameters((parameters));
181 assertEquals("Optimization", adapter.getConfigPolicyType());
183 parameters.setConfigBody("{\"service\": \"MyService\"}");
184 adapter = wrapper.populateRequestParameters((parameters));
185 assertEquals("MyService", adapter.getServiceType());
189 public void testConfigClosedLoopFaultParameterHandling() throws Exception {
190 PolicyParameters parameters = createParametersObject();
191 parameters.setPolicyConfigType(PolicyConfigType.ClosedLoop_Fault);
193 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
195 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
196 assertEquals("ClosedLoop_Fault", adapter.getConfigPolicyType());
198 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
200 adapter = wrapper.populateRequestParameters((parameters));
201 assertEquals("ClosedLoop_Fault", adapter.getConfigPolicyType());
203 parameters.setConfigBody("{\"onapname\": \"MyOnapName\"}");
204 adapter = wrapper.populateRequestParameters((parameters));
205 assertEquals("MyOnapName", adapter.getOnapName());
209 public void testConfigClosedLoopPmParameterHandling() throws Exception {
210 PolicyParameters parameters = createParametersObject();
211 parameters.setPolicyConfigType(PolicyConfigType.ClosedLoop_PM);
213 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
215 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
216 assertEquals("ClosedLoop_PM", adapter.getConfigPolicyType());
218 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
220 adapter = wrapper.populateRequestParameters((parameters));
221 assertEquals("ClosedLoop_PM", adapter.getConfigPolicyType());
223 parameters.setConfigBody(
224 "{\"onapname\": \"MyOnapName\",\"serviceTypePolicyName\":\"Service Type Policy Name\"}");
225 adapter = wrapper.populateRequestParameters((parameters));
226 assertEquals("MyOnapName", adapter.getOnapName());
230 public void testConfigBrmsParameterHandling() throws Exception {
231 PolicyParameters parameters = createParametersObject();
232 parameters.setPolicyConfigType(PolicyConfigType.BRMS_PARAM);
234 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
235 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
236 .isInstanceOf(NullPointerException.class);
238 Map<AttributeType, Map<String, String>> attributes = new LinkedHashMap<>();
239 parameters.setAttributes(attributes);
240 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
241 .isInstanceOf(NullPointerException.class);
243 Map<String, String> templateMap = new LinkedHashMap<>();
244 templateMap.put("templateName", "Template Name");
245 attributes.put(AttributeType.RULE, templateMap);
246 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
247 assertEquals("BRMS_Param", adapter.getConfigPolicyType());
248 assertEquals("Template Name", adapter.getRuleName());
250 parameters.setConfigBody("{\"someParameter\": \"someValue\"}");
252 adapter = wrapper.populateRequestParameters((parameters));
253 assertEquals("BRMS_Param", adapter.getConfigPolicyType());
256 @SuppressWarnings("unchecked")
258 public void testDecisionRainyDayParameterHandling() throws Exception {
259 PolicyParameters parameters = createParametersObject();
260 parameters.setPolicyClass(PolicyClass.Decision);
262 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
263 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
264 .isInstanceOf(NullPointerException.class);
266 Map<AttributeType, Map<String, String>> attributes = new LinkedHashMap<>();
267 parameters.setAttributes(attributes);
268 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
269 .isInstanceOf(NullPointerException.class);
271 parameters.setRuleProvider(RuleProvider.RAINY_DAY);
272 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
273 .isInstanceOf(NullPointerException.class);
275 Map<String, String> treatments = new LinkedHashMap<>();
276 parameters.setTreatments(treatments);
278 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
279 assertEquals("Rainy_Day", adapter.getRuleProvider());
281 treatments.put("ATreatment", "A Treatment Value");
282 adapter = wrapper.populateRequestParameters((parameters));
283 assertEquals("ATreatment", ((Map<String, String>) adapter.getRainyday().getTreatmentTableChoices().get(0))
285 assertEquals("A Treatment Value",
286 ((Map<String, String>) adapter.getRainyday().getTreatmentTableChoices().get(0))
289 Map<String, String> matchingMap = new LinkedHashMap<>();
290 matchingMap.put("ServiceType", "AServiceType");
291 attributes.put(AttributeType.MATCHING, matchingMap);
292 parameters.setAttributes(attributes);
293 adapter = wrapper.populateRequestParameters((parameters));
294 assertEquals("AServiceType", adapter.getRainyday().getServiceType());
298 public void testDecisionGuardParameterHandling() throws Exception {
299 PolicyParameters parameters = createParametersObject();
300 parameters.setPolicyClass(PolicyClass.Decision);
302 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
303 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
304 .isInstanceOf(NullPointerException.class);
306 Map<AttributeType, Map<String, String>> attributes = new LinkedHashMap<>();
307 parameters.setAttributes(attributes);
308 assertThatThrownBy(() -> wrapper.populateRequestParameters(parameters))
309 .isInstanceOf(NullPointerException.class);
311 parameters.setRuleProvider(RuleProvider.GUARD_BL_YAML);
313 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
314 assertEquals("GUARD_BL_YAML", adapter.getRuleProvider());
316 parameters.setRuleProvider(RuleProvider.GUARD_MIN_MAX);
318 adapter = wrapper.populateRequestParameters((parameters));
319 assertEquals("GUARD_MIN_MAX", adapter.getRuleProvider());
321 parameters.setRuleProvider(RuleProvider.GUARD_YAML);
323 adapter = wrapper.populateRequestParameters((parameters));
324 assertEquals("GUARD_YAML", adapter.getRuleProvider());
326 Map<String, String> matchingMap = new LinkedHashMap<>();
327 matchingMap.put("actor", "Actor");
328 matchingMap.put("recipe", "Recipe");
329 matchingMap.put("guardActiveStart", "GuardActiveStart");
330 matchingMap.put("guardActiveEnd", "GuardActiveEnd");
331 matchingMap.put("limit", "Limit");
332 matchingMap.put("timeWindow", "Window");
333 matchingMap.put("timeUnits", "Units");
335 attributes.put(AttributeType.MATCHING, matchingMap);
336 parameters.setAttributes(attributes);
337 adapter = wrapper.populateRequestParameters((parameters));
338 assertEquals("Actor", adapter.getYamlparams().getActor());
339 assertEquals("Recipe", adapter.getYamlparams().getRecipe());
340 assertEquals("GuardActiveStart", adapter.getYamlparams().getGuardActiveStart());
341 assertEquals("GuardActiveEnd", adapter.getYamlparams().getGuardActiveEnd());
342 assertEquals("Limit", adapter.getYamlparams().getLimit());
343 assertEquals("Window", adapter.getYamlparams().getTimeWindow());
344 assertEquals("Units", adapter.getYamlparams().getTimeUnits());
346 parameters.setRuleProvider(RuleProvider.GUARD_MIN_MAX);
347 matchingMap.put("min", "TheMin");
348 matchingMap.put("max", "TheMax");
349 adapter = wrapper.populateRequestParameters((parameters));
350 assertEquals("TheMin", adapter.getYamlparams().getMin());
351 assertEquals("TheMax", adapter.getYamlparams().getMax());
353 parameters.setRuleProvider(RuleProvider.GUARD_BL_YAML);
354 adapter = wrapper.populateRequestParameters((parameters));
355 assertTrue(adapter.getYamlparams().getBlackList().isEmpty());
357 matchingMap.put("blackList", "Bad0,Bad1");
358 adapter = wrapper.populateRequestParameters((parameters));
359 assertEquals("Bad0", adapter.getYamlparams().getBlackList().get(0));
360 assertEquals("Bad1", adapter.getYamlparams().getBlackList().get(1));
362 parameters.setRuleProvider(RuleProvider.AAF);
363 adapter = wrapper.populateRequestParameters((parameters));
364 assertNull(adapter.getYamlparams());
367 @SuppressWarnings("unchecked")
369 public void testActionParameterHandling() throws Exception {
370 PolicyParameters parameters = createParametersObject();
371 parameters.setPolicyClass(PolicyClass.Action);
373 PolicyValidationRequestWrapper wrapper = new PolicyValidationRequestWrapper();
375 PolicyRestAdapter adapter = wrapper.populateRequestParameters((parameters));
376 assertTrue(adapter.getRuleAlgorithmschoices().isEmpty());
378 List<String> dynamicRuleAlgorithmLabels = new ArrayList<>();
379 parameters.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels);
380 adapter = wrapper.populateRequestParameters((parameters));
381 assertTrue(adapter.getRuleAlgorithmschoices().isEmpty());
383 dynamicRuleAlgorithmLabels.add("Label0");
384 List<String> dynamicRuleAlgorithmFunctions = new ArrayList<>();
385 dynamicRuleAlgorithmFunctions.add("FirstAlgorithmFunction");
386 parameters.setDynamicRuleAlgorithmFunctions(dynamicRuleAlgorithmFunctions);
387 List<String> dynamicRuleAlgorithmField1 = new ArrayList<>();
388 dynamicRuleAlgorithmField1.add("FirstAlgorithmFunctionField1");
389 parameters.setDynamicRuleAlgorithmField1(dynamicRuleAlgorithmField1);
390 List<String> dynamicRuleAlgorithmField2 = new ArrayList<>();
391 dynamicRuleAlgorithmField2.add("FirstAlgorithmFunctionField2");
392 parameters.setDynamicRuleAlgorithmField2(dynamicRuleAlgorithmField2);
393 parameters.setDynamicRuleAlgorithmLabels(dynamicRuleAlgorithmLabels);
394 adapter = wrapper.populateRequestParameters((parameters));
395 assertEquals(1, adapter.getRuleAlgorithmschoices().size());
396 assertEquals("Label0", ((LinkedHashMap<String, String>) adapter.getRuleAlgorithmschoices().get(0)).get("id"));
398 Map<String, String> matchingMap = new LinkedHashMap<>();
399 matchingMap.put("AKey", "AValue");
401 Map<AttributeType, Map<String, String>> attributes = new LinkedHashMap<>();
402 attributes.put(AttributeType.MATCHING, matchingMap);
403 parameters.setAttributes(attributes);
404 adapter = wrapper.populateRequestParameters((parameters));
405 assertEquals("AKey", ((LinkedHashMap<String, String>) adapter.getAttributes().get(0)).get("key"));
408 private PolicyParameters createParametersObject() {
409 PolicyParameters parameters = new PolicyParameters();
411 parameters.setPolicyName("PolicyName");
412 parameters.setOnapName("ONAPName");
413 parameters.setPriority("SomePriority");
414 parameters.setConfigName("ConfigName");
415 parameters.setRiskType("RiskType");
416 parameters.setRiskLevel("RiskLevel");
417 parameters.setGuard(false);
418 parameters.setTtlDate(new Date());