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.be.components.lifecycle;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertTrue;
26 import java.util.List;
28 import org.junit.Before;
29 import org.junit.Test;
30 import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
31 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
32 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
33 import org.openecomp.sdc.be.dao.api.ActionStatus;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.model.Component;
36 import org.openecomp.sdc.be.model.ComponentInstance;
37 import org.openecomp.sdc.be.model.LifeCycleTransitionEnum;
38 import org.openecomp.sdc.be.model.LifecycleStateEnum;
39 import org.openecomp.sdc.be.model.Resource;
40 import org.openecomp.sdc.be.model.User;
41 import org.openecomp.sdc.be.ui.model.UiComponentDataTransfer;
42 import org.openecomp.sdc.be.user.Role;
43 import org.openecomp.sdc.exception.ResponseFormat;
45 import fj.data.Either;
47 public class CertificationChangeTransitionTest extends LifecycleTestBase {
49 private CertificationChangeTransition certifyTransitionObj = null;
50 private CertificationChangeTransition certificationCancelObj = null;
51 private CertificationChangeTransition certificationFailObj = null;
53 private User owner = null;
57 @SuppressWarnings("unchecked")
62 // checkout transition object
63 certifyTransitionObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
64 certifyTransitionObj.setConfigurationManager(configurationManager);
65 certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
67 certificationCancelObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
68 certificationCancelObj.setConfigurationManager(configurationManager);
69 certificationCancelObj.setLifeCycleOperation(toscaElementLifecycleOperation);
71 certificationFailObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
72 certificationFailObj.setConfigurationManager(configurationManager);
73 certificationFailObj.setLifeCycleOperation(toscaElementLifecycleOperation);
75 owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
77 resource = createResourceObject();
81 public void testConstructor(){
82 Resource resource = createResourceVFCMTObject();
84 User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
86 for (LifeCycleTransitionEnum value : LifeCycleTransitionEnum.values()) {
87 new CertificationChangeTransition(value, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
93 public void testVFCMTStateValidation(){
94 Resource resource = createResourceVFCMTObject();
96 User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
98 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
99 assertEquals(validateBeforeTransition.isLeft(), true);
103 public void testStateValidationSuccess() {
105 Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
106 assertEquals(changeStateResult.isLeft(), true);
111 public void testStateValidationFail() {
114 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
116 assertValidationStateErrorResponse(validateBeforeTransition);
119 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
120 assertValidationStateErrorResponse(validateBeforeTransition);
123 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
124 assertValidationStateErrorResponse(validateBeforeTransition);
127 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
128 assertValidationStateErrorResponse(validateBeforeTransition);
133 public void testRolesFail() {
134 Either<Resource, ResponseFormat> changeStateResult;
136 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
138 User modifier = new User();
139 modifier.setUserId("modifier");
140 modifier.setFirstName("Albert");
141 modifier.setLastName("Einstein");
142 modifier.setRole(Role.DESIGNER.name());
143 Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
144 assertTrue(ownerResponse.isLeft());
145 User owner = ownerResponse.left().value();
147 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
148 assertEquals(validateBeforeTransition.isRight(), true);
149 changeStateResult = Either.right(validateBeforeTransition.right().value());
150 assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION);
152 modifier.setRole(Role.TESTER.name());
153 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
154 assertEquals(validateBeforeTransition.isRight(), true);
155 changeStateResult = Either.right(validateBeforeTransition.right().value());
156 assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
161 public void testRolesSuccess() {
163 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
164 Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
165 assertTrue(ownerResponse.isLeft());
166 User owner = ownerResponse.left().value();
168 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, owner, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
169 assertEquals(true, validateBeforeTransition.isLeft());
171 User modifier = new User();
172 modifier.setUserId("modifier");
173 modifier.setFirstName("Albert");
174 modifier.setLastName("Einstein");
175 modifier.setRole(Role.ADMIN.name());
176 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
177 assertEquals(true, validateBeforeTransition.isLeft());
181 private void assertValidationStateErrorResponse(Either<Boolean, ResponseFormat> validateBeforeTransition) {
182 assertEquals(validateBeforeTransition.isRight(), true);
183 ResponseFormat error = validateBeforeTransition.right().value();
184 Either<Resource, ResponseFormat> changeStateResult = Either.right(error);
185 assertEquals(changeStateResult.isRight(), true);
187 assertResponse(changeStateResult, ActionStatus.COMPONENT_NOT_READY_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());