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