Push and unpush to support multiple policies
[policy/engine.git] / ONAP-PDP-REST / src / test / java / org / onap / policy / pdp / rest / api / test / PolicyEngineServicesTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PDP-REST
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.pdp.rest.api.test;
24
25 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
26 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
27 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
28 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
29 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
30 import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppContextSetup;
31 import com.att.research.xacml.util.XACMLProperties;
32 import java.io.IOException;
33 import java.lang.reflect.InvocationTargetException;
34 import java.lang.reflect.Method;
35 import java.util.Date;
36 import java.util.HashMap;
37 import java.util.Map;
38 import java.util.UUID;
39 import org.junit.Before;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.onap.policy.api.AttributeType;
43 import org.onap.policy.api.ConfigNameRequest;
44 import org.onap.policy.api.ConfigRequestParameters;
45 import org.onap.policy.api.DecisionRequestParameters;
46 import org.onap.policy.api.DeletePolicyCondition;
47 import org.onap.policy.api.DeletePolicyParameters;
48 import org.onap.policy.api.DictionaryParameters;
49 import org.onap.policy.api.DictionaryType;
50 import org.onap.policy.api.EventRequestParameters;
51 import org.onap.policy.api.PolicyClass;
52 import org.onap.policy.api.PolicyConfigType;
53 import org.onap.policy.api.PolicyParameters;
54 import org.onap.policy.api.PolicyType;
55 import org.onap.policy.api.PushPolicyParameters;
56 import org.onap.policy.pdp.rest.XACMLPdpServlet;
57 import org.onap.policy.pdp.rest.api.models.ConfigFirewallPolicyAPIRequest;
58 import org.onap.policy.pdp.rest.api.models.ConfigPolicyAPIRequest;
59 import org.onap.policy.pdp.rest.api.services.CreateUpdatePolicyServiceImpl;
60 import org.onap.policy.pdp.rest.api.services.NotificationService;
61 import org.onap.policy.pdp.rest.config.PDPRestConfig;
62 import org.onap.policy.utils.PolicyUtils;
63 import org.springframework.beans.factory.annotation.Autowired;
64 import org.springframework.http.HttpHeaders;
65 import org.springframework.http.MediaType;
66 import org.springframework.test.context.ContextConfiguration;
67 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
68 import org.springframework.test.context.web.WebAppConfiguration;
69 import org.springframework.test.web.servlet.MockMvc;
70 import org.springframework.web.context.WebApplicationContext;
71
72 @RunWith(SpringJUnit4ClassRunner.class)
73 @ContextConfiguration(classes = {PDPRestConfig.class})
74 @WebAppConfiguration
75 public class PolicyEngineServicesTest {
76     private static final String CLIENTAUTHHEADER = "ClientAuth";
77     private static final String UUIDHEADER = "X-ECOMP-RequestID";
78     // This value is as per test resource code. Don't change this.
79     private static final String CLIENTAUTHVALUE = "Basic cHl0aG9uOnRlc3Q=";
80     private static final String ERRORCLIENTVALUE = "Basic dGVzdDp0ZXN0MTIz";
81
82     private MockMvc mockMvc;
83     private HttpHeaders headers;
84
85     @Autowired
86     private WebApplicationContext webApplicationContext;
87
88     @Before()
89     public void setup() throws IOException {
90         headers = new HttpHeaders();
91         headers.add(CLIENTAUTHHEADER, CLIENTAUTHVALUE);
92         XACMLProperties.reloadProperties();
93         System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/pass.xacml.pdp.properties");
94         XACMLProperties.getProperties();
95         this.mockMvc = webAppContextSetup(webApplicationContext).build();
96     }
97
98     @Test
99     public void getConfigAPIFailureTest() throws Exception {
100         ConfigRequestParameters pep = new ConfigRequestParameters();
101         pep.setPolicyName(".*");
102         mockMvc.perform(
103                 post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON))
104                 .andExpect(status().is(400));
105         // Authorization tests.
106         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep))
107                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
108                 .andExpect(status().isUnauthorized());
109         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep))
110                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
111                 .andExpect(status().isUnauthorized());
112         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep))
113                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ERRORCLIENTVALUE))
114                 .andExpect(status().isUnauthorized());
115         // Set wrong request.
116         pep.setPolicyName(null);
117         pep.setConfigName("test");
118         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
119                 .header(UUIDHEADER, "123").contentType(MediaType.APPLICATION_JSON)).andExpect(status().isBadRequest());
120     }
121
122     @Test
123     public void getConfigServiceTest() throws Exception {
124         ConfigRequestParameters pep = new ConfigRequestParameters();
125         pep.setPolicyName(".*");
126         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
127                 .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
128                 .andExpect(status().isOk());
129         // Without policyName and using onapName and other fields.
130         pep.setPolicyName(null);
131         pep.setOnapName("test");
132         pep.setConfigName("test");
133         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
134                 .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
135         // with config attributes.
136         Map<String, String> configAttributes = new HashMap<>();
137         configAttributes.put("test", "test");
138         pep.setConfigAttributes(configAttributes);
139         pep.makeUnique(true);
140         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
141                 .contentType(MediaType.APPLICATION_JSON)).andExpect(status().isOk());
142     }
143
144     @Test
145     public void getConfigByPolicyNameTest() throws Exception {
146         ConfigNameRequest pep = new ConfigNameRequest();
147         pep.setPolicyName(".*");
148         mockMvc.perform(
149                 post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON))
150                 .andExpect(status().is(400));
151         // Authorization tests.
152         mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep))
153                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
154                 .andExpect(status().isUnauthorized());
155         mockMvc.perform(post("/getConfigByPolicyName").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
156                 .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
157                 .andExpect(status().isOk());
158     }
159
160     @Test
161     public void listConfigTest() throws Exception {
162         ConfigRequestParameters pep = new ConfigRequestParameters();
163         pep.setPolicyName(".*");
164         mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep))
165                 .contentType(MediaType.APPLICATION_JSON)).andExpect(status().is(400));
166         // Authorization tests.
167         mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep))
168                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
169                 .andExpect(status().isUnauthorized());
170         mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
171                 .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
172                 .andExpect(status().isOk());
173     }
174
175     @Test
176     public void listPolicyTest() throws Exception {
177         ConfigNameRequest pep = new ConfigNameRequest();
178         pep.setPolicyName(".*");
179         mockMvc.perform(post("/listPolicy").content(PolicyUtils.objectToJsonString(pep)).headers(headers)
180                 .header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
181                 .andExpect(status().isOk());
182     }
183
184     @Test
185     public void getMetricsTest() throws Exception {
186         // Failure Tests.
187         mockMvc.perform(get("/getMetrics")).andExpect(status().isBadRequest());
188         mockMvc.perform(get("/getMetrics").header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
189         // Service Tests.
190         mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, "123"))
191                 .andExpect(status().isBadRequest());
192         mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, UUID.randomUUID()))
193                 .andExpect(status().isBadRequest());
194         mockMvc.perform(get("/getMetrics").headers(headers)).andExpect(status().isBadRequest());
195     }
196
197     @Test
198     public void getNotificationAuthFailureTest() throws Exception {
199         mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "").content("test"))
200                 .andExpect(status().isUnauthorized());
201         mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "Basic test123").content("test"))
202                 .andExpect(status().isUnauthorized());
203         mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, ERRORCLIENTVALUE).content(" "))
204                 .andExpect(status().isUnauthorized());
205     }
206
207     @Test
208     public void getNotificationTopicFailureTest() throws Exception {
209         mockMvc.perform(post("/getNotification")).andExpect(status().isBadRequest());
210         mockMvc.perform(post("/getNotification").headers(headers).content("")).andExpect(status().isBadRequest());
211     }
212
213     @Test
214     public void getNotificationTopicValidFailTest() throws Exception {
215         // Check failures.
216         mockMvc.perform(post("/getNotification").headers(headers).content(" ")).andExpect(status().isBadRequest());
217         mockMvc.perform(post("/stopNotification").headers(headers).content(" ")).andExpect(status().isBadRequest());
218         mockMvc.perform(post("/sendHeartbeat").headers(headers).content(" ")).andExpect(status().isBadRequest());
219     }
220
221     @Test
222     public void getNotificationTopicValidPassTest() throws Exception {
223         // Values can be polluted due to failure tests and need to be reloaded.
224         XACMLProperties.reloadProperties();
225         System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME,
226                 "src/test/resources/notification.xacml.pdp.properties");
227         XACMLProperties.getProperties();
228         NotificationService.reloadProps();
229         // Add a Topic.
230         mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, "123").content("test"))
231                 .andExpect(status().isOk());
232         // Try to add same topic should fail.
233         mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, UUID.randomUUID()).content("test"))
234                 .andExpect(status().isBadRequest());
235         // do a heart beat.
236         mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isOk());
237         // remove the added Topic.
238         mockMvc.perform(post("/stopNotification").headers(headers).content("test")).andExpect(status().isOk());
239         // try to remove again should fail.
240         mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isBadRequest());
241     }
242
243     @Test
244     public void sendEventTest() throws Exception {
245         EventRequestParameters pep = new EventRequestParameters();
246         Map<String, String> eventAttributes = new HashMap<>();
247         eventAttributes.put("TEST", "test");
248         pep.setEventAttributes(eventAttributes);
249         // Failure Tests.
250         mockMvc.perform(post("/sendEvent")).andExpect(status().isBadRequest());
251         mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep))
252                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
253                 .andExpect(status().isUnauthorized());
254         // Service Tests.
255         mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep))
256                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123"))
257                 .andExpect(status().isOk());
258         pep.setEventAttributes(null);
259         mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep))
260                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
261                 .andExpect(status().isBadRequest());
262         pep.setEventAttributes(eventAttributes);
263         mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep))
264                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk());
265         pep.setEventAttributes(eventAttributes);
266         pep.setRequestID(UUID.randomUUID());
267         mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep))
268                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk());
269     }
270
271     @Test
272     public void getDecisionTest() throws Exception {
273         DecisionRequestParameters pep = new DecisionRequestParameters();
274         Map<String, String> eventAttributes = new HashMap<>();
275         eventAttributes.put("TEST", "test");
276         pep.setOnapName("te123");
277         pep.setDecisionAttributes(eventAttributes);
278         // Failure Tests.
279         mockMvc.perform(post("/getDecision")).andExpect(status().isBadRequest());
280         mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep))
281                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
282                 .andExpect(status().isUnauthorized());
283         // Service Tests.
284         mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep))
285                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123"))
286                 .andExpect(status().isOk());
287         pep.setDecisionAttributes(null);
288         pep.setOnapName(null);
289         mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep))
290                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
291                 .andExpect(status().isBadRequest());
292         pep.setOnapName("testing");
293         mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep))
294                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
295         pep.setDecisionAttributes(eventAttributes);
296         pep.setRequestID(UUID.randomUUID());
297         mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep))
298                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isOk());
299     }
300
301     @Test
302     public void pushPolicyTest() throws Exception {
303         PushPolicyParameters pep = new PushPolicyParameters();
304         // Failure Tests.
305         mockMvc.perform(put("/pushPolicy")).andExpect(status().isBadRequest());
306         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
307                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
308                 .andExpect(status().isUnauthorized());
309         // Service Tests.
310         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
311                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
312                 .andExpect(status().isBadRequest());
313         pep.setPolicyName("com.");
314         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
315                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
316         pep.setPolicyName("com.test");
317         pep.setPolicyType("");
318         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
319                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
320         pep.setPolicyName("scopeless");
321         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
322                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
323         pep.setPolicyName("testing.test");
324         pep.setPolicyType("wrong");
325         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
326                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
327         pep.setPolicyType("BRMS_PARAM");
328         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
329                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
330         pep.setPolicyType("BRMS_RAW");
331         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
332                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
333         pep.setPolicyType("MicroService");
334         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
335                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
336         pep.setPolicyType("ClosedLoop_PM");
337         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
338                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
339         pep.setPolicyType("ClosedLoop_Fault");
340         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
341                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
342         pep.setPolicyType("Base");
343         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
344                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
345         pep.setPolicyType("Decision");
346         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
347                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
348         pep.setPolicyType("Action");
349         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
350                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
351         pep.setPolicyType("Firewall");
352         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
353                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
354         pep.setPolicyType("Optimization");
355         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
356                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
357         pep.setPdpGroup("default");
358         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
359                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123"))
360                 .andExpect(status().isBadRequest());
361         pep.setRequestID(UUID.randomUUID());
362         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
363                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
364         pep.setPolicyType("Base,Base");
365         pep.setPolicyName("com.test1,com.test2");
366         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
367                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
368         pep.setPolicyType("Base,Base,  ");
369         pep.setPolicyName("com.test1,com.test2,com.test3");
370         mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep))
371                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
372     }
373
374     @Test
375     public void deletePolicyTest() throws Exception {
376         DeletePolicyParameters pep = new DeletePolicyParameters();
377         // Failure Tests.
378         mockMvc.perform(delete("/deletePolicy")).andExpect(status().isBadRequest());
379         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
380                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
381                 .andExpect(status().isUnauthorized());
382         // Service Tests.
383         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
384                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
385                 .andExpect(status().isBadRequest());
386
387         pep.setPolicyName("testing");
388         pep.setPolicyType("Base");
389         pep.setPolicyComponent("PDP");
390         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
391                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123"))
392                 .andExpect(status().isBadRequest());
393         pep.setPdpGroup("default");
394         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
395                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123"))
396                 .andExpect(status().isBadRequest());
397         pep.setPolicyName("com.Config_test.1.xml");
398         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
399                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123"))
400                 .andExpect(status().isBadRequest());
401         pep.setPolicyName("testing. ");
402         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
403                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test123"))
404                 .andExpect(status().isBadRequest());
405         pep.setPolicyName("testscope.name");
406         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
407                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
408         pep.setPolicyType("wrong");
409         pep.setRequestID(UUID.randomUUID());
410         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
411                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
412         pep.setPolicyType("BRMS_PARAM");
413         pep.setPolicyComponent("wrong");
414         pep.setRequestID(null);
415         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
416                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
417         pep.setPolicyType("BRMS_PARAM");
418         pep.setPolicyComponent("PDP");
419         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
420                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
421         pep.setPolicyType("BRMS_RAW");
422         pep.setPolicyComponent("PDP");
423         pep.setPolicyName("testscope.name");
424         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
425                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
426                 .andExpect(status().isBadRequest());
427         pep.setPolicyType("MicroService");
428         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
429                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
430                 .andExpect(status().isBadRequest());
431         pep.setPolicyType("Optimization");
432         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
433                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
434                 .andExpect(status().isBadRequest());
435         pep.setPolicyType("ClosedLoop_PM");
436         pep.setPolicyComponent("PDP");
437         pep.setDeleteCondition(DeletePolicyCondition.ALL);
438         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
439                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
440                 .andExpect(status().isBadRequest());
441         pep.setPolicyType("ClosedLoop_Fault");
442         pep.setDeleteCondition(DeletePolicyCondition.ONE);
443         pep.setPolicyName("test.test");
444         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
445                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
446                 .andExpect(status().isBadRequest());
447         pep.setPolicyType("Base");
448         pep.setPolicyComponent("PAP");
449         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
450                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
451                 .andExpect(status().isBadRequest());
452         pep.setPolicyType("Decision");
453         pep.setPolicyComponent("PDP");
454         pep.setPolicyName("test.test");
455         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
456                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
457                 .andExpect(status().isBadRequest());
458         pep.setPolicyType("Action");
459         pep.setPolicyName("scope.test");
460         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
461                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
462                 .andExpect(status().isBadRequest());
463         pep.setPdpGroup("default");
464         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
465                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
466                 .andExpect(status().isBadRequest());
467         pep.setPolicyComponent("PAP");
468         pep.setPolicyType("Firewall");
469         pep.setDeleteCondition(null);
470         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
471                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
472                 .andExpect(status().isBadRequest());
473         pep.setPolicyComponent("PAP");
474         pep.setDeleteCondition(DeletePolicyCondition.ONE);
475         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
476                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
477                 .andExpect(status().isBadRequest());
478         pep.setPolicyComponent("fail");
479         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
480                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
481                 .andExpect(status().isBadRequest());
482         pep.setPolicyComponent("PDP");
483         pep.setPolicyName("testscope.policyName");
484         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
485                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
486                 .andExpect(status().isBadRequest());
487         pep.setPolicyComponent(null);
488         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
489                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
490                 .andExpect(status().isBadRequest());
491         pep.setPolicyComponent("PDP");
492         pep.setPolicyName("com.test1,com.test2");
493         pep.setPolicyType("Base,Base");
494         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
495                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
496                 .andExpect(status().isBadRequest());
497         pep.setPolicyName("com.test1,com.test2");
498         pep.setPolicyType("Base,Base,  ");
499         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
500                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
501                 .andExpect(status().isBadRequest());
502         pep.setPolicyName("com.test1,com.test2,  ");
503         pep.setPolicyType("Base,Base,  ");
504         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
505                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
506                 .andExpect(status().isBadRequest());
507         pep.setPolicyComponent("PAP");
508         pep.setPolicyName("com.test1,com.test2");
509         pep.setPolicyType("Base,Base");
510         mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep))
511                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
512                 .andExpect(status().isBadRequest());
513     }
514
515     @Test
516     public void createUpdatePolicyTest() throws Exception {
517         PolicyParameters pep = new PolicyParameters();
518         // Failure Tests.
519         mockMvc.perform(put("/createPolicy")).andExpect(status().isBadRequest());
520         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
521                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
522                 .andExpect(status().isUnauthorized());
523         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
524                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
525                 .andExpect(status().isUnauthorized());
526         // Service Tests.
527         setCreateUpdateImpl();
528         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
529                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
530                 .andExpect(status().isBadRequest());
531         pep.setPolicyName("failName");
532         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
533                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "test 123"))
534                 .andExpect(status().isBadRequest());
535         pep.setPolicyName("test. name");
536         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
537                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
538         pep.setPolicyName("   ");
539         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
540                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
541                 .andExpect(status().isBadRequest());
542         pep.setPolicyName("test. ");
543         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
544                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
545                 .andExpect(status().isBadRequest());
546         pep.setPolicyName("te st.name");
547         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
548                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
549                 .andExpect(status().isBadRequest());
550         pep.setPolicyName("test.name");
551         pep.setPolicyDescription("testá");
552         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
553                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
554                 .andExpect(status().isBadRequest());
555         pep.setPolicyName("test.name");
556         pep.setPolicyDescription("good");
557         pep.setTtlDate(new Date());
558         pep.setRequestID(UUID.randomUUID());
559         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
560                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
561     }
562
563     @Test
564     public void brmsPolicyCreationTests() throws Exception {
565         PolicyParameters pep = new PolicyParameters();
566         pep.setPolicyName("test.name");
567         pep.setPolicyDescription("good");
568         pep.setTtlDate(new Date());
569         pep.setRequestID(UUID.randomUUID());
570         setCreateUpdateImpl();
571         // Checks for BRMS Param Policy.
572         pep.setPolicyConfigType(PolicyConfigType.BRMS_PARAM);
573         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
574                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
575         pep.setRiskLevel("test");
576         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
577                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
578         Map<AttributeType, Map<String, String>> attributes = new HashMap<>();
579         Map<String, String> matching = new HashMap<>();
580         matching.put("key", "value");
581         attributes.put(AttributeType.MATCHING, matching);
582         pep.setAttributes(attributes);
583         pep.setRiskLevel("5");
584         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
585                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
586         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
587                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
588         // Checks for BRMS Raw Policy
589         pep.setPolicyConfigType(PolicyConfigType.BRMS_RAW);
590         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
591                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
592         pep.setConfigBody("test");
593         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
594                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
595         pep.setRiskLevel(null);
596         pep.setConfigBody("package droolsexample\n\n import com.sample.ItemCity;\nimport java.math.BigDecimal;\n"
597                 + "rule \"Nagpur Medicine Item\"\n\n   when\n"
598                 + "      item : ItemCity(purchaseCity == ItemCity.City.NAGPUR,\n"
599                 + "         typeofItem == ItemCity.Type.MEDICINES)\n   then\n"
600                 + "      BigDecimal tax = new BigDecimal(0.0);\n"
601                 + "      item.setLocalTax(tax.multiply(item.getSellPrice()));\nend");
602         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
603                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
604         pep.setRiskLevel("5");
605         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
606                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
607         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
608                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
609     }
610
611     @Test
612     public void baseConfigTests() throws Exception {
613         PolicyParameters pep = new PolicyParameters();
614         pep.setPolicyName("test.name");
615         pep.setPolicyDescription("good");
616         pep.setTtlDate(new Date());
617         pep.setRequestID(UUID.randomUUID());
618         setCreateUpdateImpl();
619         // Checks for Base config Policy.
620         pep.setPolicyConfigType(PolicyConfigType.Base);
621         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
622                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
623         pep.setConfigBody("testbody");
624         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
625                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
626         pep.setConfigBodyType(PolicyType.OTHER);
627         pep.setRiskLevel("test");
628         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
629                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
630         pep.setRiskLevel("4");
631         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
632                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
633         pep.setOnapName("ec nam-e");
634         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
635                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
636         pep.setOnapName("onapName");
637         pep.setConfigName("tes config");
638         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
639                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
640         pep.setConfigName("configName");
641         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
642                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
643         pep.setConfigBody("{'test':'test}");
644         pep.setConfigBodyType(PolicyType.JSON);
645         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
646                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
647         Map<AttributeType, Map<String, String>> attributes = new HashMap<>();
648         Map<String, String> matching = new HashMap<>();
649         matching.put("key", "value");
650         attributes.put(AttributeType.MATCHING, matching);
651         pep.setAttributes(attributes);
652         pep.setConfigBody("testBody");
653         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
654                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
655     }
656
657     @Test
658     public void closedLoopPolicyTests() throws Exception {
659         PolicyParameters pep = new PolicyParameters();
660         pep.setPolicyName("test.name");
661         pep.setPolicyDescription("good");
662         pep.setTtlDate(new Date());
663         pep.setRequestID(UUID.randomUUID());
664         setCreateUpdateImpl();
665         // Checks for Closed loop Policy.
666         pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_Fault);
667         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
668                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
669         pep.setConfigBody("te stá");
670         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
671                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
672         pep.setConfigBody("testBody");
673         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
674                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
675         pep.setConfigBody("{\"key\":\"value\"}");
676         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
677                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
678         pep.setConfigBody("{\"onapname\":\"\"}");
679         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
680                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
681         pep.setConfigBody("{\"onapname\":\"test\"}");
682         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
683                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
684         pep.setRiskLevel("test");
685         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
686                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
687         pep.setRiskLevel("4");
688         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
689                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
690         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
691                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
692     }
693
694     @Test
695     public void closedLoopPMTests() throws Exception {
696         PolicyParameters pep = new PolicyParameters();
697         pep.setPolicyName("test.name");
698         pep.setPolicyDescription("good");
699         pep.setTtlDate(new Date());
700         pep.setRequestID(UUID.randomUUID());
701         setCreateUpdateImpl();
702         // Checks for Closed loop Policy.
703         pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_PM);
704         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
705                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
706         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
707                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
708         pep.setConfigBody("te stá");
709         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
710                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
711         pep.setConfigBody("testBody");
712         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
713                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
714         pep.setConfigBody("{\"key\":\"value\"}");
715         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
716                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
717         pep.setConfigBody("{\"onapname\":\"\"}");
718         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
719                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
720         pep.setConfigBody("{\"onapname\":\"test\"}");
721         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
722                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
723         pep.setConfigBody("{\"onapname\":\"test\", \"serviceTypePolicyName\":\"value\"}");
724         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
725                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
726         pep.setRiskLevel("test");
727         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
728                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
729         pep.setRiskLevel("4");
730         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
731                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
732         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
733                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
734     }
735
736     @Test
737     public void firewallPolicyTests() throws Exception {
738         PolicyParameters pep = new PolicyParameters();
739         pep.setPolicyName("test.name");
740         pep.setPolicyDescription("good");
741         pep.setTtlDate(new Date());
742         pep.setRequestID(UUID.randomUUID());
743         setCreateUpdateImpl();
744         // Checks for Closed loop Policy.
745         pep.setPolicyConfigType(PolicyConfigType.Firewall);
746         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
747                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
748         pep.setConfigBody("te st");
749         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
750                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
751         pep.setConfigBody("{}");
752         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
753                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
754         pep.setConfigBody("{\"test\":\"test\"}");
755         pep.setRiskLevel("test");
756         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
757                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
758         pep.setRiskLevel("4");
759         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
760                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
761         pep.setConfigBody("{\"configName\":\"test\"}");
762         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
763                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
764         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
765                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
766     }
767
768     @Test
769     public void microServicePolicyTests() throws Exception {
770         PolicyParameters pep = new PolicyParameters();
771         pep.setPolicyName("test.name");
772         pep.setPolicyDescription("good");
773         pep.setTtlDate(new Date());
774         pep.setRequestID(UUID.randomUUID());
775         setCreateUpdateImpl();
776         // Checks for Closed loop Policy.
777         pep.setPolicyConfigType(PolicyConfigType.MicroService);
778         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
779                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
780         pep.setConfigBody("te st");
781         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
782                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
783         pep.setConfigBody("{}");
784         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
785                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
786         pep.setConfigBody("{\"test\":\"test\"}");
787         pep.setOnapName("   ");
788         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
789                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
790         pep.setOnapName("testonap");
791         pep.setRiskLevel("fail");
792         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
793                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
794         pep.setRiskLevel("4");
795         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
796                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
797         pep.setConfigBody("{\"service\":\"test\",\"uuid\":\"test\",\"location\":\"test\",\"configName\":\"test\","
798                 + "\"description\":\"test\",\"priority\":\"test\",\"version\":\"test\"}");
799         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
800                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
801     }
802
803     @Test
804     public void actionDecisionPolicyCreationTests() throws Exception {
805         PolicyParameters pep = new PolicyParameters();
806         pep.setPolicyName("test.name");
807         pep.setPolicyDescription("good");
808         pep.setTtlDate(new Date());
809         pep.setRequestID(UUID.randomUUID());
810         setCreateUpdateImpl();
811         // Checks for action Policy.
812         pep.setPolicyClass(PolicyClass.Action);
813         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
814                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
815         Map<AttributeType, Map<String, String>> attributes = new HashMap<>();
816         pep.setAttributes(attributes);
817         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
818                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
819         attributes.put(AttributeType.MATCHING, new HashMap<>());
820         pep.setAttributes(attributes);
821         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
822                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
823         Map<String, String> matching = new HashMap<>();
824         matching.put("key", "value");
825         attributes.put(AttributeType.MATCHING, matching);
826         pep.setAttributes(attributes);
827         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
828                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
829         pep.setActionAttribute("A1");
830         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
831                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
832         pep.setActionPerformer("PEX");
833         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
834                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
835         pep.setActionPerformer("PEP");
836         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
837                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
838         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
839                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
840         // Checks for Decision Policy.
841         pep.setPolicyClass(PolicyClass.Decision);
842         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
843                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
844         pep.setOnapName("xyz");
845         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
846                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
847         attributes.remove(AttributeType.MATCHING);
848         attributes.put(AttributeType.SETTINGS, matching);
849         pep.setAttributes(attributes);
850         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
851                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
852         attributes.put(AttributeType.MATCHING, matching);
853         pep.setAttributes(attributes);
854         mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep))
855                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
856         mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep))
857                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
858     }
859
860     @Test
861     public void createUpdateDictionaryTests() throws Exception {
862         DictionaryParameters pep = new DictionaryParameters();
863         // Failure Tests.
864         mockMvc.perform(put("/createDictionaryItem")).andExpect(status().isBadRequest());
865         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
866                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
867                 .andExpect(status().isUnauthorized());
868         mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
869                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
870                 .andExpect(status().isUnauthorized());
871         // Service Tests.
872         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
873                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
874                 .andExpect(status().isBadRequest());
875         pep.setDictionaryType(DictionaryType.MicroService);
876         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
877                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
878         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
879                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
880                 .andExpect(status().isBadRequest());
881         pep.setDictionary("test dict");
882         pep.setRequestID(UUID.randomUUID());
883         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
884                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
885         pep.setDictionaryJson("{\"test\":\"value\"}");
886         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
887                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, UUID.randomUUID()))
888                 .andExpect(status().isBadRequest());
889         pep.setDictionaryJson("test123");
890         mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
891                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "123"))
892                 .andExpect(status().isBadRequest());
893         pep.setDictionary("MicroServiceDictionary");
894         mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep))
895                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
896     }
897
898     @Test
899     public void getDictionaryTests() throws Exception {
900         DictionaryParameters pep = new DictionaryParameters();
901         // Failure Tests.
902         mockMvc.perform(post("/getDictionaryItems")).andExpect(status().isBadRequest());
903         mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep))
904                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
905                 .andExpect(status().isUnauthorized());
906         // Service Tests.
907         mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep))
908                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
909                 .andExpect(status().isBadRequest());
910         pep.setDictionaryType(DictionaryType.Common);
911         mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep))
912                 .contentType(MediaType.APPLICATION_JSON).headers(headers)
913                 .header(UUIDHEADER, UUID.randomUUID().toString())).andExpect(status().isBadRequest());
914         pep.setDictionary("OnapName");
915         mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep))
916                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
917         pep.setRequestID(UUID.randomUUID());
918         mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep))
919                 .contentType(MediaType.APPLICATION_JSON).headers(headers)).andExpect(status().isBadRequest());
920     }
921
922     @Test
923     public void policyEngineImportTests() throws Exception {
924         // Failure Tests.
925         mockMvc.perform(post("/policyEngineImport")).andExpect(status().isBadRequest());
926     }
927
928     @Test
929     public void oldConfigAPITests() throws Exception {
930         ConfigPolicyAPIRequest pep = new ConfigPolicyAPIRequest();
931         // Failure Tests.
932         mockMvc.perform(put("/createConfig")).andExpect(status().isBadRequest());
933         mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep))
934                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
935                 .andExpect(status().isUnauthorized());
936         mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep))
937                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
938                 .andExpect(status().isUnauthorized());
939         // Service Tests.
940         mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep))
941                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
942                 .andExpect(status().isBadRequest());
943         pep.setPolicyScope("test");
944         mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep))
945                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
946                 .andExpect(status().isBadRequest());
947         pep.setPolicyName("name");
948         mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep))
949                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
950                 .andExpect(status().isBadRequest());
951         pep.setConfigType("OTHER");
952         mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep))
953                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
954                 .andExpect(status().isBadRequest());
955         pep.setTtlDate(new Date().toString());
956         mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep))
957                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
958                 .andExpect(status().isBadRequest());
959     }
960
961     @Test
962     public void oldFirewallAPITests() throws Exception {
963         ConfigFirewallPolicyAPIRequest pep = new ConfigFirewallPolicyAPIRequest();
964         // Failure Tests.
965         mockMvc.perform(put("/createFirewallConfig")).andExpect(status().isBadRequest());
966         mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
967                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
968                 .andExpect(status().isUnauthorized());
969         mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
970                 .contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
971                 .andExpect(status().isUnauthorized());
972         // Service Tests.
973         mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
974                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
975                 .andExpect(status().isBadRequest());
976         pep.setPolicyScope("test");
977         mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
978                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
979                 .andExpect(status().isBadRequest());
980         pep.setPolicyName("name");
981         mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
982                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
983                 .andExpect(status().isBadRequest());
984         pep.setTtlDate(new Date().toString());
985         mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep))
986                 .contentType(MediaType.APPLICATION_JSON).headers(headers).header(UUIDHEADER, "tes123"))
987                 .andExpect(status().isBadRequest());
988     }
989
990     private void setCreateUpdateImpl() throws NoSuchMethodException, SecurityException, IllegalAccessException,
991             IllegalArgumentException, InvocationTargetException {
992         Method setter = XACMLPdpServlet.class.getDeclaredMethod("setCreateUpdatePolicyConstructor", String.class);
993         setter.setAccessible(true);
994         setter.invoke(new XACMLPdpServlet(), CreateUpdatePolicyServiceImpl.class.getName());
995     }
996
997     // Health Check Tests
998     @Test
999     public void getCountTest() throws Exception {
1000         mockMvc.perform(get("/count")).andExpect(status().isOk());
1001     }
1002 }