Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / openecomp / mso / apihandlerinfra / OrchestrationRequestsTest.java
1 /*-\r
2  * ============LICENSE_START=======================================================\r
3  * ONAP - SO\r
4  * ================================================================================\r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.\r
6  * ================================================================================\r
7  * Licensed under the Apache License, Version 2.0 (the "License");\r
8  * you may not use this file except in compliance with the License.\r
9  * You may obtain a copy of the License at\r
10  *\r
11  *      http://www.apache.org/licenses/LICENSE-2.0\r
12  *\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  */\r
20 package org.openecomp.mso.apihandlerinfra;\r
21 \r
22 import static org.junit.Assert.assertEquals;\r
23 import static org.junit.Assert.assertFalse;\r
24 import static org.junit.Assert.assertNotNull;\r
25 \r
26 import java.io.IOException;\r
27 import java.net.URI;\r
28 import java.sql.Timestamp;\r
29 import java.time.LocalDateTime;\r
30 import java.util.Collections;\r
31 import java.util.List;\r
32 import java.util.Map;\r
33 \r
34 import javax.ws.rs.core.Response;\r
35 import javax.ws.rs.core.UriInfo;\r
36 \r
37 import mockit.MockUp;\r
38 import org.apache.http.HttpStatus;\r
39 import org.jboss.resteasy.spi.ResteasyUriInfo;\r
40 import org.junit.Test;\r
41 import org.mockito.Mock;\r
42 import org.mockito.Mockito;\r
43 import org.openecomp.mso.apihandler.common.ValidationException;\r
44 import org.openecomp.mso.requestsdb.InfraActiveRequests;\r
45 import org.openecomp.mso.requestsdb.RequestsDatabase;\r
46 import org.openecomp.mso.serviceinstancebeans.GetOrchestrationResponse;\r
47 import org.openecomp.mso.serviceinstancebeans.InstanceReferences;\r
48 import org.openecomp.mso.serviceinstancebeans.Request;\r
49 import org.openecomp.mso.serviceinstancebeans.RequestStatus;\r
50 import org.openecomp.mso.serviceinstancebeans.ServiceInstancesRequest;\r
51 \r
52 import com.fasterxml.jackson.core.JsonParseException;\r
53 import com.fasterxml.jackson.databind.JsonMappingException;\r
54 import com.fasterxml.jackson.databind.ObjectMapper;\r
55 \r
56 public class OrchestrationRequestsTest {\r
57 \r
58         private static final String CHECK_HTML = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title></title></head><body></body></html>";\r
59         public static final Response RESPONSE = Response.status(HttpStatus.SC_OK).entity(CHECK_HTML).build();\r
60         @Mock\r
61         private static RequestsDatabase db;\r
62         private static OrchestrationRequests orReq;\r
63         private static GetOrchestrationResponse orRes;\r
64 \r
65         @Test\r
66         public void testGetOrchestrationRequest() {\r
67                 orReq = Mockito.mock(OrchestrationRequests.class);\r
68                 orRes = new GetOrchestrationResponse();\r
69                 try {\r
70                         // create InfraActiveRequests object\r
71                         InfraActiveRequests infraRequests = new InfraActiveRequests();\r
72                         infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");\r
73                         infraRequests.setNetworkType("CONTRAIL30_BASIC");\r
74                         infraRequests.setRequestType("createInstance");\r
75                         infraRequests.setSource("VID");\r
76                         infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");\r
77                         infraRequests.setServiceInstanceId("bc305d54-75b4-431b-adb2-eb6b9e546014");\r
78                         infraRequests.setRequestStatus("IN_PROGRESS");\r
79                         infraRequests.setRequestorId("ab1234");\r
80                         String body = "{\"modelInfo\":{\"modelInvariantId\":\"9771b085-4705-4bf7-815d-8c0627bb7e36\",\"modelType\":\"service\",\"modelName\":\"Service with VNFs with modules\",\"modelVersion\":\"1.0\"}}";            \r
81                         infraRequests.setRequestBody(body);\r
82         \r
83                         db = Mockito.mock(RequestsDatabase.class);\r
84                         Mockito.when(db.getRequestFromInfraActive(Mockito.anyString())).thenReturn(infraRequests);\r
85 \r
86                         ///// mock mapInfraActiveRequestToRequest()\r
87                         Request request = new Request();\r
88                         request.setRequestId(infraRequests.getRequestId());\r
89                         request.setRequestScope(infraRequests.getRequestScope());\r
90                         request.setRequestType(infraRequests.getRequestAction());\r
91 \r
92                         InstanceReferences ir = new InstanceReferences();\r
93                         if (infraRequests.getNetworkId() != null)\r
94                                 ir.setNetworkInstanceId(infraRequests.getNetworkId());\r
95                         if (infraRequests.getNetworkName() != null)\r
96                                 ir.setNetworkInstanceName(infraRequests.getNetworkName());\r
97                         if (infraRequests.getServiceInstanceId() != null)\r
98                                 ir.setServiceInstanceId(infraRequests.getServiceInstanceId());\r
99                         if (infraRequests.getServiceInstanceName() != null)\r
100                                 ir.setServiceInstanceName(infraRequests.getServiceInstanceName());\r
101                         if (infraRequests.getVfModuleId() != null)\r
102                                 ir.setVfModuleInstanceId(infraRequests.getVfModuleId());\r
103                         if (infraRequests.getVfModuleName() != null)\r
104                                 ir.setVfModuleInstanceName(infraRequests.getVfModuleName());\r
105                         if (infraRequests.getVnfId() != null)\r
106                                 ir.setVnfInstanceId(infraRequests.getVnfId());\r
107                         if (infraRequests.getVnfName() != null)\r
108                                 ir.setVnfInstanceName(infraRequests.getVnfName());\r
109                         if (infraRequests.getVolumeGroupId() != null)\r
110                                 ir.setVolumeGroupInstanceId(infraRequests.getVolumeGroupId());\r
111                         if (infraRequests.getVolumeGroupName() != null)\r
112                                 ir.setVolumeGroupInstanceName(infraRequests.getVolumeGroupName());\r
113                         if (infraRequests.getRequestorId() != null)\r
114                                 ir.setRequestorId(infraRequests.getRequestorId());\r
115 \r
116                         request.setInstanceReferences(ir);\r
117                         RequestStatus status = new RequestStatus();\r
118 \r
119                         if (infraRequests.getRequestStatus() != null) {\r
120                                 status.setRequestState(infraRequests.getRequestStatus());\r
121                         }\r
122 \r
123                         request.setRequestStatus(status);\r
124                 //      RequestStatus reqStatus = request.getRequestStatus();   \r
125                         orRes.setRequest(request);      \r
126 //                      Mockito.when(orReq.getOrchestrationRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(RESPONSE);\r
127                         Response resp = orReq.getOrchestrationRequest("rq1234d1-5a33-55df-13ab-12abad84e333", "v3");\r
128                         \r
129                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestId(),\r
130                                         "rq1234d1-5a33-55df-13ab-12abad84e333");\r
131                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getSource(), "VID");\r
132                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getTenantId(),\r
133                                         "19123c2924c648eb8e42a3c1f14b7682");\r
134                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getServiceInstanceId(),\r
135                                         "bc305d54-75b4-431b-adb2-eb6b9e546014");\r
136                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestStatus(),\r
137                                         "IN_PROGRESS");\r
138                         assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestorId(),\r
139                                         "ab1234");\r
140                         assertEquals(request.getInstanceReferences().getServiceInstanceId(),"bc305d54-75b4-431b-adb2-eb6b9e546014");\r
141                         assertEquals(request.getInstanceReferences().getRequestorId(),"ab1234");\r
142                         assertEquals(orRes.getRequest().getRequestId(), "rq1234d1-5a33-55df-13ab-12abad84e333");\r
143 //                      assertEquals(resp.getStatus(), HttpStatus.SC_OK);\r
144                 } catch (Exception e) {\r
145 \r
146                         e.printStackTrace();\r
147                 }\r
148         }\r
149 \r
150         @Test\r
151         public void testGetOrchestrationRequestNotPresent() {\r
152                 String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\", \"requestorId\": \"ab1234\"}}}";\r
153                 try {\r
154 \r
155                         InfraActiveRequests infraRequests = new InfraActiveRequests();\r
156                         infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");\r
157                         infraRequests.setNetworkType("CONTRAIL30_BASIC");\r
158                         infraRequests.setSource("VID");\r
159                         infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");\r
160                         infraRequests.setServiceInstanceId("ea4d5374-d28d-4bbf-9691-22985f088b12");\r
161                         infraRequests.setRequestStatus(Status.IN_PROGRESS.name());\r
162                         infraRequests.setStartTime(Timestamp.valueOf(LocalDateTime.now()));\r
163                         final List<InfraActiveRequests> infraActiveRequests = Collections.singletonList(infraRequests);\r
164 \r
165                         // create InfraActiveRequests object\r
166                         final MockUp<RequestsDatabase> mockUpRDB = new MockUp<RequestsDatabase>() {\r
167                                 @mockit.Mock\r
168                                 public InfraActiveRequests getRequestFromInfraActive(String requestId) {\r
169                                         return infraRequests;\r
170                                 }\r
171 \r
172                                 @mockit.Mock\r
173                                 public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(Map<String, List<String>> orchestrationMap) {\r
174                                         return infraActiveRequests;\r
175                                 }\r
176 \r
177                                 @mockit.Mock\r
178                                 public int updateInfraStatus(String requestId, String requestStatus, String lastModifiedBy) {\r
179                                         return 1;\r
180                                 }\r
181                         };\r
182 \r
183                         Response response = null;\r
184                         try {\r
185                                 OrchestrationRequests requests = new OrchestrationRequests();\r
186                                 final ResteasyUriInfo ui = new ResteasyUriInfo(new URI("", "", "", "filter=service-instance-id:EQUALS:abc", ""));\r
187                                 response = requests.getOrchestrationRequest(ui,"v5");\r
188                         } finally {\r
189                                 mockUpRDB.tearDown();\r
190                         }\r
191                         assertEquals(HttpStatus.SC_OK, response.getStatus());\r
192                         assertNotNull(response.getEntity());\r
193 \r
194 \r
195                 } catch (Exception e) {\r
196 \r
197                         e.printStackTrace();\r
198                 }\r
199         }\r
200 \r
201         @Test\r
202         public void testUnlockOrchestrationRequest()\r
203                         throws JsonParseException, JsonMappingException, IOException, ValidationException {\r
204                 ObjectMapper mapper = new ObjectMapper();\r
205                 String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\", \"requestorId\": \"ab1234\"}}}";\r
206                 //String requestJSON = "{\"requestDetails\":{\"requestInfo\":{\"instanceName\":\"Vfmodule_vLB-0514-1\",\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"modelInfo\":{\"modelType\":\"vfModule\",\"modelInvariantId\":\"80d62376-2d6d-4618-b666-bf00d0e58296\",\"modelVersionId\":\"578b52e5-4572-444d-8de7-2c140ec2e6e5\",\"modelName\":\"Vloadbalancer..base_vlb..module-0\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"bf87db73-2854-4cd1-adfd-8cd08e12befe\",\"modelCustomizationName\":\"Vloadbalancer..base_vlb..module-0\"},\"requestParameters\":{\"usePreload\":true},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"RegionOne\",\"tenantId\":\"ebb0ea7144004bacac1e39ff23105fa7\"},\"relatedInstanceList\":[{\"relatedInstance\":{\"instanceId\":\"60e28eb9-2808-4a5a-830f-ec982f01dcfe\",\"modelInfo\":{\"modelType\":\"service\",\"modelName\":\"vLoadBalancer\",\"modelInvariantId\":\"3f95e3ed-394d-4301-8c9b-c5f39ff89cfd\",\"modelVersion\":\"1.0\",\"modelVersionId\":\"da1b5347-7bcb-4cc4-8c29-d18dafdb1a47\"}}},{\"relatedInstance\":{\"instanceId\":\"338811a1-f7cd-4093-9903-d0f69b7cb176\",\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"vLoadBalancer\",\"modelInvariantId\":\"040740de-1ce8-4737-ad39-970684b0e3e8\",\"modelVersion\":\"1.0\",\"modelVersionId\":\"5fd1ce25-c414-4baf-903b-5042a60cfb02\",\"modelCustomizationId\":\"5801ace5-7cc7-4011-b677-165a0e8a2a27\",\"modelCustomizationName\":\"vLoadBalancer 0\"}}}]}}";\r
207                 \r
208                 MsoRequest msoRequest = new MsoRequest("rq1234d1-5a33-55df-13ab-12abad84e333");\r
209                 ServiceInstancesRequest sir = mapper.readValue(requestJSON, ServiceInstancesRequest.class);\r
210                 msoRequest.parseOrchestration(sir);\r
211 \r
212                 //create object instead of a DB call.\r
213 \r
214 \r
215                 final MockUp<RequestsDatabase> mockUp = new MockUp<RequestsDatabase>() {\r
216                         @mockit.Mock\r
217                         public InfraActiveRequests getRequestFromInfraActive(String requestId) {\r
218                                 InfraActiveRequests infraRequests = new InfraActiveRequests();\r
219                                 infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");\r
220                                 infraRequests.setNetworkType("CONTRAIL30_BASIC");\r
221                                 infraRequests.setSource("VID");\r
222                                 infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");\r
223                                 infraRequests.setServiceInstanceId("ea4d5374-d28d-4bbf-9691-22985f088b12");\r
224                                 infraRequests.setRequestStatus(Status.IN_PROGRESS.name());\r
225                                 infraRequests.setStartTime(Timestamp.valueOf(LocalDateTime.now()));\r
226                                 infraRequests.setRequestBody(requestJSON);\r
227                                 return infraRequests;\r
228                         }\r
229 \r
230                         @mockit.Mock\r
231                         public int updateInfraStatus(String requestId, String requestStatus, String lastModifiedBy) {\r
232                                 return 1;\r
233                         }\r
234                 };\r
235 \r
236                 final Response response;\r
237                 try {\r
238                         OrchestrationRequests requests = new OrchestrationRequests();\r
239                         response = requests.unlockOrchestrationRequest(requestJSON, "rq1234d1-5a33-55df-13ab-12abad84e333", "v5");\r
240                 } finally {\r
241                         mockUp.tearDown();\r
242                 }\r
243 \r
244                 assertEquals(HttpStatus.SC_NO_CONTENT, response.getStatus());\r
245                 assertEquals("", response.getEntity().toString());\r
246         }\r
247 \r
248 }\r