2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.mso.apihandlerinfra;
23 import static org.junit.Assert.assertTrue;
25 import java.io.ByteArrayInputStream;
26 import java.io.IOException;
27 import java.io.InputStream;
28 import java.lang.reflect.Field;
30 import java.sql.Timestamp;
31 import java.util.ArrayList;
32 import java.util.List;
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;
64 import javax.ws.rs.core.Response;
65 import javax.ws.rs.core.UriInfo;
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;
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>";
79 public void setup() throws Exception{
81 uriInfo = Mockito.mock(UriInfo.class);
82 Class<?> clazz = VnfRequestHandler.class;
83 handler = (VnfRequestHandler)clazz.newInstance();
85 Field f1 = handler.getClass().getDeclaredField("uriInfo");
87 f1.setAccessible(true);
88 f1.set(handler, uriInfo);
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");
97 mockRDB = new MockUp<RequestsDatabase>() {
99 public InfraActiveRequests checkDuplicateByVnfId(String vnfId, String action, String requestType) {
103 public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {
108 public int updateInfraFinalStatus (String requestId, String requestStatus, String statusMessage, long progress, String responseBody, String lastModifiedBy) {
113 mockMsoRequest = new MockUp<VnfMsoInfraRequest>() {
115 public void createRequestRecord (Status status) {
120 mockCDB = new MockUp<CatalogDatabase>() {
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);
130 public VfModule getVfModuleType(String type, String version) {
131 final VfModule vfModule = new VfModule();
136 public VnfResource getVnfResource (String vnfType, String serviceVersion) {
137 final VnfResource vnfResource = new VnfResource();
142 mockCamudaClient = new MockUp<CamundaClient>() {
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);
158 /*mockCamudaClient = new MockUp<RequestClientFactory>() {
160 public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{
161 RequestClient client = new CamundaClient();
162 client.setUrl("/test/url");
170 public static void tearDown() {
172 mockMsoRequest.tearDown();
174 mockCamudaClient.tearDown();
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);
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);
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);
198 public void manageVnfRequestTestInvalidVersion(){
199 Response resp = handler.manageVnfRequest(manageVnfRequest, "v30");
200 assertTrue(null != resp);
204 public void manageVnfRequest2Test(){
205 Mockito.when(uriInfo.getRequestUri())
206 .thenReturn(URI.create("http://localhost:8080/test"));
208 new MockUp<MsoPropertiesUtils>() {
210 public synchronized final boolean getNoPropertiesState() {
214 Response resp = handler.manageVnfRequest(manageVnfRequest, "v2");
215 assertTrue(null != resp);
219 public void fillVnfRequestTest(){
220 VnfRequest qr = new VnfRequest();
221 InfraRequests ar = new InfraRequests();
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"));
244 public void fillVnfRequestTestV2(){
245 VnfRequest qr = new VnfRequest();
246 InfraRequests ar = new InfraRequests();
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"));
268 public void fillVnfRequestTestV3(){
269 VnfRequest qr = new VnfRequest();
270 InfraRequests ar = new InfraRequests();
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"));
294 public void queryFiltersTest(){
295 new MockUp<RequestsDatabase>() {
297 public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
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");
314 Response resp = handler.queryFilters("vnfType", "serviceType", "aicNodeClli", "tenantId", "volumeGroupId", "volumeGroupName", "vnfName", "v1");
315 assertTrue(resp.getEntity().toString() != null);
319 public void queryFiltersTestNullVnfType(){
320 new MockUp<RequestsDatabase>() {
322 public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
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");
339 Response resp = handler.queryFilters(null, null, null, null, null, null, null, "v1");
340 assertTrue(resp.getEntity().toString() != null);
344 public void getRequestTest(){
345 new MockUp<RequestsDatabase>() {
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");
360 Response resp = handler.getRequest("388293", "v1");
361 assertTrue(resp.getEntity().toString() != null);