2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
20 package org.openecomp.mso.apihandlerinfra;
\r
22 import static org.junit.Assert.assertEquals;
\r
23 import static org.junit.Assert.assertFalse;
\r
24 import static org.junit.Assert.assertNotNull;
\r
26 import java.io.IOException;
\r
27 import java.net.URI;
\r
28 import java.sql.Timestamp;
\r
29 import java.time.LocalDateTime;
\r
30 import java.util.Collections;
\r
31 import java.util.List;
\r
32 import java.util.Map;
\r
34 import javax.ws.rs.core.Response;
\r
35 import javax.ws.rs.core.UriInfo;
\r
37 import mockit.MockUp;
\r
38 import org.apache.http.HttpStatus;
\r
39 import org.jboss.resteasy.spi.ResteasyUriInfo;
\r
40 import org.junit.Test;
\r
41 import org.mockito.Mock;
\r
42 import org.mockito.Mockito;
\r
43 import org.openecomp.mso.apihandler.common.ValidationException;
\r
44 import org.openecomp.mso.requestsdb.InfraActiveRequests;
\r
45 import org.openecomp.mso.requestsdb.RequestsDatabase;
\r
46 import org.openecomp.mso.serviceinstancebeans.GetOrchestrationResponse;
\r
47 import org.openecomp.mso.serviceinstancebeans.InstanceReferences;
\r
48 import org.openecomp.mso.serviceinstancebeans.Request;
\r
49 import org.openecomp.mso.serviceinstancebeans.RequestStatus;
\r
50 import org.openecomp.mso.serviceinstancebeans.ServiceInstancesRequest;
\r
52 import com.fasterxml.jackson.core.JsonParseException;
\r
53 import com.fasterxml.jackson.databind.JsonMappingException;
\r
54 import com.fasterxml.jackson.databind.ObjectMapper;
\r
56 public class OrchestrationRequestsTest {
\r
58 private static final String CHECK_HTML = "<!DOCTYPE html><html><head><meta charset=\"ISO-8859-1\"><title></title></head><body></body></html>";
\r
59 public static final Response RESPONSE = Response.status(HttpStatus.SC_OK).entity(CHECK_HTML).build();
\r
61 private static RequestsDatabase db;
\r
62 private static OrchestrationRequests orReq;
\r
63 private static GetOrchestrationResponse orRes;
\r
66 public void testGetOrchestrationRequest() {
\r
67 orReq = Mockito.mock(OrchestrationRequests.class);
\r
68 orRes = new GetOrchestrationResponse();
\r
70 // create InfraActiveRequests object
\r
71 InfraActiveRequests infraRequests = new InfraActiveRequests();
\r
72 infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");
\r
73 infraRequests.setNetworkType("CONTRAIL30_BASIC");
\r
74 infraRequests.setRequestType("createInstance");
\r
75 infraRequests.setSource("VID");
\r
76 infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");
\r
77 infraRequests.setServiceInstanceId("bc305d54-75b4-431b-adb2-eb6b9e546014");
\r
78 infraRequests.setRequestStatus("IN_PROGRESS");
\r
79 infraRequests.setRequestorId("ab1234");
\r
80 String body = "{\"modelInfo\":{\"modelInvariantId\":\"9771b085-4705-4bf7-815d-8c0627bb7e36\",\"modelType\":\"service\",\"modelName\":\"Service with VNFs with modules\",\"modelVersion\":\"1.0\"}}";
\r
81 infraRequests.setRequestBody(body);
\r
83 db = Mockito.mock(RequestsDatabase.class);
\r
84 Mockito.when(db.getRequestFromInfraActive(Mockito.anyString())).thenReturn(infraRequests);
\r
86 ///// mock mapInfraActiveRequestToRequest()
\r
87 Request request = new Request();
\r
88 request.setRequestId(infraRequests.getRequestId());
\r
89 request.setRequestScope(infraRequests.getRequestScope());
\r
90 request.setRequestType(infraRequests.getRequestAction());
\r
92 InstanceReferences ir = new InstanceReferences();
\r
93 if (infraRequests.getNetworkId() != null)
\r
94 ir.setNetworkInstanceId(infraRequests.getNetworkId());
\r
95 if (infraRequests.getNetworkName() != null)
\r
96 ir.setNetworkInstanceName(infraRequests.getNetworkName());
\r
97 if (infraRequests.getServiceInstanceId() != null)
\r
98 ir.setServiceInstanceId(infraRequests.getServiceInstanceId());
\r
99 if (infraRequests.getServiceInstanceName() != null)
\r
100 ir.setServiceInstanceName(infraRequests.getServiceInstanceName());
\r
101 if (infraRequests.getVfModuleId() != null)
\r
102 ir.setVfModuleInstanceId(infraRequests.getVfModuleId());
\r
103 if (infraRequests.getVfModuleName() != null)
\r
104 ir.setVfModuleInstanceName(infraRequests.getVfModuleName());
\r
105 if (infraRequests.getVnfId() != null)
\r
106 ir.setVnfInstanceId(infraRequests.getVnfId());
\r
107 if (infraRequests.getVnfName() != null)
\r
108 ir.setVnfInstanceName(infraRequests.getVnfName());
\r
109 if (infraRequests.getVolumeGroupId() != null)
\r
110 ir.setVolumeGroupInstanceId(infraRequests.getVolumeGroupId());
\r
111 if (infraRequests.getVolumeGroupName() != null)
\r
112 ir.setVolumeGroupInstanceName(infraRequests.getVolumeGroupName());
\r
113 if (infraRequests.getRequestorId() != null)
\r
114 ir.setRequestorId(infraRequests.getRequestorId());
\r
116 request.setInstanceReferences(ir);
\r
117 RequestStatus status = new RequestStatus();
\r
119 if (infraRequests.getRequestStatus() != null) {
\r
120 status.setRequestState(infraRequests.getRequestStatus());
\r
123 request.setRequestStatus(status);
\r
124 // RequestStatus reqStatus = request.getRequestStatus();
\r
125 orRes.setRequest(request);
\r
126 // Mockito.when(orReq.getOrchestrationRequest(Mockito.anyString(), Mockito.anyString())).thenReturn(RESPONSE);
\r
127 Response resp = orReq.getOrchestrationRequest("rq1234d1-5a33-55df-13ab-12abad84e333", "v3");
\r
129 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestId(),
\r
130 "rq1234d1-5a33-55df-13ab-12abad84e333");
\r
131 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getSource(), "VID");
\r
132 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getTenantId(),
\r
133 "19123c2924c648eb8e42a3c1f14b7682");
\r
134 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getServiceInstanceId(),
\r
135 "bc305d54-75b4-431b-adb2-eb6b9e546014");
\r
136 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestStatus(),
\r
138 assertEquals(db.getRequestFromInfraActive("rq1234d1-5a33-55df-13ab-12abad84e333").getRequestorId(),
\r
140 assertEquals(request.getInstanceReferences().getServiceInstanceId(),"bc305d54-75b4-431b-adb2-eb6b9e546014");
\r
141 assertEquals(request.getInstanceReferences().getRequestorId(),"ab1234");
\r
142 assertEquals(orRes.getRequest().getRequestId(), "rq1234d1-5a33-55df-13ab-12abad84e333");
\r
143 // assertEquals(resp.getStatus(), HttpStatus.SC_OK);
\r
144 } catch (Exception e) {
\r
146 e.printStackTrace();
\r
151 public void testGetOrchestrationRequestNotPresent() {
\r
152 String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\", \"requestorId\": \"ab1234\"}}}";
\r
155 InfraActiveRequests infraRequests = new InfraActiveRequests();
\r
156 infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");
\r
157 infraRequests.setNetworkType("CONTRAIL30_BASIC");
\r
158 infraRequests.setSource("VID");
\r
159 infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");
\r
160 infraRequests.setServiceInstanceId("ea4d5374-d28d-4bbf-9691-22985f088b12");
\r
161 infraRequests.setRequestStatus(Status.IN_PROGRESS.name());
\r
162 infraRequests.setStartTime(Timestamp.valueOf(LocalDateTime.now()));
\r
163 final List<InfraActiveRequests> infraActiveRequests = Collections.singletonList(infraRequests);
\r
165 // create InfraActiveRequests object
\r
166 final MockUp<RequestsDatabase> mockUpRDB = new MockUp<RequestsDatabase>() {
\r
168 public InfraActiveRequests getRequestFromInfraActive(String requestId) {
\r
169 return infraRequests;
\r
173 public List<InfraActiveRequests> getOrchestrationFiltersFromInfraActive(Map<String, List<String>> orchestrationMap) {
\r
174 return infraActiveRequests;
\r
178 public int updateInfraStatus(String requestId, String requestStatus, String lastModifiedBy) {
\r
183 Response response = null;
\r
185 OrchestrationRequests requests = new OrchestrationRequests();
\r
186 final ResteasyUriInfo ui = new ResteasyUriInfo(new URI("", "", "", "filter=service-instance-id:EQUALS:abc", ""));
\r
187 response = requests.getOrchestrationRequest(ui,"v5");
\r
189 mockUpRDB.tearDown();
\r
191 assertEquals(HttpStatus.SC_OK, response.getStatus());
\r
192 assertNotNull(response.getEntity());
\r
195 } catch (Exception e) {
\r
197 e.printStackTrace();
\r
202 public void testUnlockOrchestrationRequest()
\r
203 throws JsonParseException, JsonMappingException, IOException, ValidationException {
\r
204 ObjectMapper mapper = new ObjectMapper();
\r
205 String requestJSON = " {\"requestDetails\": {\"requestInfo\": { \"source\": \"VID\", \"requestorId\": \"ab1234\"}}}";
\r
206 //String requestJSON = "{\"requestDetails\":{\"requestInfo\":{\"instanceName\":\"Vfmodule_vLB-0514-1\",\"source\":\"VID\",\"suppressRollback\":false,\"requestorId\":\"demo\"},\"modelInfo\":{\"modelType\":\"vfModule\",\"modelInvariantId\":\"80d62376-2d6d-4618-b666-bf00d0e58296\",\"modelVersionId\":\"578b52e5-4572-444d-8de7-2c140ec2e6e5\",\"modelName\":\"Vloadbalancer..base_vlb..module-0\",\"modelVersion\":\"1\",\"modelCustomizationId\":\"bf87db73-2854-4cd1-adfd-8cd08e12befe\",\"modelCustomizationName\":\"Vloadbalancer..base_vlb..module-0\"},\"requestParameters\":{\"usePreload\":true},\"cloudConfiguration\":{\"lcpCloudRegionId\":\"RegionOne\",\"tenantId\":\"ebb0ea7144004bacac1e39ff23105fa7\"},\"relatedInstanceList\":[{\"relatedInstance\":{\"instanceId\":\"60e28eb9-2808-4a5a-830f-ec982f01dcfe\",\"modelInfo\":{\"modelType\":\"service\",\"modelName\":\"vLoadBalancer\",\"modelInvariantId\":\"3f95e3ed-394d-4301-8c9b-c5f39ff89cfd\",\"modelVersion\":\"1.0\",\"modelVersionId\":\"da1b5347-7bcb-4cc4-8c29-d18dafdb1a47\"}}},{\"relatedInstance\":{\"instanceId\":\"338811a1-f7cd-4093-9903-d0f69b7cb176\",\"modelInfo\":{\"modelType\":\"vnf\",\"modelName\":\"vLoadBalancer\",\"modelInvariantId\":\"040740de-1ce8-4737-ad39-970684b0e3e8\",\"modelVersion\":\"1.0\",\"modelVersionId\":\"5fd1ce25-c414-4baf-903b-5042a60cfb02\",\"modelCustomizationId\":\"5801ace5-7cc7-4011-b677-165a0e8a2a27\",\"modelCustomizationName\":\"vLoadBalancer 0\"}}}]}}";
\r
208 MsoRequest msoRequest = new MsoRequest("rq1234d1-5a33-55df-13ab-12abad84e333");
\r
209 ServiceInstancesRequest sir = mapper.readValue(requestJSON, ServiceInstancesRequest.class);
\r
210 msoRequest.parseOrchestration(sir);
\r
212 //create object instead of a DB call.
\r
215 final MockUp<RequestsDatabase> mockUp = new MockUp<RequestsDatabase>() {
\r
217 public InfraActiveRequests getRequestFromInfraActive(String requestId) {
\r
218 InfraActiveRequests infraRequests = new InfraActiveRequests();
\r
219 infraRequests.setRequestId("rq1234d1-5a33-55df-13ab-12abad84e333");
\r
220 infraRequests.setNetworkType("CONTRAIL30_BASIC");
\r
221 infraRequests.setSource("VID");
\r
222 infraRequests.setTenantId("19123c2924c648eb8e42a3c1f14b7682");
\r
223 infraRequests.setServiceInstanceId("ea4d5374-d28d-4bbf-9691-22985f088b12");
\r
224 infraRequests.setRequestStatus(Status.IN_PROGRESS.name());
\r
225 infraRequests.setStartTime(Timestamp.valueOf(LocalDateTime.now()));
\r
226 infraRequests.setRequestBody(requestJSON);
\r
227 return infraRequests;
\r
231 public int updateInfraStatus(String requestId, String requestStatus, String lastModifiedBy) {
\r
236 final Response response;
\r
238 OrchestrationRequests requests = new OrchestrationRequests();
\r
239 response = requests.unlockOrchestrationRequest(requestJSON, "rq1234d1-5a33-55df-13ab-12abad84e333", "v5");
\r
244 assertEquals(HttpStatus.SC_NO_CONTENT, response.getStatus());
\r
245 assertEquals("", response.getEntity().toString());
\r