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.sdc.ci.tests.utils.rest;
23 import java.io.FileNotFoundException;
24 import java.io.IOException;
25 import java.util.HashMap;
28 import org.json.simple.JSONObject;
29 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
30 import org.openecomp.sdc.be.model.Component;
31 import org.openecomp.sdc.be.model.DistributionStatusEnum;
32 import org.openecomp.sdc.be.model.LifecycleStateEnum;
33 import org.openecomp.sdc.be.model.Product;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.ci.tests.api.Urls;
36 import org.openecomp.sdc.ci.tests.config.Config;
37 import org.openecomp.sdc.ci.tests.datatypes.ProductReqDetails;
38 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
39 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
40 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
41 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
42 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
43 import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
44 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
45 import org.openecomp.sdc.ci.tests.utils.Utils;
46 import org.openecomp.sdc.ci.tests.utils.general.ElementFactory;
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
50 public class LifecycleRestUtils extends BaseRestUtils {
51 private static Logger logger = LoggerFactory.getLogger(LifecycleRestUtils.class.getName());
52 public static final String COMMENT = "comment";
54 public static RestResponse changeResourceState(ResourceReqDetails resourceDetails, User sdncModifierDetails,
55 String version, LifeCycleStatesEnum LifeCycleStatesEnum) throws IOException {
56 return changeResourceState(resourceDetails, sdncModifierDetails, LifeCycleStatesEnum,
57 createLifecycleCommentJson(COMMENT));
60 public static RestResponse changeResourceState(ResourceReqDetails resourceDetails, User sdncModifierDetails,
61 String version, LifeCycleStatesEnum LifeCycleStatesEnum, String LifecycleChangeInfo) throws IOException {
63 return changeResourceState(resourceDetails, sdncModifierDetails, LifeCycleStatesEnum, LifecycleChangeInfo);
67 public static RestResponse changeResourceState(ResourceReqDetails resourceDetails, User sdncModifierDetails,
68 LifeCycleStatesEnum LifeCycleStatesEnum) throws IOException {
70 return changeResourceState(resourceDetails, sdncModifierDetails, LifeCycleStatesEnum,
71 createLifecycleCommentJson(COMMENT));
75 public static RestResponse changeResourceState(ResourceReqDetails resourceDetails, String modifierUserId,
76 LifeCycleStatesEnum LifeCycleStatesEnum) throws IOException {
77 User user = new User();
78 user.setUserId(modifierUserId);
79 return changeResourceState(resourceDetails, user, LifeCycleStatesEnum, createLifecycleCommentJson(COMMENT));
82 private static RestResponse changeResourceState(ResourceReqDetails resourceDetails, User sdncModifierDetails,
83 LifeCycleStatesEnum LifeCycleStatesEnum, String LifecycleChangeInfo) throws IOException {
84 Config config = Utils.getConfig();
85 String url = String.format(Urls.CHANGE_RESOURCE_LIFECYCLE_STATE, config.getCatalogBeHost(),
86 config.getCatalogBePort(), resourceDetails.getUniqueId(), LifeCycleStatesEnum);
87 // System.out.println("url: " + url);
89 RestResponse LifeCycleStatesEnumResourceResponse = sendPost(url, LifecycleChangeInfo,
90 sdncModifierDetails.getUserId(), acceptHeaderData);
91 if (LifeCycleStatesEnumResourceResponse.getErrorCode() == STATUS_CODE_SUCCESS) {
92 String stateFromJsonResponse = ResponseParser
93 .getValueFromJsonResponse(LifeCycleStatesEnumResourceResponse.getResponse(), "lifecycleState");
94 resourceDetails.setVersion(ResponseParser.getVersionFromResponse(LifeCycleStatesEnumResourceResponse));
95 resourceDetails.setUniqueId(ResponseParser.getUniqueIdFromResponse(LifeCycleStatesEnumResourceResponse));
96 if (stateFromJsonResponse != null) {
97 resourceDetails.setLifecycleState(LifecycleStateEnum.valueOf(stateFromJsonResponse));
100 return LifeCycleStatesEnumResourceResponse;
103 public static RestResponse changeExternalResourceState(String uuid, User sdncModifierDetails, LifeCycleStatesEnum lifeCycleStatesEnum) throws IOException {
104 String url = String.format(Urls.CHANGE_RESOURCE_LIFECYCLE_STATE_EXTERNAL_API, "localhost", "8080", uuid, lifeCycleStatesEnum);
105 String userId = sdncModifierDetails.getUserId();
106 Map<String, String> headersMap = new HashMap<>();
107 headersMap.put(HttpHeaderEnum.CACHE_CONTROL.getValue(), "no-cache");
108 headersMap.put(HttpHeaderEnum.AUTHORIZATION.getValue(), "Basic dGVzdDoxMjM0NTY=");
109 headersMap.put("X-ECOMP-InstanceID", "test");
110 return sendPost(url, createLifecycleCommentJson(COMMENT), userId, acceptHeaderData,headersMap);
113 public static RestResponse changeExternalServiceState(ServiceReqDetails serviceDetails, User sdncModifierDetails, LifeCycleStatesEnum lifeCycleStatesEnum) throws IOException {
114 String url = String.format(Urls.CHANGE_SERVICE_LIFECYCLE_STATE_EXTERNAL_API, "localhost", "8080", serviceDetails.getUUID(), lifeCycleStatesEnum);
115 String userId = sdncModifierDetails.getUserId();
116 Map<String, String> headersMap = new HashMap<>();
117 headersMap.put(HttpHeaderEnum.CACHE_CONTROL.getValue(), "no-cache");
118 headersMap.put(HttpHeaderEnum.AUTHORIZATION.getValue(), "Basic dGVzdDoxMjM0NTY=");
119 headersMap.put("X-ECOMP-InstanceID", "test");
120 RestResponse lifeCycleStatesEnumServiceResponse = sendPost(url, createLifecycleCommentJson(COMMENT), userId, acceptHeaderData,headersMap);
122 if (lifeCycleStatesEnumServiceResponse.getErrorCode() == STATUS_CODE_SUCCESS) {
123 String serviceUniqueId = ResponseParser
124 .getValueFromJsonResponse(lifeCycleStatesEnumServiceResponse.getResponse(), "uniqueId");
125 serviceDetails.setUniqueId(serviceUniqueId);
126 String serviceVersion = ResponseParser
127 .getValueFromJsonResponse(lifeCycleStatesEnumServiceResponse.getResponse(), "version");
128 serviceDetails.setVersion(serviceVersion);
129 String stateFromJsonResponse = ResponseParser
130 .getValueFromJsonResponse(lifeCycleStatesEnumServiceResponse.getResponse(), "lifecycleState");
131 serviceDetails.setLifecycleState(LifecycleStateEnum.valueOf(stateFromJsonResponse));
133 return lifeCycleStatesEnumServiceResponse;
136 public static RestResponse changeServiceState(ServiceReqDetails serviceDetails, User sdncModifierDetails,
137 String version, LifeCycleStatesEnum LifeCycleStatesEnum) throws Exception {
139 return changeServiceState(serviceDetails, sdncModifierDetails, version, LifeCycleStatesEnum,
140 createLifecycleCommentJson(COMMENT));
144 public static RestResponse changeServiceState(ServiceReqDetails serviceDetails, User sdncModifierDetails,
145 LifeCycleStatesEnum LifeCycleStatesEnum) throws Exception {
147 return changeServiceState(serviceDetails, sdncModifierDetails, null, LifeCycleStatesEnum,
148 createLifecycleCommentJson(COMMENT));
152 public static RestResponse changeServiceState(ServiceReqDetails serviceDetails, User sdncModifierDetails,
153 LifeCycleStatesEnum LifeCycleStatesEnum, String lifecycleChangeInfo) throws Exception {
155 return changeServiceState(serviceDetails, sdncModifierDetails, null, LifeCycleStatesEnum,
156 lifecycleChangeInfo);
160 public static RestResponse changeServiceState(ServiceReqDetails serviceDetails, User sdncModifierDetails,
161 String version, LifeCycleStatesEnum LifeCycleStatesEnum, String lifecycleChangeInfo) throws Exception {
163 Config config = Utils.getConfig();
164 Map<String, String> headersMap = prepareHeadersMap(sdncModifierDetails);
165 HttpRequest http = new HttpRequest();
166 String url = String.format(Urls.CHANGE_SERVICE_LIFECYCLE_STATE, config.getCatalogBeHost(),
167 config.getCatalogBePort(), serviceDetails.getUniqueId(), LifeCycleStatesEnum);
168 // System.out.println("url: " + url);
169 RestResponse LifeCycleStatesEnumServiceResponse = http.httpSendPost(url, lifecycleChangeInfo, headersMap);
170 if (LifeCycleStatesEnumServiceResponse.getErrorCode() == STATUS_CODE_SUCCESS) {
171 String serviceUniqueId = ResponseParser
172 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "uniqueId");
173 serviceDetails.setUniqueId(serviceUniqueId);
174 String serviceVersion = ResponseParser
175 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "version");
176 serviceDetails.setVersion(serviceVersion);
177 String stateFromJsonResponse = ResponseParser
178 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "lifecycleState");
179 serviceDetails.setLifecycleState(LifecycleStateEnum.valueOf(stateFromJsonResponse));
181 return LifeCycleStatesEnumServiceResponse;
184 public static RestResponse changeProductState(Product product, User sdncModifierDetails,
185 LifeCycleStatesEnum LifeCycleStatesEnum, String lifecycleChangeInfo) throws Exception {
187 return _changeProductState(product, sdncModifierDetails, LifeCycleStatesEnum, lifecycleChangeInfo);
191 public static RestResponse changeProductState(Product product, User sdncModifierDetails,
192 LifeCycleStatesEnum LifeCycleStatesEnum) throws Exception {
194 return _changeProductState(product, sdncModifierDetails, LifeCycleStatesEnum, COMMENT);
198 public static RestResponse changeProductState(ProductReqDetails productDetails, User sdncModifierDetails,
199 LifeCycleStatesEnum LifeCycleStatesEnum) throws Exception {
200 Config config = Utils.getConfig();
201 String url = String.format(Urls.CHANGE_PRODUCT_LIFECYCLE_STATE, config.getCatalogBeHost(),
202 config.getCatalogBePort(), productDetails.getUniqueId(), LifeCycleStatesEnum);
203 RestResponse LifeCycleStatesEnumServiceResponse = sendPost(url, createLifecycleCommentJson(COMMENT),
204 sdncModifierDetails.getUserId(), acceptHeaderData);
205 if (LifeCycleStatesEnumServiceResponse.getErrorCode() == STATUS_CODE_SUCCESS) {
206 String productUniqueId = ResponseParser
207 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "uniqueId");
208 productDetails.setUniqueId(productUniqueId);
209 String productVersion = ResponseParser
210 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "version");
211 productDetails.setVersion(productVersion);
212 String newLifecycleState = ResponseParser
213 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "lifecycleState");
214 productDetails.setLifecycleState(LifecycleStateEnum.valueOf(newLifecycleState));
216 return LifeCycleStatesEnumServiceResponse;
220 public static RestResponse changeComponentState(Component component, User sdncModifierDetails,
221 LifeCycleStatesEnum LifeCycleStatesEnum) throws Exception {
222 Config config = Utils.getConfig();
223 String url = String.format(Urls.CHANGE_COMPONENT_LIFECYCLE_STATE, config.getCatalogBeHost(),
224 config.getCatalogBePort(), ComponentTypeEnum.findParamByType(component.getComponentType()),
225 component.getUniqueId(), LifeCycleStatesEnum);
226 RestResponse LifeCycleStatesEnumServiceResponse = sendPost(url, createLifecycleCommentJson(COMMENT),
227 sdncModifierDetails.getUserId(), acceptHeaderData);
228 if (LifeCycleStatesEnumServiceResponse.getErrorCode() == STATUS_CODE_SUCCESS) {
229 String productUniqueId = ResponseParser
230 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "uniqueId");
231 component.setUniqueId(productUniqueId);
232 String productVersion = ResponseParser
233 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "version");
234 component.setVersion(productVersion);
235 String newLifecycleState = ResponseParser
236 .getValueFromJsonResponse(LifeCycleStatesEnumServiceResponse.getResponse(), "lifecycleState");
237 component.setLifecycleState(LifecycleStateEnum.valueOf(newLifecycleState));
239 return LifeCycleStatesEnumServiceResponse;
243 public static RestResponse certifyResource(ResourceReqDetails resourceDetails) throws Exception {
244 RestResponse restResponseResource = LifecycleRestUtils.changeResourceState(resourceDetails,
245 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKIN);
246 // if (restResponseResource.getErrorCode() == 200){
247 restResponseResource = LifecycleRestUtils.changeResourceState(resourceDetails,
248 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CERTIFICATIONREQUEST);
250 // return restResponseResource;
251 User testerDetails = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
252 if (restResponseResource.getErrorCode() == 200) {
253 restResponseResource = LifecycleRestUtils.changeResourceState(resourceDetails, testerDetails,
254 LifeCycleStatesEnum.STARTCERTIFICATION);
256 return restResponseResource;
257 if (restResponseResource.getErrorCode() == 200) {
258 restResponseResource = LifecycleRestUtils.changeResourceState(resourceDetails, testerDetails,
259 LifeCycleStatesEnum.CERTIFY);
260 if (restResponseResource.getErrorCode() == 200) {
261 String newVersion = ResponseParser.getVersionFromResponse(restResponseResource);
262 resourceDetails.setVersion(newVersion);
263 resourceDetails.setLifecycleState(LifecycleStateEnum.CERTIFIED);
264 resourceDetails.setLastUpdaterUserId(testerDetails.getUserId());
265 resourceDetails.setLastUpdaterFullName(testerDetails.getFullName());
266 String uniqueIdFromRresponse = ResponseParser.getUniqueIdFromResponse(restResponseResource);
267 resourceDetails.setUniqueId(uniqueIdFromRresponse);
270 return restResponseResource;
273 public static RestResponse certifyService(ServiceReqDetails serviceDetails) throws Exception {
274 RestResponse restResponseService = LifecycleRestUtils.changeServiceState(serviceDetails,
275 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CHECKIN);
276 // if (restResponseService.getErrorCode() == 200){
277 restResponseService = LifecycleRestUtils.changeServiceState(serviceDetails,
278 ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER), LifeCycleStatesEnum.CERTIFICATIONREQUEST);
280 // return restResponseService;
281 if (restResponseService.getErrorCode() == 200) {
282 restResponseService = LifecycleRestUtils.changeServiceState(serviceDetails,
283 ElementFactory.getDefaultUser(UserRoleEnum.TESTER), LifeCycleStatesEnum.STARTCERTIFICATION);
285 return restResponseService;
286 if (restResponseService.getErrorCode() == 200) {
287 User testerDetails = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
288 restResponseService = LifecycleRestUtils.changeServiceState(serviceDetails, testerDetails,
289 LifeCycleStatesEnum.CERTIFY);
290 if (restResponseService.getErrorCode() == 200) {
291 String newVersion = ResponseParser.getVersionFromResponse(restResponseService);
292 serviceDetails.setVersion(newVersion);
293 serviceDetails.setLifecycleState(LifecycleStateEnum.CERTIFIED);
294 serviceDetails.setLastUpdaterUserId(testerDetails.getUserId());
295 serviceDetails.setLastUpdaterFullName(testerDetails.getFullName());
296 String uniqueIdFromRresponse = ResponseParser.getUniqueIdFromResponse(restResponseService);
297 serviceDetails.setUniqueId(uniqueIdFromRresponse);
300 return restResponseService;
303 private static RestResponse _changeProductState(Product product, User sdncModifierDetails,
304 LifeCycleStatesEnum LifeCycleStatesEnum, String lifecycleChangeInfo) throws Exception {
306 Config config = Utils.getConfig();
307 String url = String.format(Urls.CHANGE_PRODUCT_LIFECYCLE_STATE, config.getCatalogBeHost(),
308 config.getCatalogBePort(), product.getUniqueId(), LifeCycleStatesEnum);
309 RestResponse LifeCycleStatesEnumServiceResponse = sendPost(url, createLifecycleCommentJson(lifecycleChangeInfo),
310 sdncModifierDetails.getUserId(), acceptHeaderData);
312 return LifeCycleStatesEnumServiceResponse;
315 public static String createLifecycleCommentJson(String commentContent) {
317 if (commentContent != null) {
318 res = "{\"userRemarks\": \"" + commentContent + "\"}";
323 public static void checkLCS_Response(RestResponse response) {
324 checkStatusCode(response, "change lifecycle request failed", false, STATUS_CODE_SUCCESS);
327 private static Map<String, String> prepareHeadersMap(User sdncModifierDetails) {
328 Map<String, String> headersMap = new HashMap<String, String>();
329 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), contentTypeHeaderData);
330 headersMap.put(HttpHeaderEnum.ACCEPT.getValue(), acceptHeaderData);
331 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), sdncModifierDetails.getUserId());
335 public static RestResponse changeDistributionStatus(ServiceReqDetails serviceDetails, String version, User user,
336 String userRemarks, DistributionStatusEnum reqDistributionStatus) throws Exception {
337 String uniqueId = serviceDetails.getUniqueId();
338 Config config = Utils.getConfig();
339 String environmentName = "PROD-Andreys-Only";
340 // String environmentName = ConfigurationManager.getConfigurationManager().getDistributionEngineConfiguration().getEnvironments().get(0);
341 DistributionStatusEnum distributionStatusEnum = DistributionStatusEnum.findState(reqDistributionStatus.getValue());
342 switch(distributionStatusEnum){
343 case DISTRIBUTION_APPROVED:
344 return sendApproveDistribution(user, uniqueId, userRemarks);
346 String url = String.format(Urls.ACTIVATE_DISTRIBUTION, config.getCatalogBeHost(), config.getCatalogBePort(), uniqueId, environmentName);
347 return sendDistrState(user, userRemarks, url);
348 case DISTRIBUTION_REJECTED:
349 return rejectDistribution(user, userRemarks, uniqueId);
355 // if (reqDistributionStatus == DistributionStatusEnum.DISTRIBUTION_APPROVED) {
356 // return sendApproveDistribution(user, uniqueId, userRemarks);
357 // } else if (reqDistributionStatus == DistributionStatusEnum.DISTRIBUTION_REJECTED) {
358 // return rejectDistribution(user, userRemarks, uniqueId);
359 // } else if (reqDistributionStatus == DistributionStatusEnum.DISTRIBUTED) {
360 // Config config = Utils.getConfig();
362 // // String.format("http://%s:%s/sdc2/rest/v1/catalog/services/%s/tempUrlToBeDeleted",
363 // // config.getCatalogBeHost(), config.getCatalogBePort(), uniqueId);
364 // String url = String.format(Urls.ACTIVATE_DISTRIBUTION, config.getCatalogBeHost(), config.getCatalogBePort(),
365 // uniqueId, "PROD");
366 // return sendDistrState(user, userRemarks, url);
372 public static RestResponse sendApproveDistribution(User sdncModifierDetails, String uniqueId, String userRemarks)
373 throws FileNotFoundException, IOException {
374 Config config = Utils.getConfig();
375 String url = String.format(Urls.APPROVE_DISTRIBUTION, config.getCatalogBeHost(), config.getCatalogBePort(),
377 return sendDistrState(sdncModifierDetails, userRemarks, url);
380 public static RestResponse rejectDistribution(ServiceReqDetails serviceDetails, String version, User user,
381 String userRemarks) throws Exception {
382 return rejectDistribution(user, userRemarks, serviceDetails.getUniqueId());
385 public static RestResponse rejectDistribution(User user, String userRemarks, String uniqueId)
386 throws FileNotFoundException, IOException {
387 Config config = Utils.getConfig();
388 String url = String.format(Urls.REJECT_DISTRIBUTION, config.getCatalogBeHost(), config.getCatalogBePort(),
390 return sendDistrState(user, userRemarks, url);
393 private static RestResponse sendDistrState(User user, String userRemarks, String url) throws IOException {
394 Map<String, String> headersMap = prepareHeadersMap(user);
395 Map<String, String> userRemarksMap = new HashMap<String, String>();
396 userRemarksMap.put("userRemarks", userRemarks);
398 String serviceBodyJson = new JSONObject().toJSONString(userRemarksMap);
400 HttpRequest httpRequest = new HttpRequest();
402 logger.debug("Send POST request to create service: {}",url);
403 logger.debug("Service body: {}",serviceBodyJson);
404 logger.debug("Service headers: {}",headersMap);
405 RestResponse rejectDistributionResponse = httpRequest.httpSendPost(url, serviceBodyJson, headersMap);
407 return rejectDistributionResponse;