Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / openecomp / mso / apihandlerinfra / tenantisolation / CloudResourcesOrchestrationTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
21 package org.openecomp.mso.apihandlerinfra.tenantisolation;\r
22 \r
23 import static org.junit.Assert.assertEquals;\r
24 import static org.junit.Assert.assertTrue;\r
25 import static org.mockito.Mockito.mock;\r
26 import static org.mockito.Mockito.when;\r
27 \r
28 import java.sql.Timestamp;\r
29 import java.text.DateFormat;\r
30 import java.text.ParseException;\r
31 import java.text.SimpleDateFormat;\r
32 import java.util.ArrayList;\r
33 import java.util.Date;\r
34 import java.util.HashMap;\r
35 import java.util.List;\r
36 import java.util.Map;\r
37 \r
38 import javax.ws.rs.core.Response;\r
39 \r
40 import org.jboss.resteasy.spi.ResteasyUriInfo;\r
41 import org.junit.Ignore;
42 import org.junit.Test;\r
43 import org.openecomp.mso.requestsdb.InfraActiveRequests;\r
44 import org.openecomp.mso.requestsdb.RequestsDatabase;\r
45 \r
46 public class CloudResourcesOrchestrationTest {\r
47         \r
48         private String requestJSON = "{\"requestDetails\":{\"requestInfo\":{\"source\":\"VID\",\"requestorId\":\"zz9999\" } } }";\r
49 \r
50         @Test\r
51         public void testUnlockFailObjectMapping() {\r
52                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
53                 Response response = cor.unlockOrchestrationRequest(null, null, null);\r
54                 String body = response.getEntity().toString();\r
55                 assertTrue(body.contains("Mapping of request to JSON object failed."));\r
56                 assertEquals(400, response.getStatus());\r
57         }\r
58         \r
59         @Test\r
60         public void testUnlockFailObjectMapping2() {\r
61                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
62                 Response response = cor.unlockOrchestrationRequest(null, "requestId", null);\r
63                 String body = response.getEntity().toString();\r
64                 assertTrue(body.contains("Mapping of request to JSON object failed."));\r
65                 assertEquals(400, response.getStatus());\r
66         }\r
67         \r
68         @Test\r
69         public void testParseOrchestrationError1() {\r
70                 String requestJSON = "{\"requestDetails\": null }";\r
71                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
72                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
73                 String body = response.getEntity().toString();\r
74                 assertTrue(body.contains("Error parsing request."));\r
75                 assertEquals(400, response.getStatus());\r
76         }\r
77         \r
78         @Test\r
79         public void testParseOrchestrationError2() {\r
80                 String requestJSON = "{\"requestDetails\":{\"requestInfo\":{\"source\":\"\",\"requestorId\":\"zz9999\" } } }";\r
81                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
82                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
83                 String body = response.getEntity().toString();\r
84                 assertTrue(body.contains("Error parsing request."));\r
85                 assertEquals(400, response.getStatus());\r
86         }\r
87         \r
88         @Test\r
89         public void testParseOrchestrationError3() {\r
90                 String requestJSON = "{\"requestDetails\":{\"requestInfo\":{\"source\":\"VID\",\"requestorId\":\"\" } } }";\r
91                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
92                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
93                 String body = response.getEntity().toString();\r
94                 assertTrue(body.contains("Error parsing request."));\r
95                 assertEquals(400, response.getStatus());\r
96         }\r
97         \r
98         @Test\r
99         public void testGetInfraActiveRequestNull() {\r
100                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
101                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
102                 cor.setRequestsDB(reqDB);\r
103                 when(reqDB.getRequestFromInfraActive("requestId")).thenReturn(null);\r
104                 \r
105                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
106                 String body = response.getEntity().toString();\r
107                 assertTrue(body.contains("Orchestration RequestId requestId is not found in DB"));\r
108                 assertEquals(404, response.getStatus());\r
109         }\r
110         \r
111         @Test\r
112         public void testUnlockError() {\r
113                 InfraActiveRequests iar = new InfraActiveRequests();\r
114                 iar.setRequestId("requestId");\r
115                 iar.setRequestScope("requestScope");\r
116                 iar.setRequestType("requestType");\r
117                 iar.setOperationalEnvId("operationalEnvironmentId");\r
118                 iar.setOperationalEnvName("operationalEnvName");\r
119                 iar.setRequestorId("ma920e");\r
120                 iar.setRequestBody("");\r
121                 iar.setRequestStatus("IN_PROGRESS");\r
122                 \r
123                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
124                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
125                 cor.setRequestsDB(reqDB);\r
126                 when(reqDB.getRequestFromInfraActive("requestId")).thenReturn(iar);\r
127                 when(reqDB.updateInfraStatus("requestId", "UNLOCKED", "APIH")).thenReturn(1);\r
128                 \r
129                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
130                 assertEquals(404, response.getStatus());\r
131         }\r
132         \r
133         @Test\r
134         public void testUnlock() throws ParseException {\r
135                 InfraActiveRequests iar = new InfraActiveRequests();\r
136                 iar.setRequestId("requestId");\r
137                 iar.setRequestScope("requestScope");\r
138                 iar.setRequestType("requestType");\r
139                 iar.setOperationalEnvId("operationalEnvironmentId");\r
140                 iar.setOperationalEnvName("operationalEnvName");\r
141                 iar.setRequestorId("ma920e");\r
142                 iar.setRequestBody("");\r
143                 iar.setRequestStatus("IN_PROGRESS");\r
144                 \r
145                 DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");\r
146                 Date date = dateFormat.parse("23/09/2007");\r
147                 long time = date.getTime();\r
148                 iar.setStartTime(new Timestamp(time));\r
149                 \r
150                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
151                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
152                 cor.setRequestsDB(reqDB);\r
153                 when(reqDB.getRequestFromInfraActive("requestId")).thenReturn(iar);\r
154                 when(reqDB.updateInfraStatus("requestId", "UNLOCKED", "APIH")).thenReturn(1);\r
155                 \r
156                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
157                 assertEquals(204, response.getStatus());\r
158         }\r
159         \r
160         @Test\r
161         public void testUnlockComplete() throws ParseException {\r
162                 InfraActiveRequests iar = new InfraActiveRequests();\r
163                 iar.setRequestId("requestId");\r
164                 iar.setRequestScope("requestScope");\r
165                 iar.setRequestType("requestType");\r
166                 iar.setOperationalEnvId("operationalEnvironmentId");\r
167                 iar.setOperationalEnvName("operationalEnvName");\r
168                 iar.setRequestorId("ma920e");\r
169                 iar.setRequestBody("");\r
170                 iar.setRequestStatus("COMPLETE");\r
171                 \r
172                 DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");\r
173                 Date date = dateFormat.parse("23/09/2007");\r
174                 long time = date.getTime();\r
175                 iar.setStartTime(new Timestamp(time));\r
176                 \r
177                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
178                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
179                 cor.setRequestsDB(reqDB);\r
180                 when(reqDB.getRequestFromInfraActive("requestId")).thenReturn(iar);\r
181                 when(reqDB.updateInfraStatus("requestId", "UNLOCKED", "APIH")).thenReturn(1);\r
182                 \r
183                 Response response = cor.unlockOrchestrationRequest(requestJSON, "requestId", null);\r
184                 String body = response.getEntity().toString();\r
185                 assertTrue(body.contains("Orchestration RequestId requestId has a status of COMPLETE and can not be unlocked"));\r
186                 assertEquals(400, response.getStatus());\r
187         }\r
188         \r
189         @Test\r
190         public void testGetOperationalEnvFilter() {\r
191                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "requestId=89c56827-1c78-4827-bc4d-6afcdb37a51f", "");\r
192                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
193                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
194                 cor.setRequestsDB(reqDB);\r
195                 when(reqDB.getRequestFromInfraActive("89c56827-1c78-4827-bc4d-6afcdb37a51f")).thenReturn(null);\r
196                 \r
197                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
198                 String body = response.getEntity().toString();\r
199                 \r
200                 assertTrue(body.contains("Orchestration RequestId 89c56827-1c78-4827-bc4d-6afcdb37a51f is not found in DB"));\r
201                 assertEquals(204, response.getStatus());\r
202         }\r
203         \r
204         @Test\r
205         public void testGetOperationalEnvFilterException() {\r
206                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "requestId=89c56827-1c78-4827-bc4d-6afcdb37a51f", "");\r
207                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
208                 \r
209                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
210                 assertEquals(404, response.getStatus());\r
211         }\r
212         \r
213         @Test\r
214         public void testGetOperationalEnvSuccess() throws ParseException {\r
215                 InfraActiveRequests iar = new InfraActiveRequests();\r
216                 iar.setRequestId("requestId");\r
217                 iar.setRequestScope("requestScope");\r
218                 iar.setRequestType("requestType");\r
219                 iar.setOperationalEnvId("operationalEnvironmentId");\r
220                 iar.setOperationalEnvName("operationalEnvName");\r
221                 iar.setRequestorId("ma920e");\r
222                 iar.setRequestBody("");\r
223                 iar.setRequestStatus("COMPLETE");\r
224                 \r
225                 DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");\r
226                 Date date = dateFormat.parse("23/09/2007");\r
227                 long time = date.getTime();\r
228                 iar.setStartTime(new Timestamp(time));\r
229                 \r
230                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "requestId=89c56827-1c78-4827-bc4d-6afcdb37a51f", "");\r
231                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
232                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
233                 cor.setRequestsDB(reqDB);\r
234                 when(reqDB.getRequestFromInfraActive("89c56827-1c78-4827-bc4d-6afcdb37a51f")).thenReturn(iar);\r
235                 \r
236                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
237                 assertEquals(200, response.getStatus());\r
238         }\r
239         \r
240         @Test\r
241         public void testGetOperationalEnvFilterSuccess() throws ParseException {\r
242                 InfraActiveRequests iar = new InfraActiveRequests();\r
243                 iar.setRequestId("requestId");\r
244                 iar.setRequestScope("requestScope");\r
245                 iar.setRequestType("requestType");\r
246                 iar.setOperationalEnvId("operationalEnvironmentId");\r
247                 iar.setOperationalEnvName("operationalEnvName");\r
248                 iar.setRequestorId("ma920e");\r
249                 iar.setRequestBody("");\r
250                 iar.setRequestStatus("COMPLETE");\r
251                 iar.setStatusMessage("status Message");\r
252                 iar.setProgress(20L);\r
253                 \r
254                 DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");\r
255                 Date date = dateFormat.parse("23/09/2007");\r
256                 long time = date.getTime();\r
257                 iar.setStartTime(new Timestamp(time));\r
258                 iar.setEndTime(new Timestamp(time));\r
259                 \r
260                 List<InfraActiveRequests> requests = new ArrayList<>();\r
261                 requests.add(iar);\r
262                 \r
263                 Map<String, String> map = new HashMap<>();\r
264                 map.put("operationalEnvironmentName", "myVnfOpEnv");\r
265                 \r
266                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "operationalEnvironmentName=myVnfOpEnv&requestorId=test", "");\r
267                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
268                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
269                 cor.setRequestsDB(reqDB);\r
270                 when(reqDB.getCloudOrchestrationFiltersFromInfraActive(map)).thenReturn(requests);\r
271                 \r
272                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
273                 assertEquals(200, response.getStatus());\r
274         }\r
275         \r
276         @Ignore // 1802 merge
277         @Test\r
278         public void testGetOperationalEnvFilterException1() throws ParseException {\r
279                 InfraActiveRequests iar = new InfraActiveRequests();\r
280                 iar.setRequestId("requestId");\r
281                 iar.setRequestScope("requestScope");\r
282                 iar.setRequestType("requestType");\r
283                 iar.setOperationalEnvId("operationalEnvironmentId");\r
284                 iar.setOperationalEnvName("operationalEnvName");\r
285                 iar.setRequestorId("ma920e");\r
286                 iar.setRequestBody("");\r
287                 iar.setRequestStatus("COMPLETE");\r
288                 \r
289                 List<InfraActiveRequests> requests = new ArrayList<>();\r
290                 requests.add(iar);\r
291                 \r
292                 Map<String, String> map = new HashMap<>();\r
293                 map.put("operationalEnvironmentName", "myVnfOpEnv");\r
294                 \r
295                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "filter=operationalEnvironmentName:EQUALS:myVnfOpEnv", "");\r
296                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
297                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
298                 cor.setRequestsDB(reqDB);\r
299                 when(reqDB.getCloudOrchestrationFiltersFromInfraActive(map)).thenReturn(requests);\r
300                 \r
301                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
302                 assertEquals(500, response.getStatus());\r
303         }\r
304         \r
305         @Test\r
306         public void testGetOperationalEnvFilterException2() throws ParseException {\r
307                 InfraActiveRequests iar = new InfraActiveRequests();\r
308                 iar.setRequestId("requestId");\r
309                 iar.setRequestScope("requestScope");\r
310                 iar.setRequestType("requestType");\r
311                 iar.setOperationalEnvId("operationalEnvId");\r
312                 iar.setOperationalEnvName("operationalEnvName");\r
313                 iar.setRequestorId("ma920e");\r
314                 iar.setRequestBody("");\r
315                 iar.setRequestStatus("COMPLETE");\r
316                 \r
317                 List<InfraActiveRequests> requests = new ArrayList<>();\r
318                 requests.add(iar);\r
319                 \r
320                 Map<String, String> map = new HashMap<>();\r
321                 map.put("operationalEnvironmentName", "myVnfOpEnv");\r
322                 \r
323                 ResteasyUriInfo uriInfo = new ResteasyUriInfo("", "operationalEnvironmentName=", "");\r
324                 CloudResourcesOrchestration cor = new CloudResourcesOrchestration();\r
325                 RequestsDatabase reqDB = mock(RequestsDatabase.class);\r
326                 cor.setRequestsDB(reqDB);\r
327                 when(reqDB.getCloudOrchestrationFiltersFromInfraActive(map)).thenReturn(requests);\r
328                 \r
329                 Response response = cor.getOperationEnvironmentStatusFilter(uriInfo, null);\r
330                 assertEquals(500, response.getStatus());\r
331                 assertTrue(response.getEntity().toString().contains("No valid operationalEnvironmentName value is specified"));\r
332         }\r
333 }\r