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