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