11c385ced9f383fd9449869d31ad0a2d8733ce1b
[so.git] /
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;
22
23 import static org.junit.Assert.assertTrue;
24
25 import java.io.ByteArrayInputStream;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.lang.reflect.Field;
29 import java.net.URI;
30 import java.sql.Timestamp;
31 import java.util.ArrayList;
32 import java.util.List;
33
34 import mockit.Mock;
35 import mockit.MockUp;
36
37 import org.apache.http.HttpResponse;
38 import org.apache.http.ProtocolVersion;
39 import org.apache.http.StatusLine;
40 import org.apache.http.client.ClientProtocolException;
41 import org.apache.http.entity.BasicHttpEntity;
42 import org.apache.http.impl.client.DefaultHttpClient;
43 import org.apache.http.message.BasicHttpResponse;
44 import org.apache.http.message.BasicStatusLine;
45 import org.junit.AfterClass;
46 import org.junit.Before;
47 import org.junit.BeforeClass;
48 import org.junit.Test;
49 import org.mockito.Mockito;
50 import org.openecomp.mso.apihandler.common.CamundaClient;
51 import org.openecomp.mso.apihandler.common.RequestClient;
52 import org.openecomp.mso.apihandler.common.RequestClientFactory;
53 import org.openecomp.mso.apihandlerinfra.vnfbeans.VnfRequest;
54 import org.openecomp.mso.db.catalog.CatalogDatabase;
55 import org.openecomp.mso.db.catalog.beans.VfModule;
56 import org.openecomp.mso.db.catalog.beans.VnfRecipe;
57 import org.openecomp.mso.db.catalog.beans.VnfResource;
58 import org.openecomp.mso.properties.MsoJavaProperties;
59 import org.openecomp.mso.properties.MsoPropertiesFactory;
60 import org.openecomp.mso.requestsdb.InfraActiveRequests;
61 import org.openecomp.mso.requestsdb.InfraRequests;
62 import org.openecomp.mso.requestsdb.RequestsDatabase;
63
64 import javax.ws.rs.core.Response;
65 import javax.ws.rs.core.UriInfo;
66
67 public class VnfRequestHandlerTest {
68         private static MockUp<RequestsDatabase> mockRDB;
69         private static MockUp<VnfMsoInfraRequest> mockMsoRequest;
70         private static MockUp<CatalogDatabase> mockCDB;
71         private static MockUp<CamundaClient> mockCamudaClient;
72 //      private static MockUp<RequestClientFactory> mockCamudaClient;
73         VnfRequestHandler handler = null;
74         UriInfo uriInfo = null;
75
76         private static final String manageVnfRequest = "<vnf-request xmlns=\"http://org.openecomp/mso/infra/vnf-request/v1\"><request-info><request-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</request-id><action>CREATE_VF_MODULE</action><source>VID</source><!-- new 1610 field --><service-instance-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</service-instance-id></request-info><vnf-inputs><!-- not in use in 1610 --><vnf-name>vnfName</vnf-name><vnf-type>vnfType</vnf-type><vnf-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</vnf-id><volume-group-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</volume-group-id><vf-module-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</vf-module-id><vf-module-name>vfModuleName</vf-module-name><vf-module-model-name>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</vf-module-model-name><model-customization-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</model-customization-id><asdc-service-model-version>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</asdc-service-model-version><aic-cloud-region>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</aic-cloud-region><tenant-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</tenant-id><service-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</service-id><backout-on-failure>false</backout-on-failure><service-instance-id>43b34d6d-1ab2-4c7a-a3a0-5471306550c5</service-instance-id></vnf-inputs><vnf-params>\t\t\t\t</vnf-params></vnf-request>";
77
78         @Before
79         public void setup() throws Exception{
80                 
81                 uriInfo = Mockito.mock(UriInfo.class);
82                 Class<?> clazz = VnfRequestHandler.class;
83                 handler = (VnfRequestHandler)clazz.newInstance();
84                 
85                 Field f1 = handler.getClass().getDeclaredField("uriInfo");
86                 
87                 f1.setAccessible(true);
88         f1.set(handler, uriInfo);
89         }
90
91         @BeforeClass
92         public static void setUp() throws Exception {
93                 MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
94                 msoPropertiesFactory.removeAllMsoProperties();
95                 msoPropertiesFactory.initializeMsoProperties(Constants.MSO_PROP_APIHANDLER_INFRA, "src/test/resources/mso.apihandler-infra.properties");
96
97                 mockRDB = new MockUp<RequestsDatabase>() {
98                         @Mock
99                         public InfraActiveRequests checkDuplicateByVnfId(String vnfId, String action, String requestType) {
100                                 return null;
101                         }
102                         @Mock
103                         public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {
104                                 return 1;
105                         }
106
107                         @Mock
108                         public int updateInfraFinalStatus (String requestId, String requestStatus, String statusMessage, long progress, String responseBody, String lastModifiedBy) {
109                                 return 1;
110                         }
111                 };
112
113                 mockMsoRequest = new MockUp<VnfMsoInfraRequest>() {
114                         @Mock
115                         public void createRequestRecord (Status status) {
116                                 return;
117                         }
118                 };
119
120                 mockCDB = new MockUp<CatalogDatabase>() {
121                         @Mock
122                         public VnfRecipe getVfModuleRecipe(String vnfType, String vfModuleModelName, String action) {
123                                 final VnfRecipe vnfRecipe = new VnfRecipe();
124                                 vnfRecipe.setOrchestrationUri("test/vnf");
125                                 vnfRecipe.setRecipeTimeout(180);
126                                 return vnfRecipe;
127                         }
128
129                         @Mock
130                         public VfModule getVfModuleType(String type, String version) {
131                                 final VfModule vfModule = new VfModule();
132                                 return vfModule;
133                         }
134
135                         @Mock
136                         public VnfResource getVnfResource (String vnfType, String serviceVersion) {
137                                 final VnfResource vnfResource = new VnfResource();
138                                 return vnfResource;
139                         }
140                 };
141
142                 mockCamudaClient = new MockUp<CamundaClient>() {
143                         @Mock
144                         public HttpResponse post(String camundaReqXML, String requestId,
145                                                                          String requestTimeout, String schemaVersion, String serviceInstanceId, String action)
146                                         throws ClientProtocolException, IOException {
147                                 ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);
148                                 HttpResponse resp = new BasicHttpResponse(pv,200, "test response");
149                                 BasicHttpEntity entity = new BasicHttpEntity();
150                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";
151                                 InputStream instream = new ByteArrayInputStream(body.getBytes());
152                                 entity.setContent(instream);
153                                 resp.setEntity(entity);
154                                 return resp;
155                         }
156                 };
157
158                 /*mockCamudaClient = new MockUp<RequestClientFactory>() {
159                         @Mock
160                         public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{
161                                 RequestClient client = new CamundaClient();
162                                 client.setUrl("/test/url");
163                                 return client;
164                         }
165                 };*/
166
167         }
168
169         @AfterClass
170         public static void tearDown() {
171                 mockRDB.tearDown();
172                 mockMsoRequest.tearDown();
173                 mockCDB.tearDown();
174                 mockCamudaClient.tearDown();
175         }
176
177         @Test
178         public void manageVnfRequestTestV2(){
179                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
180                 Response resp = handler.manageVnfRequest(manageVnfRequest, "v2");
181                 assertTrue(null != resp);
182         }
183
184         @Test
185         public void manageVnfRequestTestv1(){
186                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
187                 Response resp = handler.manageVnfRequest(manageVnfRequest, "v1");
188                 assertTrue(null != resp);
189         }
190
191         @Test
192         public void manageVnfRequestTestv3(){
193                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
194                 Response resp = handler.manageVnfRequest(manageVnfRequest, "v3");
195                 assertTrue(null != resp);
196         }
197         @Test
198         public void manageVnfRequestTestInvalidVersion(){
199                 Response resp = handler.manageVnfRequest(manageVnfRequest, "v30");
200                 assertTrue(null != resp);
201         }
202         
203         @Test
204         public void manageVnfRequest2Test(){
205                 Mockito.when(uriInfo.getRequestUri())
206         .thenReturn(URI.create("http://localhost:8080/test"));
207                 
208                 new MockUp<MsoPropertiesUtils>() {
209                         @Mock
210                         public synchronized final boolean getNoPropertiesState() {
211                                 return false;
212                         }
213                 };
214                 Response resp = handler.manageVnfRequest(manageVnfRequest, "v2");
215                 assertTrue(null != resp);
216         }
217         
218         @Test
219         public void fillVnfRequestTest(){
220                 VnfRequest qr = new VnfRequest();
221                 InfraRequests ar = new InfraRequests();
222                 ar.setVnfId("1003");
223                 ar.setVnfName("vnf");
224                 ar.setVnfType("vnt");
225                 ar.setTenantId("48889690");
226                 ar.setProvStatus("uuu");
227                 ar.setVolumeGroupName("volume");
228                 ar.setVolumeGroupId("38838");
229                 ar.setServiceType("vnf");
230                 ar.setAicNodeClli("djerfe");
231                 ar.setAaiServiceId("599499");
232                 ar.setAicCloudRegion("south");
233                 ar.setVfModuleName("m1");
234                 ar.setVfModuleId("39949");
235                 ar.setVfModuleModelName("test");
236                 ar.setAaiServiceId("37728");
237                 ar.setVnfParams("test");
238                 handler.fillVnfRequest(qr, ar, "v1");
239                 String param = (String)qr.getVnfParams();
240                 assertTrue(param.equals("test"));
241         }
242         
243         @Test
244         public void fillVnfRequestTestV2(){
245                 VnfRequest qr = new VnfRequest();
246                 InfraRequests ar = new InfraRequests();
247                 ar.setVnfId("1003");
248                 ar.setVnfName("vnf");
249                 ar.setVnfType("vnt");
250                 ar.setTenantId("48889690");
251                 ar.setProvStatus("uuu");
252                 ar.setVolumeGroupName("volume");
253                 ar.setVolumeGroupId("38838");
254                 ar.setServiceType("vnf");
255                 ar.setAicNodeClli("djerfe");
256                 ar.setAaiServiceId("599499");
257                 ar.setAicCloudRegion("south");
258                 ar.setVfModuleName("m1");
259                 ar.setVfModuleId("39949");
260                 ar.setVfModuleModelName("test");
261                 ar.setAaiServiceId("37728");
262                 ar.setVnfParams("test");
263                 handler.fillVnfRequest(qr, ar, "v2");
264                 String param = (String)qr.getVnfParams();
265                 assertTrue(param.equals("test"));
266         }
267         @Test
268         public void fillVnfRequestTestV3(){
269                 VnfRequest qr = new VnfRequest();
270                 InfraRequests ar = new InfraRequests();
271                 ar.setVnfId("1003");
272                 ar.setVnfName("vnf");
273                 ar.setVnfType("vnt");
274                 ar.setTenantId("48889690");
275                 ar.setProvStatus("uuu");
276                 ar.setVolumeGroupName("volume");
277                 ar.setVolumeGroupId("38838");
278                 ar.setServiceType("vnf");
279                 ar.setAicNodeClli("djerfe");
280                 ar.setAaiServiceId("599499");
281                 ar.setAicCloudRegion("south");
282                 ar.setVfModuleName("m1");
283                 ar.setVfModuleId("39949");
284                 ar.setVfModuleModelName("test");
285                 ar.setAaiServiceId("37728");
286                 ar.setVnfParams("test");
287                 ar.setServiceInstanceId("38829");
288                 handler.fillVnfRequest(qr, ar, "v3");
289                 String param = (String)qr.getVnfParams();
290                 assertTrue(param.equals("test"));
291         }
292         
293         @Test
294         public void queryFiltersTest(){
295                 new MockUp<RequestsDatabase>() {
296                         @Mock
297                         public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
298                     String queryValue,
299                     String requestType) {
300                                 List <InfraActiveRequests> list = new ArrayList<>();
301                                 InfraActiveRequests req = new InfraActiveRequests();
302                                 req.setAaiServiceId("299392");
303                                 req.setAction("CREATE");
304                                 req.setRequestStatus("COMPLETE");
305                                 req.setProgress(10001L);
306                                 req.setSource("test");
307                                 req.setStartTime(new Timestamp(10020100));
308                                 req.setEndTime(new Timestamp(20020100));
309                                 req.setStatusMessage("message");
310                                 list.add(req);
311                                 return list;
312                         }
313                 };
314                 Response resp = handler.queryFilters("vnfType", "serviceType", "aicNodeClli", "tenantId", "volumeGroupId", "volumeGroupName", "vnfName", "v1");
315                 assertTrue(resp.getEntity().toString() != null);
316         }
317         
318         @Test
319         public void queryFiltersTestNullVnfType(){
320                 new MockUp<RequestsDatabase>() {
321                         @Mock
322                         public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
323                     String queryValue,
324                     String requestType) {
325                                 List <InfraActiveRequests> list = new ArrayList<>();
326                                 InfraActiveRequests req = new InfraActiveRequests();
327                                 req.setAaiServiceId("299392");
328                                 req.setAction("CREATE");
329                                 req.setRequestStatus("COMPLETE");
330                                 req.setProgress(10001L);
331                                 req.setSource("test");
332                                 req.setStartTime(new Timestamp(10020100));
333                                 req.setEndTime(new Timestamp(20020100));
334                                 req.setStatusMessage("message");
335                                 list.add(req);
336                                 return list;
337                         }
338                 };
339                 Response resp = handler.queryFilters(null, null, null, null, null, null, null, "v1");
340                 assertTrue(resp.getEntity().toString() != null);
341         }
342         
343         @Test
344         public void getRequestTest(){
345                 new MockUp<RequestsDatabase>() {
346                         @Mock
347                         public InfraActiveRequests getRequestFromInfraActive (String requestId, String requestType) {
348                                 InfraActiveRequests req = new InfraActiveRequests();
349                                 req.setAaiServiceId("299392");
350                                 req.setAction("CREATE");
351                                 req.setRequestStatus("COMPLETE");
352                                 req.setProgress(10001L);
353                                 req.setSource("test");
354                                 req.setStartTime(new Timestamp(10020100));
355                                 req.setEndTime(new Timestamp(20020100));
356                                 req.setStatusMessage("message");
357                                 return req;
358                         }
359                 };
360                 Response resp = handler.getRequest("388293", "v1");
361                 assertTrue(resp.getEntity().toString() != null);
362         }
363
364 }