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.general;
23 import static org.testng.AssertJUnit.assertTrue;
26 import java.io.IOException;
27 import java.nio.file.Files;
28 import java.nio.file.Path;
29 import java.nio.file.Paths;
30 import java.util.ArrayList;
31 import java.util.HashMap;
34 import javax.xml.bind.helpers.AbstractUnmarshallerImpl;
35 import javax.xml.ws.Response;
37 import org.apache.commons.codec.binary.Base64;
38 import org.apache.commons.lang3.tuple.Pair;
39 import org.aspectj.apache.bcel.classfile.Code;
40 import org.json.JSONException;
41 import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
42 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
43 import org.openecomp.sdc.be.model.ArtifactDefinition;
44 import org.openecomp.sdc.be.model.Component;
45 import org.openecomp.sdc.be.model.ComponentInstance;
46 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
47 import org.openecomp.sdc.be.model.DistributionStatusEnum;
48 import org.openecomp.sdc.be.model.Product;
49 import org.openecomp.sdc.be.model.Resource;
50 import org.openecomp.sdc.be.model.Service;
51 import org.openecomp.sdc.be.model.User;
52 import org.openecomp.sdc.ci.tests.api.Urls;
53 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
54 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
55 import org.openecomp.sdc.ci.tests.datatypes.ImportReqDetails;
56 import org.openecomp.sdc.ci.tests.datatypes.ProductReqDetails;
57 import org.openecomp.sdc.ci.tests.datatypes.PropertyReqDetails;
58 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
59 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
60 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
61 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
62 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
63 import org.openecomp.sdc.ci.tests.datatypes.enums.PropertyTypeEnum;
64 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
65 import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
66 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
67 import org.openecomp.sdc.ci.tests.datatypes.http.HttpHeaderEnum;
68 import org.openecomp.sdc.ci.tests.datatypes.http.HttpRequest;
69 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
70 import org.openecomp.sdc.ci.tests.utils.rest.ArtifactRestUtils;
71 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
72 import org.openecomp.sdc.ci.tests.utils.rest.ComponentInstanceRestUtils;
73 import org.openecomp.sdc.ci.tests.utils.rest.ConsumerRestUtils;
74 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
75 import org.openecomp.sdc.ci.tests.utils.rest.ProductRestUtils;
76 import org.openecomp.sdc.ci.tests.utils.rest.PropertyRestUtils;
77 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
78 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
79 import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils;
80 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
81 import org.testng.SkipException;
83 import com.google.gson.Gson;
85 import fj.data.Either;
87 public final class AtomicOperationUtils {
89 static final String basicAuthentication = "Basic Y2k6MTIzNDU2";
91 private AtomicOperationUtils() {
92 throw new UnsupportedOperationException();
95 // *********** RESOURCE ****************
97 * Import a vfc From tosca file
102 * @throws IOException
103 * @throws JSONException
105 public static Either<Resource, RestResponse> importResource(String filePath, String fileName) {
107 User designer = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
108 ImportReqDetails importReqDetails = ElementFactory.getDefaultImportResource("ciTmpVFC");
109 importReqDetails = ImportUtils.getImportResourceDetailsByPathAndName(importReqDetails, filePath, fileName);
110 RestResponse importResourceResponse = ResourceRestUtils.createImportResource(importReqDetails, designer, null);
111 return buildResourceFromResponse(importResourceResponse);
112 } catch (Exception e) {
113 throw new AtomicOperationException(e);
117 public static Either<Resource, RestResponse> createResourceByType(ResourceTypeEnum resourceType, UserRoleEnum userRole, Boolean validateState) {
119 User defaultUser = ElementFactory.getDefaultUser(userRole);
120 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByType(resourceType, defaultUser);
121 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
124 assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
127 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
128 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
129 return Either.left(resourceResponseObject);
131 return Either.right(resourceResp);
132 } catch (Exception e) {
133 throw new AtomicOperationException(e);
137 public static Either<Resource, RestResponse> createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum resourceType, NormativeTypesEnum normativeTypes, ResourceCategoryEnum resourceCategory, UserRoleEnum userRole, Boolean validateState)
139 User defaultUser = ElementFactory.getDefaultUser(userRole);
140 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(resourceType, normativeTypes, resourceCategory, defaultUser);
141 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
144 assertTrue("Actual Response Code is: " + resourceResp.getErrorCode(), resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
147 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
148 // Resource resourceResponseObject = ResponseParser
149 // .convertResourceResponseToJavaObject(resourceResp.getResponse());
150 Resource resourceResponseObject = ResponseParser.parseToObjectUsingMapper(resourceResp.getResponse(), Resource.class);
151 return Either.left(resourceResponseObject);
153 return Either.right(resourceResp);
156 public static Either<Resource, RestResponse> createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum resourceType, Resource resourceNormativeType, ResourceCategoryEnum resourceCategory, UserRoleEnum userRole, Boolean validateState)
158 User defaultUser = ElementFactory.getDefaultUser(userRole);
159 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(resourceType, resourceNormativeType, resourceCategory, defaultUser);
160 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
163 assertTrue("actual result: " + resourceResp.getResponseMessage(), resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
166 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
167 // Resource resourceResponseObject = ResponseParser
168 // .convertResourceResponseToJavaObject(resourceResp.getResponse());
169 Resource resourceResponseObject = ResponseParser.parseToObjectUsingMapper(resourceResp.getResponse(), Resource.class);
170 return Either.left(resourceResponseObject);
172 return Either.right(resourceResp);
175 // *********** SERVICE ****************
177 public static Either<Service, RestResponse> createDefaultService(UserRoleEnum userRole, Boolean validateState) throws Exception {
178 User defaultUser = ElementFactory.getDefaultUser(userRole);
179 ServiceReqDetails serviceDetails = ElementFactory.getDefaultService(defaultUser);
180 RestResponse createServiceResp = ServiceRestUtils.createService(serviceDetails, defaultUser);
183 assertTrue(createServiceResp.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
186 if (createServiceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
187 Service serviceResponseObject = ResponseParser.convertServiceResponseToJavaObject(createServiceResp.getResponse());
188 return Either.left(serviceResponseObject);
190 return Either.right(createServiceResp);
193 public static Either<Service, RestResponse> createServiceByCategory(ServiceCategoriesEnum category, UserRoleEnum userRole, Boolean validateState) throws Exception {
194 User defaultUser = ElementFactory.getDefaultUser(userRole);
195 ServiceReqDetails serviceDetails = ElementFactory.getDefaultService(category, defaultUser);
196 RestResponse createServiceResp = ServiceRestUtils.createService(serviceDetails, defaultUser);
199 assertTrue(createServiceResp.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
202 if (createServiceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
203 Service serviceResponseObject = ResponseParser.convertServiceResponseToJavaObject(createServiceResp.getResponse());
204 return Either.left(serviceResponseObject);
206 return Either.right(createServiceResp);
209 // *********** PRODUCT ****************
211 public static Either<Product, RestResponse> createDefaultProduct(UserRoleEnum userRole, Boolean validateState) throws Exception {
212 User defaultUser = ElementFactory.getDefaultUser(userRole);
213 ProductReqDetails defaultProduct = ElementFactory.getDefaultProduct();
214 RestResponse createProductResp = ProductRestUtils.createProduct(defaultProduct, defaultUser);
217 assertTrue(createProductResp.getErrorCode() == ProductRestUtils.STATUS_CODE_CREATED);
220 if (createProductResp.getErrorCode() == ProductRestUtils.STATUS_CODE_CREATED) {
221 Product productResponseJavaObject = ResponseParser.convertProductResponseToJavaObject(createProductResp.getResponse());
222 return Either.left(productResponseJavaObject);
224 return Either.right(createProductResp);
227 // public static ComponentReqDetails
228 // convertCompoentToComponentReqDetails(Component component){
230 // ComponentReqDetails componentReqDetails =
231 // ElementFactory.getDefaultService();
232 // componentReqDetails.setName(component.getName());
233 // componentReqDetails.setDescription(component.getDescription());
234 // componentReqDetails.setTags(component.getTags());
235 // componentReqDetails.setContactId(component.getContactId());
236 // componentReqDetails.setIcon(component.getIcon());
237 // componentReqDetails.setUniqueId(component.getUniqueId());
238 // componentReqDetails.setCreatorUserId(component.getCreatorUserId());
239 // componentReqDetails.setCreatorFullName(component.getCreatorFullName());
240 // componentReqDetails.setLastUpdaterUserId(component.getLastUpdaterUserId());
241 // componentReqDetails.setLastUpdaterFullName(component.getLastUpdaterFullName());
242 // componentReqDetails.setCreationDate(component.getCreationDate());
243 // componentReqDetails.setLastUpdateDate(component.getLastUpdateDate());
244 // componentReqDetails.setLifecycleState(component.getLifecycleState());
245 // componentReqDetails.setVersion(component.getVersion());
246 // componentReqDetails.setUuid(component.getUUID());
247 // componentReqDetails.setCategories(component.getCategories());
248 // componentReqDetails.setProjectCode(component.getProjectCode());
250 // return componentReqDetails;
253 // *********** LIFECYCLE ***************
255 public static Pair<Component, RestResponse> changeComponentState(Component component, UserRoleEnum userRole, LifeCycleStatesEnum targetState, Boolean validateState) throws Exception {
257 Boolean isValidationFailed = false;
258 RestResponse lifeCycleStatesResponse = null;
259 User defaultUser = ElementFactory.getDefaultUser(userRole);
261 LifeCycleStatesEnum curentCompState = LifeCycleStatesEnum.findByCompState(component.getLifecycleState().toString());
263 if (curentCompState == targetState) {
264 component = getComponentObject(component, userRole);
265 return Pair.of(component, null);
267 // List<LifeCycleStatesEnum> lifeCycleStatesEnumOrigList = new
268 // ArrayList<LifeCycleStatesEnum>(EnumSet.allOf(LifeCycleStatesEnum.class));
270 ArrayList<String> lifeCycleStatesEnumList = new ArrayList<String>();
271 if (curentCompState.equals(LifeCycleStatesEnum.CHECKIN) && targetState.equals(LifeCycleStatesEnum.CHECKOUT)) {
272 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKIN.toString());
273 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKOUT.toString());
275 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKOUT.toString());
276 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKIN.toString());
277 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CERTIFICATIONREQUEST.toString());
278 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.STARTCERTIFICATION.toString());
279 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CERTIFY.toString());
281 for (int i = 0; i < lifeCycleStatesEnumList.size(); i++) {
282 if (lifeCycleStatesEnumList.get(i).equals(curentCompState.name())) {
284 a = (i == lifeCycleStatesEnumList.size() - 1) ? 0 : i + 1;
286 for (int n = a; n < lifeCycleStatesEnumList.size(); n++) {
287 if (lifeCycleStatesEnumList.get(n).equals(LifeCycleStatesEnum.STARTCERTIFICATION.name()) || lifeCycleStatesEnumList.get(n).equals(LifeCycleStatesEnum.CERTIFY.name())) {
288 defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
290 defaultUser = ElementFactory.getDefaultUser(userRole);
292 lifeCycleStatesResponse = LifecycleRestUtils.changeComponentState(component, defaultUser, LifeCycleStatesEnum.findByState(lifeCycleStatesEnumList.get(n)));
293 if (lifeCycleStatesResponse.getErrorCode() != LifecycleRestUtils.STATUS_CODE_SUCCESS)
294 isValidationFailed = true;
295 if (lifeCycleStatesEnumList.get(n).equals(targetState.toString()) || isValidationFailed == true) {
302 Component componentJavaObject = getComponentObject(component, userRole);
304 if (validateState == true && isValidationFailed == true) {
305 assertTrue("change state failed" + lifeCycleStatesResponse.getResponse(), false);
307 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
310 if (isValidationFailed == true) {
311 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
314 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
317 public static RestResponse distributeService(Component component, Boolean validateState) throws Exception {
319 Service service = (Service) component;
321 User opsUser = ElementFactory.getDefaultUser(UserRoleEnum.OPS);
322 User governotUser = ElementFactory.getDefaultUser(UserRoleEnum.GOVERNOR);
324 ServiceReqDetails serviceDetails = new ServiceReqDetails(service);
325 RestResponse distributionService = null;
327 RestResponse approveDistribution = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, governotUser, "approveService", DistributionStatusEnum.DISTRIBUTION_APPROVED);
328 if (approveDistribution.getErrorCode() == 200) {
329 distributionService = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, opsUser, "approveService", DistributionStatusEnum.DISTRIBUTED);
333 assertTrue(approveDistribution.getErrorCode() == ProductRestUtils.STATUS_CODE_SUCCESS);
334 assertTrue(distributionService.getErrorCode() == ProductRestUtils.STATUS_CODE_SUCCESS);
335 return distributionService;
338 return distributionService;
342 // *********** ARTIFACTS *****************
344 public static Either<ArtifactDefinition, RestResponse> uploadArtifactByType(ArtifactTypeEnum artifactType, Component component, UserRoleEnum userRole, Boolean deploymentTrue, Boolean validateState) throws Exception {
346 User defaultUser = ElementFactory.getDefaultUser(userRole);
347 ArtifactReqDetails artifactDetails = ElementFactory.getArtifactByType(null, artifactType, deploymentTrue);
348 if (deploymentTrue == false)
349 artifactDetails.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL.getType());
350 RestResponse uploadArtifactResp = ArtifactRestUtils.uploadArtifact(artifactDetails, component, defaultUser);
353 assertTrue("artifact upload failed: " + artifactDetails.getArtifactName(), uploadArtifactResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
356 if (uploadArtifactResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
357 ArtifactDefinition artifactJavaObject = ResponseParser.convertArtifactDefinitionResponseToJavaObject(uploadArtifactResp.getResponse());
358 return Either.left(artifactJavaObject);
360 return Either.right(uploadArtifactResp);
363 // *********** CONTAINERS *****************
365 * Adds Component instance to Component
367 * @param compInstParent
368 * @param compContainer
371 public static Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer(Component compInstParent, Component compContainer) {
372 return addComponentInstanceToComponentContainer(compInstParent, compContainer, UserRoleEnum.DESIGNER, false);
375 public static Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer(Component compInstParent, Component compContainer, UserRoleEnum userRole, Boolean validateState) {
377 User defaultUser = ElementFactory.getDefaultUser(userRole);
378 ComponentInstanceReqDetails componentInstanceDetails = ElementFactory.getComponentInstance(compInstParent);
379 RestResponse createComponentInstance = ComponentInstanceRestUtils.createComponentInstance(componentInstanceDetails, defaultUser, compContainer);
382 if (createComponentInstance.getErrorCode() == ServiceRestUtils.STATUS_CODE_NOT_FOUND)
384 throw new SkipException("Open bug DE262001");
387 assertTrue("error - " + createComponentInstance.getErrorCode() + "instead - " + ServiceRestUtils.STATUS_CODE_CREATED, createComponentInstance.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
391 if (createComponentInstance.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
392 ComponentInstance componentInstance = ResponseParser.convertComponentInstanceResponseToJavaObject(createComponentInstance.getResponse());
393 return Either.left(componentInstance);
395 return Either.right(createComponentInstance);
396 } catch (Exception e) {
397 throw new AtomicOperationException(e);
401 public static Resource getResourceObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
402 // User defaultUser = ElementFactory.getDefaultUser(userRole);
403 RestResponse restResponse = ResourceRestUtils.getResource(containerDetails.getUniqueId());
404 Resource container = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
408 public static Resource getResourceObject(String uniqueId) throws Exception {
409 RestResponse restResponse = ResourceRestUtils.getResource(uniqueId);
410 Resource resource = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
414 public static Resource getResourceObjectByNameAndVersion(UserRoleEnum sdncModifierDetails, String resourceName, String resourceVersion) throws Exception {
415 User defaultUser = ElementFactory.getDefaultUser(sdncModifierDetails);
416 RestResponse resourceResponse = ResourceRestUtils.getResourceByNameAndVersion(defaultUser.getUserId(), resourceName, resourceVersion);
417 Resource container = ResponseParser.convertResourceResponseToJavaObject(resourceResponse.getResponse());
421 public static Service getServiceObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
422 User defaultUser = ElementFactory.getDefaultUser(userRole);
423 RestResponse serviceResponse = ServiceRestUtils.getService(containerDetails.getUniqueId(), defaultUser);
424 Service container = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
428 public static Service getServiceObjectByNameAndVersion(UserRoleEnum sdncModifierDetails, String serviceName, String serviceVersion) throws Exception {
429 User defaultUser = ElementFactory.getDefaultUser(sdncModifierDetails);
430 RestResponse serviceResponse = ServiceRestUtils.getServiceByNameAndVersion(defaultUser, serviceName, serviceVersion);
431 Service container = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
435 public static Service getServiceObject(String uniqueId) throws Exception {
436 RestResponse serviceResponse = ServiceRestUtils.getService(uniqueId);
437 Service container = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
441 public static Product getProductObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
442 User defaultUser = ElementFactory.getDefaultUser(userRole);
443 RestResponse productRest = ProductRestUtils.getProduct(containerDetails.getUniqueId(), defaultUser.getUserId());
444 Product container = ResponseParser.convertProductResponseToJavaObject(productRest.getResponse());
448 public static Component getComponentObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
449 User defaultUser = ElementFactory.getDefaultUser(userRole);
451 switch (containerDetails.getComponentType()) {
453 RestResponse restResponse = ResourceRestUtils.getResource(containerDetails.getUniqueId());
454 containerDetails = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
457 RestResponse serviceResponse = ServiceRestUtils.getService(containerDetails.getUniqueId(), defaultUser);
458 containerDetails = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
461 RestResponse productRest = ProductRestUtils.getProduct(containerDetails.getUniqueId(), defaultUser.getUserId());
462 containerDetails = ResponseParser.convertProductResponseToJavaObject(productRest.getResponse());
467 return containerDetails;
470 public static Component convertReposnseToComponentObject(Component containerDetails, RestResponse restresponse) throws Exception {
472 switch (containerDetails.getComponentType()) {
474 containerDetails = ResponseParser.convertResourceResponseToJavaObject(restresponse.getResponse());
477 containerDetails = ResponseParser.convertServiceResponseToJavaObject(restresponse.getResponse());
480 containerDetails = ResponseParser.convertProductResponseToJavaObject(restresponse.getResponse());
485 return containerDetails;
488 public static Either<Component, RestResponse> associate2ResourceInstances(Component containerDetails, ComponentInstance fromNode, ComponentInstance toNode, String assocType, UserRoleEnum userRole, Boolean validateState) throws Exception {
490 User defaultUser = ElementFactory.getDefaultUser(userRole);
491 RestResponse associate2ResourceInstancesResponse = ResourceRestUtils.associate2ResourceInstances(containerDetails, fromNode, toNode, assocType, defaultUser);
494 assertTrue(associate2ResourceInstancesResponse.getErrorCode() == ServiceRestUtils.STATUS_CODE_SUCCESS);
497 if (associate2ResourceInstancesResponse.getErrorCode() == ResourceRestUtils.STATUS_CODE_SUCCESS) {
499 switch (containerDetails.getComponentType()) {
501 containerDetails = ResponseParser.convertResourceResponseToJavaObject(associate2ResourceInstancesResponse.getResponse());
504 containerDetails = ResponseParser.convertServiceResponseToJavaObject(associate2ResourceInstancesResponse.getResponse());
507 containerDetails = ResponseParser.convertProductResponseToJavaObject(associate2ResourceInstancesResponse.getResponse());
513 return Either.left(containerDetails);
515 return Either.right(associate2ResourceInstancesResponse);
519 public static Either<Pair<Component, ComponentInstance>, RestResponse> changeComponentInstanceVersion(Component containerDetails, ComponentInstance componentInstanceToReplace, Component newInstance, UserRoleEnum userRole, Boolean validateState)
521 User defaultUser = ElementFactory.getDefaultUser(userRole);
523 RestResponse changeComponentInstanceVersionResp = ComponentInstanceRestUtils.changeComponentInstanceVersion(containerDetails, componentInstanceToReplace, newInstance, defaultUser);
525 assertTrue("change ComponentInstance version failed: " + changeComponentInstanceVersionResp.getResponseMessage(), changeComponentInstanceVersionResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
528 if (changeComponentInstanceVersionResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
530 Component compoenntObject = AtomicOperationUtils.getComponentObject(containerDetails, userRole);
531 ComponentInstance componentInstanceJavaObject = ResponseParser.convertComponentInstanceResponseToJavaObject(changeComponentInstanceVersionResp.getResponse());
533 return Either.left(Pair.of(compoenntObject, componentInstanceJavaObject));
536 return Either.right(changeComponentInstanceVersionResp);
539 // *********** PROPERTIES *****************
541 public static Either<ComponentInstanceProperty, RestResponse> addCustomPropertyToResource(PropertyReqDetails propDetails, Resource resourceDetails, UserRoleEnum userRole, Boolean validateState) throws Exception {
543 User defaultUser = ElementFactory.getDefaultUser(userRole);
544 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
545 propertyToSend.put(propDetails.getName(), propDetails);
546 Gson gson = new Gson();
547 RestResponse addPropertyResponse = PropertyRestUtils.createProperty(resourceDetails.getUniqueId(), gson.toJson(propertyToSend), defaultUser);
550 assertTrue("add property to resource failed: " + addPropertyResponse.getErrorCode(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED);
553 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED) {
554 ComponentInstanceProperty compInstProp = null;
555 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
556 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
557 return Either.left(compInstProp);
559 return Either.right(addPropertyResponse);
563 public static Either<ComponentInstanceProperty, RestResponse> updatePropertyOfResource(PropertyReqDetails propDetails, Resource resourceDetails, String propertyUniqueId, UserRoleEnum userRole, Boolean validateState) throws Exception {
565 User defaultUser = ElementFactory.getDefaultUser(userRole);
566 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
567 propertyToSend.put(propDetails.getName(), propDetails);
568 Gson gson = new Gson();
569 RestResponse addPropertyResponse = PropertyRestUtils.updateProperty(resourceDetails.getUniqueId(), propertyUniqueId, gson.toJson(propertyToSend), defaultUser);
572 assertTrue("add property to resource failed: " + addPropertyResponse.getResponseMessage(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
575 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
576 ComponentInstanceProperty compInstProp = null;
577 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
578 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
579 return Either.left(compInstProp);
581 return Either.right(addPropertyResponse);
584 public static RestResponse deletePropertyOfResource(String resourceId, String propertyId, UserRoleEnum userRole) throws Exception {
585 User defaultUser = ElementFactory.getDefaultUser(userRole);
586 return PropertyRestUtils.deleteProperty(resourceId, propertyId, defaultUser);
589 public static Either<ComponentInstanceProperty, RestResponse> addDefaultPropertyToResource(PropertyTypeEnum propertyType, Resource resourceDetails, UserRoleEnum userRole, Boolean validateState) throws Exception {
591 User defaultUser = ElementFactory.getDefaultUser(userRole);
592 PropertyReqDetails propDetails = ElementFactory.getPropertyDetails(propertyType);
593 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
594 propertyToSend.put(propDetails.getName(), propDetails);
595 Gson gson = new Gson();
596 RestResponse addPropertyResponse = PropertyRestUtils.createProperty(resourceDetails.getUniqueId(), gson.toJson(propertyToSend), defaultUser);
599 assertTrue("add property to resource failed: " + addPropertyResponse.getResponseMessage(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED);
602 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED) {
603 ComponentInstanceProperty compInstProp = null;
604 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
605 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
607 return Either.left(compInstProp);
609 return Either.right(addPropertyResponse);
612 public static RestResponse createDefaultConsumer(Boolean validateState) {
614 ConsumerDataDefinition defaultConsumerDefinition = ElementFactory.getDefaultConsumerDetails();
615 RestResponse createResponse = ConsumerRestUtils.createConsumer(defaultConsumerDefinition, ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
616 BaseRestUtils.checkCreateResponse(createResponse);
619 assertTrue(createResponse.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
621 return createResponse;
622 } catch (Exception e) {
623 throw new AtomicOperationException(e);
628 * Builds Resource From rest response
630 * @param resourceResp
633 public static Either<Resource, RestResponse> buildResourceFromResponse(RestResponse resourceResp) {
634 Either<Resource, RestResponse> result;
635 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
636 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
637 result = Either.left(resourceResponseObject);
639 result = Either.right(resourceResp);
644 private static class AtomicOperationException extends RuntimeException {
645 private AtomicOperationException(Exception e) {
649 private static final long serialVersionUID = 1L;
653 * Import resource from CSAR
655 * @param resourceType
662 public static Resource importResourceFromCSAR(ResourceTypeEnum resourceType, UserRoleEnum userRole, String fileName, String... filePath) throws Exception {
663 // Get the CSARs path
664 String realFilePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test" + File.separator + "resources" + File.separator + "CI" + File.separator + "csars" ;
665 if (filePath != null && filePath.length > 0) {
666 realFilePath = filePath.toString();
669 // Create default import resource & user
670 ImportReqDetails resourceDetails = ElementFactory.getDefaultImportResource();
671 User sdncModifierDetails = ElementFactory.getDefaultUser(userRole);
674 Path path = Paths.get(realFilePath + File.separator + fileName);
675 data = Files.readAllBytes(path);
676 String payloadName = fileName;
677 String payloadData = Base64.encodeBase64String(data);
678 resourceDetails.setPayloadData(payloadData);
679 resourceDetails.setCsarUUID(payloadName);
680 resourceDetails.setPayloadName(payloadName);
681 resourceDetails.setResourceType(resourceType.name());
683 RestResponse createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
684 BaseRestUtils.checkCreateResponse(createResource);
685 return ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
688 public static Either<Resource, RestResponse> importResourceByFileName(ResourceTypeEnum resourceType, UserRoleEnum userRole, String fileName, Boolean validateState, String... filePath) throws IOException {
690 String realFilePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test" + File.separator + "resources" + File.separator + "CI" + File.separator + "csars" ;
691 if (filePath != null && filePath.length > 0) {
692 realFilePath = filePath.toString();
696 User defaultUser = ElementFactory.getDefaultUser(userRole);
697 ResourceReqDetails defaultResource = ElementFactory.getDefaultResource(defaultUser);
698 ImportReqDetails defaultImportResource = ElementFactory.getDefaultImportResource(defaultResource);
699 ImportUtils.getImportResourceDetailsByPathAndName(defaultImportResource, realFilePath, fileName);
700 RestResponse resourceResp = ResourceRestUtils.createResource(defaultImportResource, defaultUser);
703 assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
706 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
707 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
708 return Either.left(resourceResponseObject);
710 return Either.right(resourceResp);
711 } catch (Exception e) {
712 throw new AtomicOperationException(e);
716 public static Either<String, RestResponse> getServiceToscaArtifactPayload(Service service, String artifactType) throws Exception {
718 String url = String.format(Urls.UI_DOWNLOAD_SERVICE_ARTIFACT, "localhost", "8080", service.getUniqueId(), service.getToscaArtifacts().get(artifactType).getUniqueId());
719 String userId = service.getLastUpdaterUserId();
720 Map<String, String> headersMap = new HashMap<String, String>();
721 headersMap.put(HttpHeaderEnum.CONTENT_TYPE.getValue(), "application/json");
722 headersMap.put(HttpHeaderEnum.CACHE_CONTROL.getValue(), "no-cache");
723 headersMap.put(HttpHeaderEnum.AUTHORIZATION.getValue(), basicAuthentication);
724 headersMap.put(HttpHeaderEnum.X_ECOMP_INSTANCE_ID.getValue(), "ci");
725 // headersMap.put("X-ECOMP-InstanceID", "test");
726 if (userId != null) {
727 headersMap.put(HttpHeaderEnum.USER_ID.getValue(), userId);
729 HttpRequest http = new HttpRequest();
730 RestResponse response = http.httpSendGet(url, headersMap);
731 if (response.getErrorCode() != 200 && response.getResponse().getBytes() == null && response.getResponse().getBytes().length == 0) {
732 return Either.right(response);
734 return Either.left(response.getResponse());