b18219225779ac4169e7dc33cd386eb3e461cfa5
[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 javax.ws.rs.core.Response;
35 import javax.ws.rs.core.UriInfo;
36
37 import mockit.Mock;
38 import mockit.MockUp;
39
40 import org.apache.http.HttpResponse;
41 import org.apache.http.ProtocolVersion;
42 import org.apache.http.client.ClientProtocolException;
43 import org.apache.http.entity.BasicHttpEntity;
44 import org.apache.http.message.BasicHttpResponse;
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
51 import org.openecomp.mso.apihandler.common.CamundaClient;
52 import org.openecomp.mso.apihandlerinfra.networkbeans.NetworkRequest;
53 import org.openecomp.mso.db.catalog.CatalogDatabase;
54 import org.openecomp.mso.db.catalog.beans.NetworkRecipe;
55 import org.openecomp.mso.db.catalog.beans.VfModule;
56 import org.openecomp.mso.db.catalog.beans.VnfResource;
57 import org.openecomp.mso.properties.MsoPropertiesFactory;
58 import org.openecomp.mso.requestsdb.InfraActiveRequests;
59 import org.openecomp.mso.requestsdb.InfraRequests;
60 import org.openecomp.mso.requestsdb.RequestsDatabase;
61
62 public class NetworkRequestHandlerTest {
63         private static final String REQ_XML = "<network-request xmlns=\"http://org.openecomp/mso/infra/network-request/v1\"> <request-info> <request-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</request-id><action>CREATE</action> <source>VID</source> <service-instance-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</service-instance-id></request-info> <network-inputs> <network-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</network-id> <network-name>nwInstanceName</network-name> <network-type>nwModelName</network-type><modelCustomizationId>e1fc3ed3-31e5-48a8-913b-23184c1e9443</modelCustomizationId> <aic-cloud-region>e1fc3ed3-31e5-48a8-913b-23184c1e9443</aic-cloud-region> <tenant-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</tenant-id><service-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</service-id> <backout-on-failure>false</backout-on-failure><sdncVersion>1802</sdncVersion><service-instance-id>e1fc3ed3-31e5-48a8-913b-23184c1e9443</service-instance-id></network-inputs> <network-params></network-params> </network-request>";
64
65         private static MockUp<RequestsDatabase> mockRDB;
66         private static MockUp<NetworkMsoInfraRequest> mockMsoRequest;
67         private static MockUp<CatalogDatabase> mockCDB;
68         private static MockUp<CamundaClient> mockCamundaClient;
69
70         NetworkRequestHandler handler = null;
71         UriInfo uriInfo = null;
72         
73         @Before
74         public void setup() throws Exception{
75                 
76                 uriInfo = Mockito.mock(UriInfo.class);
77
78                 Class<?> clazz = NetworkRequestHandler.class;
79                 handler = (NetworkRequestHandler)clazz.newInstance();
80                 
81                 Field f1 = handler.getClass().getDeclaredField("uriInfo");
82
83                 f1.setAccessible(true);
84         f1.set(handler, uriInfo);
85
86         }
87
88         @BeforeClass
89         public static void setUp() throws Exception {
90                 MsoPropertiesFactory msoPropertiesFactory = new MsoPropertiesFactory();
91                 msoPropertiesFactory.removeAllMsoProperties();
92                 msoPropertiesFactory.initializeMsoProperties(Constants.MSO_PROP_APIHANDLER_INFRA, "src/test/resources/mso.apihandler-infra.properties");
93
94                 mockRDB = new MockUp<RequestsDatabase>() {
95                         @Mock
96                         public InfraActiveRequests checkDuplicateByVnfName (String vnfName, String action, String requestType) {
97                                 return null;
98                         }
99                         @Mock
100                         public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {
101                                 return 1;
102                         }
103
104                         @Mock
105                         public int updateInfraFinalStatus (String requestId, String requestStatus, String statusMessage, long progress, String responseBody, String lastModifiedBy) {
106                                 return 1;
107                         }
108                 };
109
110                 mockMsoRequest = new MockUp<NetworkMsoInfraRequest>() {
111                         @Mock
112                         public void createRequestRecord (Status status) {
113                                 return;
114                         }
115                 };
116
117                 mockCDB = new MockUp<CatalogDatabase>() {
118                         @Mock
119                         public NetworkRecipe getNetworkRecipe (String networkType, String action, String serviceType) {
120                                 final NetworkRecipe networkRecipe = new NetworkRecipe();
121                                 networkRecipe.setOrchestrationUri("test/vnf");
122                                 networkRecipe.setRecipeTimeout(180);
123                                 return networkRecipe;
124                         }
125
126                         @Mock
127                         public VfModule getVfModuleType(String type, String version) {
128                                 final VfModule vfModule = new VfModule();
129                                 return vfModule;
130                         }
131
132                         @Mock
133                         public VnfResource getVnfResource (String vnfType, String serviceVersion) {
134                                 final VnfResource vnfResource = new VnfResource();
135                                 return vnfResource;
136                         }
137                 };
138
139                 mockCamundaClient = new MockUp<CamundaClient>() {
140                         @Mock
141                         public HttpResponse post(String camundaReqXML, String requestId,
142                                                                          String requestTimeout, String schemaVersion, String serviceInstanceId, String action)
143                                         throws ClientProtocolException, IOException {
144                                 ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);
145                                 HttpResponse resp = new BasicHttpResponse(pv,200, "test response");
146                                 BasicHttpEntity entity = new BasicHttpEntity();
147                                 String body = "{\"response\":\"success\",\"message\":\"success\"}";
148                                 InputStream instream = new ByteArrayInputStream(body.getBytes());
149                                 entity.setContent(instream);
150                                 resp.setEntity(entity);
151                                 return resp;
152                         }
153                 };
154
155         }
156
157         @AfterClass
158         public static void tearDown() {
159                 mockRDB.tearDown();
160                 mockMsoRequest.tearDown();
161                 mockCDB.tearDown();
162                 mockCamundaClient.tearDown();
163         }
164         
165         @Test
166         public void manageVnfRequestTest(){
167                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
168                 Response resp = handler.manageNetworkRequest(REQ_XML, "v2");
169                 assertTrue(null != resp);
170         }
171
172         @Test
173         public void manageVnfRequestTestV1(){
174                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
175                 Response resp = handler.manageNetworkRequest(REQ_XML, "v1");
176                 assertTrue(null != resp);
177         }
178         
179         @Test
180         public void manageVnfRequestTestV3(){
181                 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
182                 Response resp = handler.manageNetworkRequest(REQ_XML, "v3");
183                 assertTrue(null != resp);
184         }
185
186         /*@Test
187         public void manageNetworkRequestTestV3Duplicate(){
188
189                 MockUp<RequestsDatabase> mockDuplicate = new MockUp<RequestsDatabase>() {
190                         @Mock
191                         public InfraActiveRequests checkDuplicateByVnfName(String vnfName, String action, String requestType) {
192                                 return new InfraActiveRequests();
193                         }
194                 };
195
196                 try {
197                         Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
198                         Response resp = handler.manageNetworkRequest(REQ_XML, "v3");
199                         assertTrue(null != resp);
200                 } finally {
201                         mockDuplicate.tearDown();
202                 }
203         }*/
204         
205         @Test
206         public void manageVnfRequestTestInvalidVersion(){
207                 Response resp = handler.manageNetworkRequest(REQ_XML, "v249");
208                 assertTrue(null != resp);
209         }
210         
211         @Test
212         public void manageVnfRequest2Test(){
213                 Mockito.when(uriInfo.getRequestUri())
214         .thenReturn(URI.create("http://localhost:8080/test"));
215                 
216                 new MockUp<MsoPropertiesUtils>() {
217                         @Mock
218                         public synchronized final boolean getNoPropertiesState() {
219                                 return false;
220                         }
221                 };
222                 Response resp = handler.manageNetworkRequest(REQ_XML, "v2");
223                 assertTrue(null != resp);
224         }
225         
226         @Test
227         public void fillNetworkRequestTestV1(){
228                 NetworkRequest qr = new NetworkRequest();
229                 InfraRequests ar = new InfraRequests();
230                 ar.setVnfId("1003");
231                 ar.setVnfName("vnf");
232                 ar.setVnfType("vnt");
233                 ar.setTenantId("48889690");
234                 ar.setProvStatus("uuu");
235                 ar.setVolumeGroupName("volume");
236                 ar.setVolumeGroupId("38838");
237                 ar.setServiceType("vnf");
238                 ar.setAicNodeClli("djerfe");
239                 ar.setAaiServiceId("599499");
240                 ar.setAicCloudRegion("south");
241                 ar.setVfModuleName("m1");
242                 ar.setVfModuleId("39949");
243                 ar.setVfModuleModelName("test");
244                 ar.setAaiServiceId("37728");
245                 ar.setVnfParams("test");
246                 handler.fillNetworkRequest(qr, ar, "v1");
247                 String param = (String)qr.getNetworkParams();
248                 assertTrue(param.equals("test"));
249         }
250         @Test
251         public void fillNetworkRequestTestV2(){
252                 NetworkRequest qr = new NetworkRequest();
253                 InfraRequests ar = new InfraRequests();
254                 ar.setVnfId("1003");
255                 ar.setVnfName("vnf");
256                 ar.setVnfType("vnt");
257                 ar.setTenantId("48889690");
258                 ar.setProvStatus("uuu");
259                 ar.setVolumeGroupName("volume");
260                 ar.setVolumeGroupId("38838");
261                 ar.setServiceType("vnf");
262                 ar.setAicNodeClli("djerfe");
263                 ar.setAaiServiceId("599499");
264                 ar.setAicCloudRegion("south");
265                 ar.setVfModuleName("m1");
266                 ar.setVfModuleId("39949");
267                 ar.setVfModuleModelName("test");
268                 ar.setAaiServiceId("37728");
269                 ar.setVnfParams("test");
270                 handler.fillNetworkRequest(qr, ar, "v2");
271                 String param = (String)qr.getNetworkParams();
272                 assertTrue(param.equals("test"));
273         }
274         @Test
275         public void fillNetworkRequestTestV3(){
276                 NetworkRequest qr = new NetworkRequest();
277                 InfraRequests ar = new InfraRequests();
278                 ar.setVnfId("1003");
279                 ar.setVnfName("vnf");
280                 ar.setVnfType("vnt");
281                 ar.setTenantId("48889690");
282                 ar.setProvStatus("uuu");
283                 ar.setVolumeGroupName("volume");
284                 ar.setVolumeGroupId("38838");
285                 ar.setServiceType("vnf");
286                 ar.setAicNodeClli("djerfe");
287                 ar.setAaiServiceId("599499");
288                 ar.setAicCloudRegion("south");
289                 ar.setVfModuleName("m1");
290                 ar.setVfModuleId("39949");
291                 ar.setVfModuleModelName("test");
292                 ar.setAaiServiceId("37728");
293                 ar.setVnfParams("test");
294                 handler.fillNetworkRequest(qr, ar, "v3");
295                 String param = (String)qr.getNetworkParams();
296                 assertTrue(param.equals("test"));
297         }
298         
299         @Test
300         public void queryFiltersTest(){
301                 new MockUp<RequestsDatabase>() {
302                         @Mock
303                         public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
304                     String queryValue,
305                     String requestType) {
306                                 List <InfraActiveRequests> list = new ArrayList<>();
307                                 InfraActiveRequests req = new InfraActiveRequests();
308                                 req.setAaiServiceId("299392");
309                                 req.setAction("CREATE");
310                                 req.setRequestStatus("COMPLETE");
311                                 req.setProgress(10001L);
312                                 req.setSource("test");
313                                 req.setStartTime(new Timestamp(10020100));
314                                 req.setEndTime(new Timestamp(20020100));
315                                 req.setStatusMessage("message");
316                                 list.add(req);
317                                 return list;
318                         }
319                 };
320                 Response resp = handler.queryFilters("networkType", "serviceType", "aicNodeClli", "tenantId", "v1");
321                 assertTrue(resp.getEntity().toString() != null);
322         }
323         
324         @Test
325         public void getRequestTest(){
326                 new MockUp<RequestsDatabase>() {
327                         @Mock
328                         public InfraActiveRequests getRequestFromInfraActive (String requestId, String requestType) {
329                                 InfraActiveRequests req = new InfraActiveRequests();
330                                 req.setAaiServiceId("299392");
331                                 req.setAction("CREATE");
332                                 req.setRequestStatus("COMPLETE");
333                                 req.setProgress(10001L);
334                                 req.setSource("test");
335                                 req.setStartTime(new Timestamp(10020100));
336                                 req.setEndTime(new Timestamp(20020100));
337                                 req.setStatusMessage("message");
338                                 return req;
339                         }
340                 };
341                 Response resp = handler.getRequest("388293", "v1");
342                 assertTrue(resp.getEntity().toString() != null);
343         }
344         
345 }