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.Assert.assertEquals;
24 import static org.testng.AssertJUnit.assertTrue;
27 import java.io.IOException;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.HashMap;
35 import org.apache.commons.codec.binary.Base64;
36 import org.apache.commons.lang3.tuple.Pair;
37 import org.json.JSONException;
38 import org.openecomp.sdc.be.datatypes.elements.ConsumerDataDefinition;
39 import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
40 import org.openecomp.sdc.be.model.ArtifactDefinition;
41 import org.openecomp.sdc.be.model.Component;
42 import org.openecomp.sdc.be.model.ComponentInstance;
43 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
44 import org.openecomp.sdc.be.model.DistributionStatusEnum;
45 import org.openecomp.sdc.be.model.Product;
46 import org.openecomp.sdc.be.model.Resource;
47 import org.openecomp.sdc.be.model.Service;
48 import org.openecomp.sdc.be.model.User;
49 import org.openecomp.sdc.ci.tests.datatypes.ArtifactReqDetails;
50 import org.openecomp.sdc.ci.tests.datatypes.ComponentInstanceReqDetails;
51 import org.openecomp.sdc.ci.tests.datatypes.ImportReqDetails;
52 import org.openecomp.sdc.ci.tests.datatypes.ProductReqDetails;
53 import org.openecomp.sdc.ci.tests.datatypes.PropertyReqDetails;
54 import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails;
55 import org.openecomp.sdc.ci.tests.datatypes.ServiceReqDetails;
56 import org.openecomp.sdc.ci.tests.datatypes.enums.ArtifactTypeEnum;
57 import org.openecomp.sdc.ci.tests.datatypes.enums.LifeCycleStatesEnum;
58 import org.openecomp.sdc.ci.tests.datatypes.enums.NormativeTypesEnum;
59 import org.openecomp.sdc.ci.tests.datatypes.enums.PropertyTypeEnum;
60 import org.openecomp.sdc.ci.tests.datatypes.enums.ResourceCategoryEnum;
61 import org.openecomp.sdc.ci.tests.datatypes.enums.ServiceCategoriesEnum;
62 import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum;
63 import org.openecomp.sdc.ci.tests.datatypes.http.RestResponse;
64 import org.openecomp.sdc.ci.tests.utils.rest.ArtifactRestUtils;
65 import org.openecomp.sdc.ci.tests.utils.rest.BaseRestUtils;
66 import org.openecomp.sdc.ci.tests.utils.rest.ComponentInstanceRestUtils;
67 import org.openecomp.sdc.ci.tests.utils.rest.ConsumerRestUtils;
68 import org.openecomp.sdc.ci.tests.utils.rest.LifecycleRestUtils;
69 import org.openecomp.sdc.ci.tests.utils.rest.ProductRestUtils;
70 import org.openecomp.sdc.ci.tests.utils.rest.PropertyRestUtils;
71 import org.openecomp.sdc.ci.tests.utils.rest.ResourceRestUtils;
72 import org.openecomp.sdc.ci.tests.utils.rest.ResponseParser;
73 import org.openecomp.sdc.ci.tests.utils.rest.ServiceRestUtils;
74 import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
76 import com.google.gson.Gson;
78 import fj.data.Either;
80 public final class AtomicOperationUtils {
82 private AtomicOperationUtils() {
83 throw new UnsupportedOperationException();
86 // *********** RESOURCE ****************
88 * Import a vfc From tosca file
94 * @throws JSONException
96 public static Either<Resource, RestResponse> importResource(String filePath, String fileName) {
98 User designer = ElementFactory.getDefaultUser(UserRoleEnum.DESIGNER);
99 ImportReqDetails importReqDetails = ElementFactory.getDefaultImportResource("ciTmpVFC");
100 importReqDetails = ImportUtils.getImportResourceDetailsByPathAndName(importReqDetails, filePath, fileName);
101 RestResponse importResourceResponse = ResourceRestUtils.createImportResource(importReqDetails, designer, null);
102 return buildResourceFromResponse(importResourceResponse);
103 } catch (Exception e) {
104 throw new AtomicOperationException(e);
108 public static Either<Resource, RestResponse> createResourceByType(ResourceTypeEnum resourceType, UserRoleEnum userRole, Boolean validateState) {
110 User defaultUser = ElementFactory.getDefaultUser(userRole);
111 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByType(resourceType, defaultUser);
112 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
115 assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
118 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
119 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
120 return Either.left(resourceResponseObject);
122 return Either.right(resourceResp);
123 } catch (Exception e) {
124 throw new AtomicOperationException(e);
128 public static Either<Resource, RestResponse> createResourcesByTypeNormTypeAndCatregory(ResourceTypeEnum resourceType, NormativeTypesEnum normativeTypes, ResourceCategoryEnum resourceCategory, UserRoleEnum userRole, Boolean validateState)
130 User defaultUser = ElementFactory.getDefaultUser(userRole);
131 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(resourceType, normativeTypes, resourceCategory, defaultUser);
132 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
135 assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
138 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
139 // Resource resourceResponseObject = ResponseParser
140 // .convertResourceResponseToJavaObject(resourceResp.getResponse());
141 Resource resourceResponseObject = ResponseParser.parseToObjectUsingMapper(resourceResp.getResponse(), Resource.class);
142 return Either.left(resourceResponseObject);
144 return Either.right(resourceResp);
147 public static Either<Resource, RestResponse> createResourcesByCustomNormativeTypeAndCatregory(ResourceTypeEnum resourceType, Resource resourceNormativeType, ResourceCategoryEnum resourceCategory, UserRoleEnum userRole, Boolean validateState)
149 User defaultUser = ElementFactory.getDefaultUser(userRole);
150 ResourceReqDetails defaultResource = ElementFactory.getDefaultResourceByTypeNormTypeAndCatregory(resourceType, resourceNormativeType, resourceCategory, defaultUser);
151 RestResponse resourceResp = ResourceRestUtils.createResource(defaultResource, defaultUser);
154 assertTrue("actual result: " + resourceResp.getResponseMessage(), resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
157 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
158 // Resource resourceResponseObject = ResponseParser
159 // .convertResourceResponseToJavaObject(resourceResp.getResponse());
160 Resource resourceResponseObject = ResponseParser.parseToObjectUsingMapper(resourceResp.getResponse(), Resource.class);
161 return Either.left(resourceResponseObject);
163 return Either.right(resourceResp);
166 // *********** SERVICE ****************
168 public static Either<Service, RestResponse> createDefaultService(UserRoleEnum userRole, Boolean validateState) throws Exception {
169 User defaultUser = ElementFactory.getDefaultUser(userRole);
170 ServiceReqDetails serviceDetails = ElementFactory.getDefaultService(defaultUser);
171 RestResponse createServiceResp = ServiceRestUtils.createService(serviceDetails, defaultUser);
174 assertTrue(createServiceResp.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
177 if (createServiceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
178 Service serviceResponseObject = ResponseParser.convertServiceResponseToJavaObject(createServiceResp.getResponse());
179 return Either.left(serviceResponseObject);
181 return Either.right(createServiceResp);
184 public static Either<Service, RestResponse> createServiceByCategory(ServiceCategoriesEnum category, UserRoleEnum userRole, Boolean validateState) throws Exception {
185 User defaultUser = ElementFactory.getDefaultUser(userRole);
186 ServiceReqDetails serviceDetails = ElementFactory.getDefaultService(category, defaultUser);
187 RestResponse createServiceResp = ServiceRestUtils.createService(serviceDetails, defaultUser);
190 assertTrue(createServiceResp.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
193 if (createServiceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
194 Service serviceResponseObject = ResponseParser.convertServiceResponseToJavaObject(createServiceResp.getResponse());
195 return Either.left(serviceResponseObject);
197 return Either.right(createServiceResp);
200 // *********** PRODUCT ****************
202 public static Either<Product, RestResponse> createDefaultProduct(UserRoleEnum userRole, Boolean validateState) throws Exception {
203 User defaultUser = ElementFactory.getDefaultUser(userRole);
204 ProductReqDetails defaultProduct = ElementFactory.getDefaultProduct();
205 RestResponse createProductResp = ProductRestUtils.createProduct(defaultProduct, defaultUser);
208 assertTrue(createProductResp.getErrorCode() == ProductRestUtils.STATUS_CODE_CREATED);
211 if (createProductResp.getErrorCode() == ProductRestUtils.STATUS_CODE_CREATED) {
212 Product productResponseJavaObject = ResponseParser.convertProductResponseToJavaObject(createProductResp.getResponse());
213 return Either.left(productResponseJavaObject);
215 return Either.right(createProductResp);
218 // public static ComponentReqDetails
219 // convertCompoentToComponentReqDetails(Component component){
221 // ComponentReqDetails componentReqDetails =
222 // ElementFactory.getDefaultService();
223 // componentReqDetails.setName(component.getName());
224 // componentReqDetails.setDescription(component.getDescription());
225 // componentReqDetails.setTags(component.getTags());
226 // componentReqDetails.setContactId(component.getContactId());
227 // componentReqDetails.setIcon(component.getIcon());
228 // componentReqDetails.setUniqueId(component.getUniqueId());
229 // componentReqDetails.setCreatorUserId(component.getCreatorUserId());
230 // componentReqDetails.setCreatorFullName(component.getCreatorFullName());
231 // componentReqDetails.setLastUpdaterUserId(component.getLastUpdaterUserId());
232 // componentReqDetails.setLastUpdaterFullName(component.getLastUpdaterFullName());
233 // componentReqDetails.setCreationDate(component.getCreationDate());
234 // componentReqDetails.setLastUpdateDate(component.getLastUpdateDate());
235 // componentReqDetails.setLifecycleState(component.getLifecycleState());
236 // componentReqDetails.setVersion(component.getVersion());
237 // componentReqDetails.setUuid(component.getUUID());
238 // componentReqDetails.setCategories(component.getCategories());
239 // componentReqDetails.setProjectCode(component.getProjectCode());
241 // return componentReqDetails;
244 // *********** LIFECYCLE ***************
246 public static Pair<Component, RestResponse> changeComponentState(Component component, UserRoleEnum userRole, LifeCycleStatesEnum targetState, Boolean validateState) throws Exception {
248 Boolean isValidationFailed = false;
249 RestResponse lifeCycleStatesResponse = null;
250 User defaultUser = ElementFactory.getDefaultUser(userRole);
252 LifeCycleStatesEnum curentCompState = LifeCycleStatesEnum.findByCompState(component.getLifecycleState().toString());
254 if (curentCompState == targetState) {
255 component = getCompoenntObject(component, userRole);
256 return Pair.of(component, null);
258 // List<LifeCycleStatesEnum> lifeCycleStatesEnumOrigList = new
259 // ArrayList<LifeCycleStatesEnum>(EnumSet.allOf(LifeCycleStatesEnum.class));
261 ArrayList<String> lifeCycleStatesEnumList = new ArrayList<String>();
262 if (curentCompState.equals(LifeCycleStatesEnum.CHECKIN) && targetState.equals(LifeCycleStatesEnum.CHECKOUT)) {
263 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKIN.toString());
264 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKOUT.toString());
266 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKOUT.toString());
267 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CHECKIN.toString());
268 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CERTIFICATIONREQUEST.toString());
269 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.STARTCERTIFICATION.toString());
270 lifeCycleStatesEnumList.add(LifeCycleStatesEnum.CERTIFY.toString());
272 for (int i = 0; i < lifeCycleStatesEnumList.size(); i++) {
273 if (lifeCycleStatesEnumList.get(i).equals(curentCompState.name())) {
275 a = (i == lifeCycleStatesEnumList.size() - 1) ? 0 : i + 1;
277 for (int n = a; n < lifeCycleStatesEnumList.size(); n++) {
278 if (lifeCycleStatesEnumList.get(n).equals(LifeCycleStatesEnum.STARTCERTIFICATION.name()) || lifeCycleStatesEnumList.get(n).equals(LifeCycleStatesEnum.CERTIFY.name())) {
279 defaultUser = ElementFactory.getDefaultUser(UserRoleEnum.TESTER);
281 defaultUser = ElementFactory.getDefaultUser(userRole);
283 lifeCycleStatesResponse = LifecycleRestUtils.changeComponentState(component, defaultUser, LifeCycleStatesEnum.findByState(lifeCycleStatesEnumList.get(n)));
284 if (lifeCycleStatesResponse.getErrorCode() != LifecycleRestUtils.STATUS_CODE_SUCCESS)
285 isValidationFailed = true;
286 if (lifeCycleStatesEnumList.get(n).equals(targetState.toString()) || isValidationFailed == true) {
293 Component componentJavaObject = getCompoenntObject(component, userRole);
295 if (validateState == true && isValidationFailed == true) {
296 assertTrue("change state failed" + lifeCycleStatesResponse.getResponse(), false);
298 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
301 if (isValidationFailed == true) {
302 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
305 return Pair.of(componentJavaObject, lifeCycleStatesResponse);
308 public static RestResponse distributeService(Component component, Boolean validateState) throws Exception {
310 Service service = (Service) component;
312 User opsUser = ElementFactory.getDefaultUser(UserRoleEnum.OPS);
313 User governotUser = ElementFactory.getDefaultUser(UserRoleEnum.GOVERNOR);
315 ServiceReqDetails serviceDetails = new ServiceReqDetails(service);
316 RestResponse distributionService = null;
318 RestResponse approveDistribution = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, governotUser, "approveService", DistributionStatusEnum.DISTRIBUTION_APPROVED);
319 if (approveDistribution.getErrorCode() == 200) {
320 distributionService = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, opsUser, "approveService", DistributionStatusEnum.DISTRIBUTED);
324 assertTrue(approveDistribution.getErrorCode() == ProductRestUtils.STATUS_CODE_SUCCESS);
325 assertTrue(distributionService.getErrorCode() == ProductRestUtils.STATUS_CODE_SUCCESS);
326 return distributionService;
329 return distributionService;
333 public static RestResponse approveAndRejectServiceForDistribution(Component component) throws Exception {
335 Service service = (Service) component;
337 User opsUser = ElementFactory.getDefaultUser(UserRoleEnum.OPS);
338 opsUser.setRole("OPS");
339 User governotUser = ElementFactory.getDefaultUser(UserRoleEnum.GOVERNOR);
341 ServiceReqDetails serviceDetails = new ServiceReqDetails(service);
342 RestResponse distributionService = null;
344 RestResponse approveDistribution = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, governotUser, "approveService", DistributionStatusEnum.DISTRIBUTION_APPROVED);
345 if (approveDistribution.getErrorCode() == 200) {
346 distributionService = LifecycleRestUtils.changeDistributionStatus(serviceDetails, null, opsUser, "rejectService", DistributionStatusEnum.DISTRIBUTION_REJECTED);
349 assertEquals(approveDistribution.getErrorCode(), new Integer(ProductRestUtils.STATUS_CODE_SUCCESS));
350 assertEquals(distributionService.getErrorCode(), new Integer(ProductRestUtils.STATUS_CODE_SUCCESS));
352 return distributionService;
356 // *********** ARTIFACTS *****************
358 public static Either<ArtifactDefinition, RestResponse> uploadArtifactByType(ArtifactTypeEnum artifactType, Component component, UserRoleEnum userRole, Boolean deploymentTrue, Boolean validateState) throws Exception {
360 User defaultUser = ElementFactory.getDefaultUser(userRole);
361 ArtifactReqDetails artifactDetails = ElementFactory.getArtifactByType(null, artifactType, deploymentTrue);
362 if (deploymentTrue == false)
363 artifactDetails.setArtifactGroupType(ArtifactGroupTypeEnum.INFORMATIONAL.getType());
364 RestResponse uploadArtifactResp = ArtifactRestUtils.uploadArtifact(artifactDetails, component, defaultUser);
367 assertTrue("artifact upload failed: " + artifactDetails.getArtifactName(), uploadArtifactResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
370 if (uploadArtifactResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
371 ArtifactDefinition artifactJavaObject = ResponseParser.convertArtifactDefinitionResponseToJavaObject(uploadArtifactResp.getResponse());
372 return Either.left(artifactJavaObject);
374 return Either.right(uploadArtifactResp);
377 // *********** CONTAINERS *****************
379 * Adds Component instance to Component
381 * @param compInstParent
382 * @param compContainer
385 public static Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer(Component compInstParent, Component compContainer) {
386 return addComponentInstanceToComponentContainer(compInstParent, compContainer, UserRoleEnum.DESIGNER, false);
389 public static Either<ComponentInstance, RestResponse> addComponentInstanceToComponentContainer(Component compInstParent, Component compContainer, UserRoleEnum userRole, Boolean validateState) {
391 User defaultUser = ElementFactory.getDefaultUser(userRole);
392 ComponentInstanceReqDetails componentInstanceDetails = ElementFactory.getComponentInstance(compInstParent);
393 RestResponse createComponentInstance = ComponentInstanceRestUtils.createComponentInstance(componentInstanceDetails, defaultUser, compContainer);
396 assertTrue(createComponentInstance.getErrorCode() == ServiceRestUtils.STATUS_CODE_CREATED);
399 if (createComponentInstance.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
400 ComponentInstance componentInstance = ResponseParser.convertComponentInstanceResponseToJavaObject(createComponentInstance.getResponse());
401 return Either.left(componentInstance);
403 return Either.right(createComponentInstance);
404 } catch (Exception e) {
405 throw new AtomicOperationException(e);
409 public static Resource getResourceObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
410 // User defaultUser = ElementFactory.getDefaultUser(userRole);
411 RestResponse restResponse = ResourceRestUtils.getResource(containerDetails.getUniqueId());
412 Resource container = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
416 public static Resource getResourceObjectByNameAndVersion(UserRoleEnum sdncModifierDetails, String resourceName, String resourceVersion) throws Exception {
417 User defaultUser = ElementFactory.getDefaultUser(sdncModifierDetails);
418 RestResponse resourceResponse = ResourceRestUtils.getResourceByNameAndVersion(defaultUser.getUserId(), resourceName, resourceVersion);
419 Resource container = ResponseParser.convertResourceResponseToJavaObject(resourceResponse.getResponse());
423 public static Service getServiceObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
424 User defaultUser = ElementFactory.getDefaultUser(userRole);
425 RestResponse serviceResponse = ServiceRestUtils.getService(containerDetails.getUniqueId(), defaultUser);
426 Service container = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
430 public static Service getServiceObjectByNameAndVersion(UserRoleEnum sdncModifierDetails, String serviceName, String serviceVersion) throws Exception {
431 User defaultUser = ElementFactory.getDefaultUser(sdncModifierDetails);
432 RestResponse serviceResponse = ServiceRestUtils.getServiceByNameAndVersion(defaultUser, serviceName, serviceVersion);
433 Service container = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
437 public static Product getProductObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
438 User defaultUser = ElementFactory.getDefaultUser(userRole);
439 RestResponse productRest = ProductRestUtils.getProduct(containerDetails.getUniqueId(), defaultUser.getUserId());
440 Product container = ResponseParser.convertProductResponseToJavaObject(productRest.getResponse());
444 public static Component getCompoenntObject(Component containerDetails, UserRoleEnum userRole) throws Exception {
445 User defaultUser = ElementFactory.getDefaultUser(userRole);
447 switch (containerDetails.getComponentType()) {
449 RestResponse restResponse = ResourceRestUtils.getResource(containerDetails.getUniqueId());
450 containerDetails = ResponseParser.convertResourceResponseToJavaObject(restResponse.getResponse());
453 RestResponse serviceResponse = ServiceRestUtils.getService(containerDetails.getUniqueId(), defaultUser);
454 containerDetails = ResponseParser.convertServiceResponseToJavaObject(serviceResponse.getResponse());
457 RestResponse productRest = ProductRestUtils.getProduct(containerDetails.getUniqueId(), defaultUser.getUserId());
458 containerDetails = ResponseParser.convertProductResponseToJavaObject(productRest.getResponse());
463 return containerDetails;
466 public static Component convertReposnseToComponentObject(Component containerDetails, RestResponse restresponse) throws Exception {
468 switch (containerDetails.getComponentType()) {
470 containerDetails = ResponseParser.convertResourceResponseToJavaObject(restresponse.getResponse());
473 containerDetails = ResponseParser.convertServiceResponseToJavaObject(restresponse.getResponse());
476 containerDetails = ResponseParser.convertProductResponseToJavaObject(restresponse.getResponse());
481 return containerDetails;
484 public static RestResponse associate2ResourceInstances(Component containerDetails, ComponentInstance fromNode, ComponentInstance toNode, String assocType, UserRoleEnum userRole, Boolean validateState) throws IOException {
485 User defaultUser = ElementFactory.getDefaultUser(userRole);
486 RestResponse associate2ResourceInstancesResponse = ResourceRestUtils.associate2ResourceInstances(containerDetails, fromNode, toNode, assocType, defaultUser);
489 assertTrue(associate2ResourceInstancesResponse.getErrorCode() == ServiceRestUtils.STATUS_CODE_SUCCESS);
492 return associate2ResourceInstancesResponse;
495 public static Either<Pair<Component, ComponentInstance>, RestResponse> changeComponentInstanceVersion(Component containerDetails, ComponentInstance componentInstanceToReplace, Component newInstance, UserRoleEnum userRole, Boolean validateState)
497 User defaultUser = ElementFactory.getDefaultUser(userRole);
499 RestResponse changeComponentInstanceVersionResp = ComponentInstanceRestUtils.changeComponentInstanceVersion(containerDetails, componentInstanceToReplace, newInstance, defaultUser);
501 assertTrue("change ComponentInstance version failed: " + changeComponentInstanceVersionResp.getResponseMessage(), changeComponentInstanceVersionResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
504 if (changeComponentInstanceVersionResp.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
506 Component compoenntObject = AtomicOperationUtils.getCompoenntObject(containerDetails, userRole);
507 ComponentInstance componentInstanceJavaObject = ResponseParser.convertComponentInstanceResponseToJavaObject(changeComponentInstanceVersionResp.getResponse());
509 return Either.left(Pair.of(compoenntObject, componentInstanceJavaObject));
512 return Either.right(changeComponentInstanceVersionResp);
515 // *********** PROPERTIES *****************
517 public static Either<ComponentInstanceProperty, RestResponse> addCustomPropertyToResource(PropertyReqDetails propDetails, Resource resourceDetails, UserRoleEnum userRole, Boolean validateState) throws Exception {
519 User defaultUser = ElementFactory.getDefaultUser(userRole);
520 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
521 propertyToSend.put(propDetails.getName(), propDetails);
522 Gson gson = new Gson();
523 RestResponse addPropertyResponse = PropertyRestUtils.createProperty(resourceDetails.getUniqueId(), gson.toJson(propertyToSend), defaultUser);
526 assertTrue("add property to resource failed: " + addPropertyResponse.getErrorCode(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED);
529 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED) {
530 ComponentInstanceProperty compInstProp = null;
531 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
532 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
533 return Either.left(compInstProp);
535 return Either.right(addPropertyResponse);
539 public static Either<ComponentInstanceProperty, RestResponse> updatePropertyOfResource(PropertyReqDetails propDetails, Resource resourceDetails, String propertyUniqueId, UserRoleEnum userRole, Boolean validateState) throws Exception {
541 User defaultUser = ElementFactory.getDefaultUser(userRole);
542 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
543 propertyToSend.put(propDetails.getName(), propDetails);
544 Gson gson = new Gson();
545 RestResponse addPropertyResponse = PropertyRestUtils.updateProperty(resourceDetails.getUniqueId(), propertyUniqueId, gson.toJson(propertyToSend), defaultUser);
548 assertTrue("add property to resource failed: " + addPropertyResponse.getResponseMessage(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS);
551 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_SUCCESS) {
552 ComponentInstanceProperty compInstProp = null;
553 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
554 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
555 return Either.left(compInstProp);
557 return Either.right(addPropertyResponse);
560 public static RestResponse deletePropertyOfResource(String resourceId, String propertyId, UserRoleEnum userRole) throws Exception {
561 User defaultUser = ElementFactory.getDefaultUser(userRole);
562 return PropertyRestUtils.deleteProperty(resourceId, propertyId, defaultUser);
565 public static Either<ComponentInstanceProperty, RestResponse> addDefaultPropertyToResource(PropertyTypeEnum propertyType, Resource resourceDetails, UserRoleEnum userRole, Boolean validateState) throws Exception {
567 User defaultUser = ElementFactory.getDefaultUser(userRole);
568 PropertyReqDetails propDetails = ElementFactory.getPropertyDetails(propertyType);
569 Map<String, PropertyReqDetails> propertyToSend = new HashMap<String, PropertyReqDetails>();
570 propertyToSend.put(propDetails.getName(), propDetails);
571 Gson gson = new Gson();
572 RestResponse addPropertyResponse = PropertyRestUtils.createProperty(resourceDetails.getUniqueId(), gson.toJson(propertyToSend), defaultUser);
575 assertTrue("add property to resource failed: " + addPropertyResponse.getResponseMessage(), addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED);
578 if (addPropertyResponse.getErrorCode() == BaseRestUtils.STATUS_CODE_CREATED) {
579 ComponentInstanceProperty compInstProp = null;
580 String property = ResponseParser.getJsonObjectValueByKey(addPropertyResponse.getResponse(), propDetails.getName());
581 compInstProp = (ResponseParser.convertPropertyResponseToJavaObject(property));
583 return Either.left(compInstProp);
585 return Either.right(addPropertyResponse);
588 public static RestResponse createDefaultConsumer(Boolean validateState) {
590 ConsumerDataDefinition defaultConsumerDefinition = ElementFactory.getDefaultConsumerDetails();
591 RestResponse createResponse = ConsumerRestUtils.createConsumer(defaultConsumerDefinition, ElementFactory.getDefaultUser(UserRoleEnum.ADMIN));
592 BaseRestUtils.checkCreateResponse(createResponse);
595 assertTrue(createResponse.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
597 return createResponse;
598 } catch (Exception e) {
599 throw new AtomicOperationException(e);
604 * Builds Resource From rest response
606 * @param resourceResp
609 public static Either<Resource, RestResponse> buildResourceFromResponse(RestResponse resourceResp) {
610 Either<Resource, RestResponse> result;
611 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
612 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
613 result = Either.left(resourceResponseObject);
615 result = Either.right(resourceResp);
620 private static class AtomicOperationException extends RuntimeException {
621 private AtomicOperationException(Exception e) {
625 private static final long serialVersionUID = 1L;
629 * Import resource from CSAR
631 * @param resourceType
638 public static Resource importResourceFromCSAR(ResourceTypeEnum resourceType, UserRoleEnum userRole, String fileName, String... filePath) throws Exception {
639 // Get the CSARs path
640 String realFilePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test" + File.separator + "resources" + File.separator + "CI" + File.separator + "csars" ;
641 if (filePath != null && filePath.length > 0) {
642 realFilePath = filePath.toString();
645 // Create default import resource & user
646 ImportReqDetails resourceDetails = ElementFactory.getDefaultImportResource();
647 User sdncModifierDetails = ElementFactory.getDefaultUser(userRole);
650 Path path = Paths.get(realFilePath + File.separator + fileName);
651 data = Files.readAllBytes(path);
652 String payloadName = fileName;
653 String payloadData = Base64.encodeBase64String(data);
654 resourceDetails.setPayloadData(payloadData);
655 resourceDetails.setCsarUUID(payloadName);
656 resourceDetails.setPayloadName(payloadName);
657 resourceDetails.setResourceType(resourceType.name());
659 RestResponse createResource = ResourceRestUtils.createResource(resourceDetails, sdncModifierDetails);
660 BaseRestUtils.checkCreateResponse(createResource);
661 return ResponseParser.parseToObjectUsingMapper(createResource.getResponse(), Resource.class);
664 public static Either<Resource, RestResponse> importResourceByFileName(ResourceTypeEnum resourceType, UserRoleEnum userRole, String fileName, Boolean validateState, String... filePath) throws IOException {
666 String realFilePath = System.getProperty("user.dir") + File.separator + "src" + File.separator + "test" + File.separator + "resources" + File.separator + "CI" + File.separator + "csars" ;
667 if (filePath != null && filePath.length > 0) {
668 realFilePath = filePath.toString();
672 User defaultUser = ElementFactory.getDefaultUser(userRole);
673 ResourceReqDetails defaultResource = ElementFactory.getDefaultResource(defaultUser);
674 ImportReqDetails defaultImportResource = ElementFactory.getDefaultImportResource(defaultResource);
675 ImportUtils.getImportResourceDetailsByPathAndName(defaultImportResource, realFilePath, fileName);
676 RestResponse resourceResp = ResourceRestUtils.createResource(defaultImportResource, defaultUser);
679 assertTrue(resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED);
682 if (resourceResp.getErrorCode() == ResourceRestUtils.STATUS_CODE_CREATED) {
683 Resource resourceResponseObject = ResponseParser.convertResourceResponseToJavaObject(resourceResp.getResponse());
684 return Either.left(resourceResponseObject);
686 return Either.right(resourceResp);
687 } catch (Exception e) {
688 throw new AtomicOperationException(e);