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;
34 import javax.ws.rs.core.Response;
35 import javax.ws.rs.core.UriInfo;
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;
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;
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>";
65 private static MockUp<RequestsDatabase> mockRDB;
66 private static MockUp<NetworkMsoInfraRequest> mockMsoRequest;
67 private static MockUp<CatalogDatabase> mockCDB;
68 private static MockUp<CamundaClient> mockCamundaClient;
70 NetworkRequestHandler handler = null;
71 UriInfo uriInfo = null;
74 public void setup() throws Exception{
76 uriInfo = Mockito.mock(UriInfo.class);
78 Class<?> clazz = NetworkRequestHandler.class;
79 handler = (NetworkRequestHandler)clazz.newInstance();
81 Field f1 = handler.getClass().getDeclaredField("uriInfo");
83 f1.setAccessible(true);
84 f1.set(handler, uriInfo);
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");
94 mockRDB = new MockUp<RequestsDatabase>() {
96 public InfraActiveRequests checkDuplicateByVnfName (String vnfName, String action, String requestType) {
100 public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {
105 public int updateInfraFinalStatus (String requestId, String requestStatus, String statusMessage, long progress, String responseBody, String lastModifiedBy) {
110 mockMsoRequest = new MockUp<NetworkMsoInfraRequest>() {
112 public void createRequestRecord (Status status) {
117 mockCDB = new MockUp<CatalogDatabase>() {
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;
127 public VfModule getVfModuleType(String type, String version) {
128 final VfModule vfModule = new VfModule();
133 public VnfResource getVnfResource (String vnfType, String serviceVersion) {
134 final VnfResource vnfResource = new VnfResource();
139 mockCamundaClient = new MockUp<CamundaClient>() {
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);
158 public static void tearDown() {
160 mockMsoRequest.tearDown();
162 mockCamundaClient.tearDown();
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);
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);
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);
187 public void manageNetworkRequestTestV3Duplicate(){
189 MockUp<RequestsDatabase> mockDuplicate = new MockUp<RequestsDatabase>() {
191 public InfraActiveRequests checkDuplicateByVnfName(String vnfName, String action, String requestType) {
192 return new InfraActiveRequests();
197 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
198 Response resp = handler.manageNetworkRequest(REQ_XML, "v3");
199 assertTrue(null != resp);
201 mockDuplicate.tearDown();
206 public void manageVnfRequestTestInvalidVersion(){
207 Response resp = handler.manageNetworkRequest(REQ_XML, "v249");
208 assertTrue(null != resp);
212 public void manageVnfRequest2Test(){
213 Mockito.when(uriInfo.getRequestUri())
214 .thenReturn(URI.create("http://localhost:8080/test"));
216 new MockUp<MsoPropertiesUtils>() {
218 public synchronized final boolean getNoPropertiesState() {
222 Response resp = handler.manageNetworkRequest(REQ_XML, "v2");
223 assertTrue(null != resp);
227 public void fillNetworkRequestTestV1(){
228 NetworkRequest qr = new NetworkRequest();
229 InfraRequests ar = new InfraRequests();
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"));
251 public void fillNetworkRequestTestV2(){
252 NetworkRequest qr = new NetworkRequest();
253 InfraRequests ar = new InfraRequests();
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"));
275 public void fillNetworkRequestTestV3(){
276 NetworkRequest qr = new NetworkRequest();
277 InfraRequests ar = new InfraRequests();
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"));
300 public void queryFiltersTest(){
301 new MockUp<RequestsDatabase>() {
303 public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
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");
320 Response resp = handler.queryFilters("networkType", "serviceType", "aicNodeClli", "tenantId", "v1");
321 assertTrue(resp.getEntity().toString() != null);
325 public void getRequestTest(){
326 new MockUp<RequestsDatabase>() {
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");
341 Response resp = handler.getRequest("388293", "v1");
342 assertTrue(resp.getEntity().toString() != null);