Fixes for sonar critical issues
[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 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
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
37 import org.junit.Before;
38 import org.junit.Test;
39 import org.junit.runner.RunWith;
40 import org.onap.policy.api.AttributeType;
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.ConfigNameRequest;
56 import org.onap.policy.pdp.rest.api.models.ConfigPolicyAPIRequest;
57 import org.onap.policy.pdp.rest.api.services.CreateUpdatePolicyServiceImpl;
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 import com.att.research.xacml.util.XACMLProperties;
70
71 @RunWith(SpringJUnit4ClassRunner.class)
72 @ContextConfiguration(classes = {PDPRestConfig.class})
73 @WebAppConfiguration
74 public class PolicyEngineServicesTest {
75         private static final String CLIENTAUTHHEADER = "ClientAuth";
76         private static final String UUIDHEADER = "X-ECOMP-RequestID";
77         // This value is as per test resource code. Don't change this. 
78         private static final String CLIENTAUTHVALUE = "Basic cHl0aG9uOnRlc3Q=";
79         private static final String ERRORCLIENTVALUE = "Basic dGVzdDp0ZXN0MTIz";
80         
81         private MockMvc mockMvc;
82         private HttpHeaders headers;
83         
84         @Autowired
85         private WebApplicationContext webApplicationContext;
86         
87         @Before()
88         public void setup() throws IOException{
89                 headers = new HttpHeaders();
90                 headers.add(CLIENTAUTHHEADER, CLIENTAUTHVALUE);
91                 XACMLProperties.reloadProperties();
92                 System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/pass.xacml.pdp.properties");
93                 XACMLProperties.getProperties();
94                 this.mockMvc = webAppContextSetup(webApplicationContext).build();
95         }
96         
97         @Test
98         public void getConfigAPIFailureTest() throws Exception{
99                 ConfigRequestParameters pep = new ConfigRequestParameters();
100                 pep.setPolicyName(".*");
101                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON))
102                                 .andExpect(status().is(400));
103                 // Authorization tests. 
104                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
105                                 .andExpect(status().isUnauthorized());
106                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123"))
107                                 .andExpect(status().isUnauthorized());
108                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ERRORCLIENTVALUE))
109                                 .andExpect(status().isUnauthorized());
110                 // Set wrong request. 
111                 pep.setPolicyName(null);
112                 pep.setConfigName("test");
113                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers).header(UUIDHEADER, "123").contentType(MediaType.APPLICATION_JSON))
114                 .andExpect(status().isBadRequest());
115         }
116         
117         @Test
118         public void getConfigServiceTest() throws Exception{
119                 ConfigRequestParameters pep = new ConfigRequestParameters();
120                 pep.setPolicyName(".*");
121                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers).header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
122                                 .andExpect(status().isOk());
123                 // Without policyName and using onapName and other fields. 
124                 pep.setPolicyName(null);
125                 pep.setOnapName("test");
126                 pep.setConfigName("test");
127                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers).contentType(MediaType.APPLICATION_JSON))
128                 .andExpect(status().isOk());
129                 // with config attributes. 
130                 Map<String, String> configAttributes = new HashMap<>();
131                 configAttributes.put("test", "test");
132                 pep.setConfigAttributes(configAttributes);
133                 pep.makeUnique(true);
134                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers).contentType(MediaType.APPLICATION_JSON))
135                 .andExpect(status().isOk());
136         }
137         
138         @Test
139         public void getConfigByPolicyNameTest() throws Exception{
140                 ConfigNameRequest pep = new ConfigNameRequest();
141                 pep.setPolicyName(".*");
142                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON))
143                 .andExpect(status().is(400));
144                 // Authorization tests. 
145                 mockMvc.perform(post("/getConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
146                 .andExpect(status().isUnauthorized());
147                 mockMvc.perform(post("/getConfigByPolicyName").content(PolicyUtils.objectToJsonString(pep)).headers(headers).header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
148                                 .andExpect(status().isOk());
149         }
150         
151         @Test
152         public void listConfigTest() throws Exception{
153                 ConfigRequestParameters pep = new ConfigRequestParameters();
154                 pep.setPolicyName(".*");
155                 mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON))
156                 .andExpect(status().is(400));
157                 // Authorization tests. 
158                 mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, ""))
159                 .andExpect(status().isUnauthorized());
160                 mockMvc.perform(post("/listConfig").content(PolicyUtils.objectToJsonString(pep)).headers(headers).header(UUIDHEADER, UUID.randomUUID()).contentType(MediaType.APPLICATION_JSON))
161                                 .andExpect(status().isOk());
162         }
163         
164         @Test
165         public void getMetricsTest() throws Exception{
166                 //Failure Tests. 
167                 mockMvc.perform(get("/getMetrics")).andExpect(status().isBadRequest());
168                 mockMvc.perform(get("/getMetrics").header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
169                 //Service Tests. 
170                 mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, "123")).andExpect(status().isOk());
171                 mockMvc.perform(get("/getMetrics").headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isOk());
172                 mockMvc.perform(get("/getMetrics").headers(headers)).andExpect(status().isOk());
173         }
174         
175         @Test
176         public void getNotificationAuthFailureTest() throws Exception{
177                 mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "").content("test")).andExpect(status().isUnauthorized());
178                 mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, "Basic test123").content("test")).andExpect(status().isUnauthorized());
179                 mockMvc.perform(post("/getNotification").header(CLIENTAUTHHEADER, ERRORCLIENTVALUE).content(" ")).andExpect(status().isUnauthorized());
180         }
181         
182         @Test
183         public void getNotificationTopicFailureTest() throws Exception{
184                 mockMvc.perform(post("/getNotification")).andExpect(status().isBadRequest());
185                 mockMvc.perform(post("/getNotification").headers(headers).content("")).andExpect(status().isBadRequest());
186         }
187         
188         @Test
189         public void getNotificationTopicValidFailTest() throws Exception{
190                 // Check failures. 
191                 mockMvc.perform(post("/getNotification").headers(headers).content(" ")).andExpect(status().isBadRequest());
192                 mockMvc.perform(post("/stopNotification").headers(headers).content(" ")).andExpect(status().isBadRequest());
193                 mockMvc.perform(post("/sendHeartbeat").headers(headers).content(" ")).andExpect(status().isBadRequest()); 
194         }
195         
196         @Test
197         public void getNotificationTopicValidPassTest() throws Exception{
198             XACMLProperties.reloadProperties();
199         System.setProperty(XACMLProperties.XACML_PROPERTIES_NAME, "src/test/resources/notification.xacml.pdp.properties");
200         XACMLProperties.getProperties();
201                 // Add a Topic. 
202                 mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, "123").content("test")).andExpect(status().isOk());
203                 // Try to add same topic should fail.  
204                 mockMvc.perform(post("/getNotification").headers(headers).header(UUIDHEADER, UUID.randomUUID()).content("test")).andExpect(status().isBadRequest());
205                 // do a heart beat. 
206                 mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isOk());
207                 // remove the added Topic. 
208                 mockMvc.perform(post("/stopNotification").headers(headers).content("test")).andExpect(status().isOk());
209                 // try to remove again should fail. 
210                 mockMvc.perform(post("/sendHeartbeat").headers(headers).content("test")).andExpect(status().isBadRequest());
211         }
212         
213         @Test
214         public void sendEventTest() throws Exception{
215                 EventRequestParameters pep = new EventRequestParameters();
216                 Map<String,String> eventAttributes = new HashMap<>();
217                 eventAttributes.put("TEST", "test");
218                 pep.setEventAttributes(eventAttributes);
219                 //Failure Tests. 
220                 mockMvc.perform(post("/sendEvent")).andExpect(status().isBadRequest());
221                 mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
222                 //Service Tests. 
223                 mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
224                                 .headers(headers).header(UUIDHEADER, "123")).andExpect(status().isOk());
225                 pep.setEventAttributes(null);
226                 mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
227                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
228                 pep.setEventAttributes(eventAttributes);
229                 mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
230                                 .headers(headers)).andExpect(status().isOk());
231                 pep.setEventAttributes(eventAttributes);
232                 pep.setRequestID(UUID.randomUUID());
233                 mockMvc.perform(post("/sendEvent").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
234                                 .headers(headers)).andExpect(status().isOk());
235         }
236         
237         @Test
238         public void getDecisionTest() throws Exception{
239                 DecisionRequestParameters pep = new DecisionRequestParameters();
240                 Map<String,String> eventAttributes = new HashMap<>();
241                 eventAttributes.put("TEST", "test");
242                 pep.setOnapName("te123");
243                 pep.setDecisionAttributes(eventAttributes);
244                 //Failure Tests. 
245                 mockMvc.perform(post("/getDecision")).andExpect(status().isBadRequest());
246                 mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
247                 //Service Tests. 
248                 mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
249                                 .headers(headers).header(UUIDHEADER, "123")).andExpect(status().isOk());
250                 pep.setDecisionAttributes(null);
251                 pep.setOnapName(null);
252                 mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
253                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
254                 pep.setOnapName("testing");
255                 mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
256                                 .headers(headers)).andExpect(status().isBadRequest());
257                 pep.setDecisionAttributes(eventAttributes);
258                 pep.setRequestID(UUID.randomUUID());
259                 mockMvc.perform(post("/getDecision").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
260                                 .headers(headers)).andExpect(status().isOk());
261         }
262         
263         @Test
264         public void pushPolicyTest() throws Exception{
265                 PushPolicyParameters pep = new PushPolicyParameters();
266                 //Failure Tests. 
267                 mockMvc.perform(put("/pushPolicy")).andExpect(status().isBadRequest());
268                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
269                 //Service Tests. 
270                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
271                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
272                 pep.setPolicyName("scopeless");
273                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
274                                 .headers(headers)).andExpect(status().isBadRequest());
275                 pep.setPolicyName("testing.test");
276                 pep.setPolicyType("wrong");
277                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
278                                 .headers(headers)).andExpect(status().isBadRequest());
279                 pep.setPolicyType("BRMS_PARAM");
280                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
281                                 .headers(headers)).andExpect(status().isBadRequest());
282                 pep.setPolicyType("BRMS_RAW");
283                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
284                                 .headers(headers)).andExpect(status().isBadRequest());
285                 pep.setPolicyType("MicroService");
286                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
287                                 .headers(headers)).andExpect(status().isBadRequest());
288                 pep.setPolicyType("ClosedLoop_PM");
289                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
290                                 .headers(headers)).andExpect(status().isBadRequest());
291                 pep.setPolicyType("ClosedLoop_Fault");
292                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
293                                 .headers(headers)).andExpect(status().isBadRequest());
294                 pep.setPolicyType("Base");
295                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
296                                 .headers(headers)).andExpect(status().isBadRequest());
297                 pep.setPolicyType("Decision");
298                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
299                                 .headers(headers)).andExpect(status().isBadRequest());
300                 pep.setPolicyType("Action");
301                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
302                                 .headers(headers)).andExpect(status().isBadRequest());
303                 pep.setPolicyType("Firewall");
304                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
305                                 .headers(headers)).andExpect(status().isBadRequest());
306                 pep.setPdpGroup("default");
307                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
308                                 .headers(headers).header(UUIDHEADER, "123")).andExpect(status().isBadRequest());
309                 pep.setRequestID(UUID.randomUUID());
310                 mockMvc.perform(put("/pushPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
311                                 .headers(headers)).andExpect(status().isBadRequest());
312         }
313         
314         @Test
315         public void deletePolicyTest() throws Exception{
316                 DeletePolicyParameters pep = new DeletePolicyParameters();
317                 //Failure Tests. 
318                 mockMvc.perform(delete("/deletePolicy")).andExpect(status().isBadRequest());
319                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
320                 //Service Tests. 
321                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
322                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
323                 pep.setPolicyName("testing");
324                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
325                                 .headers(headers).header(UUIDHEADER, "test123")).andExpect(status().isBadRequest());
326                 pep.setPolicyName("testscope.name");
327                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
328                                 .headers(headers)).andExpect(status().isBadRequest());
329                 pep.setPolicyName("testscope.name");
330                 pep.setPolicyType("wrong");
331                 pep.setRequestID(UUID.randomUUID());
332                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
333                                 .headers(headers)).andExpect(status().isBadRequest());
334                 pep.setPolicyType("BRMS_PARAM");
335                 pep.setPolicyComponent("wrong");
336                 pep.setRequestID(null);
337                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
338                                 .headers(headers)).andExpect(status().isBadRequest());
339                 pep.setPolicyType("BRMS_RAW");
340                 pep.setPolicyComponent("PDP");
341                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
342                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
343                 pep.setPolicyType("MicroService");
344                 pep.setPolicyComponent("PAP");
345                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
346                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
347                 pep.setPolicyType("ClosedLoop_PM");
348                 pep.setPolicyComponent("PDP");
349                 pep.setDeleteCondition(DeletePolicyCondition.ALL);
350                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
351                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
352                 pep.setPolicyType("ClosedLoop_Fault");
353                 pep.setDeleteCondition(DeletePolicyCondition.ONE);
354                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
355                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
356                 pep.setPolicyType("Base");
357                 pep.setPolicyComponent("PAP");
358                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
359                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
360                 pep.setPolicyType("Decision");
361                 pep.setPolicyComponent("PDP");
362                 pep.setPolicyName("test.xml");
363                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
364                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
365                 pep.setPolicyType("Action");
366                 pep.setPolicyName("scope.Config_test.xml");
367                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
368                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
369                 pep.setPdpGroup("default");
370                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
371                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
372                 pep.setPolicyComponent("PAP");
373                 pep.setPolicyType("Firewall");
374                 pep.setDeleteCondition(null);
375                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
376                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
377                 pep.setPolicyComponent("PAP");
378                 pep.setDeleteCondition(DeletePolicyCondition.ONE);
379                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
380                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
381                 pep.setPolicyComponent("fail");
382                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
383                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
384                 pep.setPolicyComponent("PDP");
385                 pep.setPolicyName("testscope.policyName");
386                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
387                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
388                 pep.setPolicyComponent(null);
389                 mockMvc.perform(delete("/deletePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
390                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
391         }
392         
393         @Test
394         public void createUpdatePolicyTest() throws Exception{
395                 PolicyParameters pep = new PolicyParameters();
396                 //Failure Tests. 
397                 mockMvc.perform(put("/createPolicy")).andExpect(status().isBadRequest());
398                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
399                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
400                 //Service Tests. 
401                 setCreateUpdateImpl();
402                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
403                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
404                 pep.setPolicyName("failName");
405                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
406                                 .headers(headers).header(UUIDHEADER, "test 123")).andExpect(status().isBadRequest());
407                 pep.setPolicyName("test. name");
408                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
409                                 .headers(headers)).andExpect(status().isBadRequest());
410                 pep.setPolicyName("   ");
411                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
412                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
413                 pep.setPolicyName("test. ");
414                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
415                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
416                 pep.setPolicyName("te st.name");
417                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
418                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
419                 pep.setPolicyName("test.name");
420                 pep.setPolicyDescription("testá");
421                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
422                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
423                 pep.setPolicyName("test.name");
424                 pep.setPolicyDescription("good");
425                 pep.setTtlDate(new Date());
426                 pep.setRequestID(UUID.randomUUID());
427                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
428                                 .headers(headers)).andExpect(status().isBadRequest());
429         }
430         
431         @Test
432         public void brmsPolicyCreationTests() throws Exception{
433                 PolicyParameters pep = new PolicyParameters();
434                 pep.setPolicyName("test.name");
435                 pep.setPolicyDescription("good");
436                 pep.setTtlDate(new Date());
437                 pep.setRequestID(UUID.randomUUID());
438                 setCreateUpdateImpl();
439                 // Checks for BRMS Param Policy. 
440                 pep.setPolicyConfigType(PolicyConfigType.BRMS_PARAM);
441                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
442                                 .headers(headers)).andExpect(status().isBadRequest());
443                 pep.setRiskLevel("test");
444                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
445                                 .headers(headers)).andExpect(status().isBadRequest());
446                 Map<AttributeType, Map<String,String>> attributes = new HashMap<>();
447                 Map<String,String> matching = new HashMap<>();
448                 matching.put("key", "value");
449                 attributes.put(AttributeType.MATCHING, matching);
450                 pep.setAttributes(attributes);
451                 pep.setRiskLevel("5");
452                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
453                                 .headers(headers)).andExpect(status().isInternalServerError());
454                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
455                                 .headers(headers)).andExpect(status().isInternalServerError());
456                 // Checks for BRMS Raw Policy
457                 pep.setPolicyConfigType(PolicyConfigType.BRMS_RAW);
458                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
459                                 .headers(headers)).andExpect(status().isBadRequest());
460                 pep.setConfigBody("test");
461                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
462                                 .headers(headers)).andExpect(status().isBadRequest());
463                 pep.setRiskLevel(null);
464                 pep.setConfigBody("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");
465                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
466                                 .headers(headers)).andExpect(status().isBadRequest());
467                 pep.setRiskLevel("5");
468                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
469                                 .headers(headers)).andExpect(status().isInternalServerError());
470                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
471                                 .headers(headers)).andExpect(status().isInternalServerError());
472         }
473         
474         @Test
475         public void baseConfigTests() throws Exception{
476                 PolicyParameters pep = new PolicyParameters();
477                 pep.setPolicyName("test.name");
478                 pep.setPolicyDescription("good");
479                 pep.setTtlDate(new Date());
480                 pep.setRequestID(UUID.randomUUID());
481                 setCreateUpdateImpl();
482                 // Checks for Base config Policy. 
483                 pep.setPolicyConfigType(PolicyConfigType.Base);
484                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
485                                 .headers(headers)).andExpect(status().isBadRequest());
486                 pep.setConfigBody("testbody");
487                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
488                                 .headers(headers)).andExpect(status().isBadRequest());
489                 pep.setConfigBodyType(PolicyType.OTHER);
490                 pep.setRiskLevel("test");
491                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
492                                 .headers(headers)).andExpect(status().isBadRequest());
493                 pep.setRiskLevel("4");
494                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
495                                 .headers(headers)).andExpect(status().isBadRequest());
496                 pep.setOnapName("ec nam-e");
497                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
498                                 .headers(headers)).andExpect(status().isBadRequest());
499                 pep.setOnapName("onapName");
500                 pep.setConfigName("tes config");
501                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
502                                 .headers(headers)).andExpect(status().isBadRequest());
503                 pep.setConfigName("configName");
504                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
505                                 .headers(headers)).andExpect(status().isInternalServerError());
506                 pep.setConfigBody("{'test':'test}");
507                 pep.setConfigBodyType(PolicyType.JSON);
508                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
509                                 .headers(headers)).andExpect(status().isInternalServerError());
510                 Map<AttributeType, Map<String,String>> attributes = new HashMap<>();
511                 Map<String,String> matching = new HashMap<>();
512                 matching.put("key", "value");
513                 attributes.put(AttributeType.MATCHING, matching);
514                 pep.setAttributes(attributes);
515                 pep.setConfigBody("testBody");
516                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
517                                 .headers(headers)).andExpect(status().isInternalServerError());
518         }
519         
520         @Test
521         public void closedLoopPolicyTests() throws Exception{
522                 PolicyParameters pep = new PolicyParameters();
523                 pep.setPolicyName("test.name");
524                 pep.setPolicyDescription("good");
525                 pep.setTtlDate(new Date());
526                 pep.setRequestID(UUID.randomUUID());
527                 setCreateUpdateImpl();
528                 // Checks for Closed loop Policy. 
529                 pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_Fault);
530                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
531                                 .headers(headers)).andExpect(status().isBadRequest());
532                 pep.setConfigBody("te stá");
533                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
534                                 .headers(headers)).andExpect(status().isBadRequest());
535                 pep.setConfigBody("testBody");
536                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
537                                 .headers(headers)).andExpect(status().isBadRequest());
538                 pep.setConfigBody("{\"key\":\"value\"}");
539                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
540                                 .headers(headers)).andExpect(status().isBadRequest());
541                 pep.setConfigBody("{\"onapname\":\"\"}");
542                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
543                                 .headers(headers)).andExpect(status().isBadRequest());
544                 pep.setConfigBody("{\"onapname\":\"test\"}");
545                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
546                                 .headers(headers)).andExpect(status().isInternalServerError());
547                 pep.setRiskLevel("test");
548                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
549                                 .headers(headers)).andExpect(status().isBadRequest());
550                 pep.setRiskLevel("4");
551                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
552                                 .headers(headers)).andExpect(status().isInternalServerError());
553                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
554                                 .headers(headers)).andExpect(status().isInternalServerError());
555         }
556         
557         @Test
558         public void closedLoopPMTests() throws Exception{
559                 PolicyParameters pep = new PolicyParameters();
560                 pep.setPolicyName("test.name");
561                 pep.setPolicyDescription("good");
562                 pep.setTtlDate(new Date());
563                 pep.setRequestID(UUID.randomUUID());
564                 setCreateUpdateImpl();
565                 // Checks for Closed loop Policy. 
566                 pep.setPolicyConfigType(PolicyConfigType.ClosedLoop_PM);
567                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
568                                 .headers(headers)).andExpect(status().isBadRequest());
569                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
570                                 .headers(headers)).andExpect(status().isBadRequest());
571                 pep.setConfigBody("te stá");
572                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
573                                 .headers(headers)).andExpect(status().isBadRequest());
574                 pep.setConfigBody("testBody");
575                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
576                                 .headers(headers)).andExpect(status().isBadRequest());
577                 pep.setConfigBody("{\"key\":\"value\"}");
578                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
579                                 .headers(headers)).andExpect(status().isBadRequest());
580                 pep.setConfigBody("{\"onapname\":\"\"}");
581                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
582                                 .headers(headers)).andExpect(status().isBadRequest());
583                 pep.setConfigBody("{\"onapname\":\"test\"}");
584                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
585                                 .headers(headers)).andExpect(status().isBadRequest());
586                 pep.setConfigBody("{\"onapname\":\"test\", \"serviceTypePolicyName\":\"value\"}");
587                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
588                                 .headers(headers)).andExpect(status().isInternalServerError());
589                 pep.setRiskLevel("test");
590                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
591                                 .headers(headers)).andExpect(status().isBadRequest());
592                 pep.setRiskLevel("4");
593                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
594                                 .headers(headers)).andExpect(status().isInternalServerError());
595                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
596                                 .headers(headers)).andExpect(status().isInternalServerError());
597         }
598         
599         @Test
600         public void firewallPolicyTests() throws Exception{
601                 PolicyParameters pep = new PolicyParameters();
602                 pep.setPolicyName("test.name");
603                 pep.setPolicyDescription("good");
604                 pep.setTtlDate(new Date());
605                 pep.setRequestID(UUID.randomUUID());
606                 setCreateUpdateImpl();
607                 // Checks for Closed loop Policy. 
608                 pep.setPolicyConfigType(PolicyConfigType.Firewall);
609                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
610                                 .headers(headers)).andExpect(status().isBadRequest());
611                 pep.setConfigBody("te st");
612                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
613                                 .headers(headers)).andExpect(status().isBadRequest());
614                 pep.setConfigBody("{}");
615                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
616                                 .headers(headers)).andExpect(status().isBadRequest());
617                 pep.setConfigBody("{\"test\":\"test\"}");
618                 pep.setRiskLevel("test");
619                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
620                                 .headers(headers)).andExpect(status().isBadRequest());
621                 pep.setRiskLevel("4");
622                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
623                                 .headers(headers)).andExpect(status().isBadRequest());
624                 pep.setConfigBody("{\"configName\":\"test\"}");
625                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
626                                 .headers(headers)).andExpect(status().isInternalServerError());
627                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
628                                 .headers(headers)).andExpect(status().isInternalServerError());
629         }
630         
631         @Test
632         public void microServicePolicyTests() throws Exception{
633                 PolicyParameters pep = new PolicyParameters();
634                 pep.setPolicyName("test.name");
635                 pep.setPolicyDescription("good");
636                 pep.setTtlDate(new Date());
637                 pep.setRequestID(UUID.randomUUID());
638                 setCreateUpdateImpl();
639                 // Checks for Closed loop Policy. 
640                 pep.setPolicyConfigType(PolicyConfigType.MicroService);
641                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
642                                 .headers(headers)).andExpect(status().isBadRequest());
643                 pep.setConfigBody("te st");
644                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
645                                 .headers(headers)).andExpect(status().isBadRequest());
646                 pep.setConfigBody("{}");
647                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
648                                 .headers(headers)).andExpect(status().isBadRequest());
649                 pep.setConfigBody("{\"test\":\"test\"}");
650                 pep.setOnapName("   ");
651                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
652                                 .headers(headers)).andExpect(status().isBadRequest());
653                 pep.setOnapName("testonap");
654                 pep.setRiskLevel("fail");
655                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
656                                 .headers(headers)).andExpect(status().isBadRequest());
657                 pep.setRiskLevel("4");
658                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
659                                 .headers(headers)).andExpect(status().isInternalServerError());
660                 pep.setConfigBody("{\"service\":\"test\",\"uuid\":\"test\",\"location\":\"test\",\"configName\":\"test\",\"description\":\"test\",\"priority\":\"test\",\"version\":\"test\"}");
661                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
662                                 .headers(headers)).andExpect(status().isInternalServerError());
663         }
664         
665         @Test
666         public void actionDecisionPolicyCreationTests() throws Exception{
667                 PolicyParameters pep = new PolicyParameters();
668                 pep.setPolicyName("test.name");
669                 pep.setPolicyDescription("good");
670                 pep.setTtlDate(new Date());
671                 pep.setRequestID(UUID.randomUUID());
672                 setCreateUpdateImpl();
673                 // Checks for action Policy. 
674                 pep.setPolicyClass(PolicyClass.Action);
675                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
676                                 .headers(headers)).andExpect(status().isBadRequest());
677                 Map<AttributeType, Map<String,String>> attributes = new HashMap<>();
678                 pep.setAttributes(attributes);
679                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
680                                 .headers(headers)).andExpect(status().isBadRequest());
681                 attributes.put(AttributeType.MATCHING, new HashMap<>());
682                 pep.setAttributes(attributes);
683                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
684                                 .headers(headers)).andExpect(status().isBadRequest());
685                 Map<String,String> matching = new HashMap<>();
686                 matching.put("key", "value");
687                 attributes.put(AttributeType.MATCHING, matching);
688                 pep.setAttributes(attributes);
689                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
690                                 .headers(headers)).andExpect(status().isBadRequest());
691                 pep.setActionAttribute("A1");
692                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
693                                 .headers(headers)).andExpect(status().isBadRequest());
694                 pep.setActionPerformer("PEX");
695                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
696                                 .headers(headers)).andExpect(status().isBadRequest());
697                 pep.setActionPerformer("PEP");
698                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
699                                 .headers(headers)).andExpect(status().isInternalServerError());
700                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
701                                 .headers(headers)).andExpect(status().isInternalServerError());
702                 // Checks for Decision Policy. 
703                 pep.setPolicyClass(PolicyClass.Decision);
704                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
705                                 .headers(headers)).andExpect(status().isBadRequest());
706                 pep.setOnapName("xyz");
707                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
708                                 .headers(headers)).andExpect(status().isInternalServerError());
709                 attributes.remove(AttributeType.MATCHING);
710                 attributes.put(AttributeType.SETTINGS, matching);
711                 pep.setAttributes(attributes);
712                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
713                                 .headers(headers)).andExpect(status().isInternalServerError());
714                 attributes.put(AttributeType.MATCHING, matching);
715                 pep.setAttributes(attributes);
716                 mockMvc.perform(put("/createPolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
717                                 .headers(headers)).andExpect(status().isInternalServerError());
718                 mockMvc.perform(put("/updatePolicy").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
719                                 .headers(headers)).andExpect(status().isInternalServerError());
720         }
721         
722         @Test
723         public void createUpdateDictionaryTests() throws Exception{
724                 DictionaryParameters pep = new DictionaryParameters();
725                 //Failure Tests. 
726                 mockMvc.perform(put("/createDictionaryItem")).andExpect(status().isBadRequest());
727                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
728                 mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
729                 //Service Tests.
730                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
731                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
732                 pep.setDictionaryType(DictionaryType.MicroService);
733                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
734                                 .headers(headers)).andExpect(status().isBadRequest());
735                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
736                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isBadRequest());
737                 pep.setDictionary("test dict");
738                 pep.setRequestID(UUID.randomUUID());
739                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
740                                 .headers(headers)).andExpect(status().isBadRequest());
741                 pep.setDictionaryJson("{\"test\":\"value\"}");
742                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
743                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID())).andExpect(status().isInternalServerError());
744                 pep.setDictionaryJson("test123");
745                 mockMvc.perform(put("/updateDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
746                                 .headers(headers).header(UUIDHEADER, "123")).andExpect(status().isBadRequest());
747                 pep.setDictionary("MicroServiceDictionary");
748                 mockMvc.perform(put("/createDictionaryItem").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
749                                 .headers(headers)).andExpect(status().isBadRequest());
750         }
751         
752         @Test
753         public void getDictionaryTests() throws Exception{
754                 DictionaryParameters pep = new DictionaryParameters();
755                 //Failure Tests. 
756                 mockMvc.perform(post("/getDictionaryItems")).andExpect(status().isBadRequest());
757                 mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
758                 //Service Tests.
759                 mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
760                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
761                 pep.setDictionaryType(DictionaryType.Common);
762                 mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
763                                 .headers(headers).header(UUIDHEADER, UUID.randomUUID().toString())).andExpect(status().isBadRequest());
764                 pep.setDictionary("OnapName");
765                 mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
766                                 .headers(headers)).andExpect(status().isInternalServerError());
767                 pep.setRequestID(UUID.randomUUID());
768                 mockMvc.perform(post("/getDictionaryItems").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
769                                 .headers(headers)).andExpect(status().isInternalServerError());
770         }
771         
772         @Test
773         public void policyEngineImportTests() throws Exception{
774                 //Failure Tests. 
775                 mockMvc.perform(post("/policyEngineImport")).andExpect(status().isBadRequest());
776         }
777         
778         @Test
779         public void oldConfigAPITests() throws Exception{
780                 ConfigPolicyAPIRequest pep = new ConfigPolicyAPIRequest();
781                 //Failure Tests. 
782                 mockMvc.perform(put("/createConfig")).andExpect(status().isBadRequest());
783                 mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
784                 mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
785                 //Service Tests.
786                 mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
787                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
788                 pep.setPolicyScope("test");
789                 mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
790                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
791                 pep.setPolicyName("name");
792                 mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
793                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
794                 pep.setConfigType("OTHER");
795                 mockMvc.perform(put("/createConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
796                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
797                 pep.setTtlDate(new Date().toString());
798                 mockMvc.perform(put("/updateConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
799                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
800         }
801         
802         @Test
803         public void oldFirewallAPITests() throws Exception{
804                 ConfigFirewallPolicyAPIRequest pep = new ConfigFirewallPolicyAPIRequest();
805                 //Failure Tests. 
806                 mockMvc.perform(put("/createFirewallConfig")).andExpect(status().isBadRequest());
807                 mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
808                 mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON).header(CLIENTAUTHHEADER, "Basic 123")).andExpect(status().isUnauthorized());
809                 //Service Tests.
810                 mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
811                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
812                 pep.setPolicyScope("test");
813                 mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
814                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
815                 pep.setPolicyName("name");
816                 mockMvc.perform(put("/createFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
817                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
818                 pep.setTtlDate(new Date().toString());
819                 mockMvc.perform(put("/updateFirewallConfig").content(PolicyUtils.objectToJsonString(pep)).contentType(MediaType.APPLICATION_JSON)
820                                 .headers(headers).header(UUIDHEADER, "tes123")).andExpect(status().isBadRequest());
821         }
822         
823         private void setCreateUpdateImpl() throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
824                 Method setter = XACMLPdpServlet.class.getDeclaredMethod("setCreateUpdatePolicyConstructor", String.class);
825                 setter.setAccessible(true);
826                 setter.invoke(new XACMLPdpServlet(), CreateUpdatePolicyServiceImpl.class.getName());
827         }
828
829         //Health Check Tests
830         @Test
831         public void getCountTest() throws Exception {
832                 mockMvc.perform(get("/count"))          
833                 .andExpect(status().isOk());
834         }
835 }