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;
37 import mockit.Expectations;
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;
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;
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>";
69 private static MockUp<RequestsDatabase> mockRDB;
70 private static MockUp<CatalogDatabase> mockCDB;
71 private static MockUp<CamundaClient> mockCamundaClient;
73 NetworkRequestHandler handler = null;
74 UriInfo uriInfo = null;
77 public void setup() throws Exception{
79 uriInfo = Mockito.mock(UriInfo.class);
81 Class<?> clazz = NetworkRequestHandler.class;
82 handler = (NetworkRequestHandler)clazz.newInstance();
84 Field f1 = handler.getClass().getDeclaredField("uriInfo");
86 f1.setAccessible(true);
87 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 checkDuplicateByVnfName (String vnfName, 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 mockCDB = new MockUp<CatalogDatabase>() {
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;
123 public VfModule getVfModuleType(String type, String version) {
124 final VfModule vfModule = new VfModule();
129 public VnfResource getVnfResource (String vnfType, String serviceVersion) {
130 final VnfResource vnfResource = new VnfResource();
135 mockCamundaClient = new MockUp<CamundaClient>() {
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);
154 public static void tearDown() {
157 mockCamundaClient.tearDown();
161 public void manageVnfRequestTest(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
162 @Mocked Session session){
163 new Expectations() {{
164 sessionFactoryManager.getSessionFactory().openSession(); result = session;
166 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
167 Response resp = handler.manageNetworkRequest(REQ_XML, "v2");
168 assertTrue(null != resp);
172 public void manageVnfRequestTestV1(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
173 @Mocked Session session){
174 new Expectations() {{
175 sessionFactoryManager.getSessionFactory().openSession(); result = session;
177 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
178 Response resp = handler.manageNetworkRequest(REQ_XML, "v1");
179 assertTrue(null != resp);
183 public void manageVnfRequestTestV3(@Mocked AbstractSessionFactoryManager sessionFactoryManager,
184 @Mocked Session session){
185 new Expectations() {{
186 sessionFactoryManager.getSessionFactory().openSession(); result = session;
188 Mockito.when(uriInfo.getRequestUri()).thenReturn(URI.create("http://localhost:8080/test"));
189 Response resp = handler.manageNetworkRequest(REQ_XML, "v3");
190 assertTrue(null != resp);
194 public void manageVnfRequestTestInvalidVersion(){
195 Response resp = handler.manageNetworkRequest(REQ_XML, "v249");
196 assertTrue(null != resp);
200 public void manageVnfRequest2Test(){
201 Mockito.when(uriInfo.getRequestUri())
202 .thenReturn(URI.create("http://localhost:8080/test"));
204 new MockUp<MsoPropertiesUtils>() {
206 public synchronized final boolean getNoPropertiesState() {
210 Response resp = handler.manageNetworkRequest(REQ_XML, "v2");
211 assertTrue(null != resp);
215 public void fillNetworkRequestTestV1(){
216 NetworkRequest qr = new NetworkRequest();
217 InfraRequests ar = new InfraRequests();
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"));
239 public void fillNetworkRequestTestV2(){
240 NetworkRequest qr = new NetworkRequest();
241 InfraRequests ar = new InfraRequests();
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"));
263 public void fillNetworkRequestTestV3(){
264 NetworkRequest qr = new NetworkRequest();
265 InfraRequests ar = new InfraRequests();
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"));
288 public void queryFiltersTest(){
289 new MockUp<RequestsDatabase>() {
291 public List <InfraActiveRequests> getRequestListFromInfraActive (String queryAttributeName,
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");
308 Response resp = handler.queryFilters("networkType", "serviceType", "aicNodeClli", "tenantId", "v1");
309 assertTrue(resp.getEntity().toString() != null);
313 public void getRequestTest(){
314 new MockUp<RequestsDatabase>() {
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");
329 Response resp = handler.getRequest("388293", "v1");
330 assertTrue(resp.getEntity().toString() != null);