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 fj.data.Either;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.openecomp.sdc.be.dao.api.ActionStatus;
27 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
28 import org.openecomp.sdc.be.model.*;
29 import org.openecomp.sdc.be.user.Role;
30 import org.openecomp.sdc.exception.ResponseFormat;
32 import static org.junit.Assert.assertEquals;
33 import static org.junit.Assert.assertTrue;
35 public class CertificationChangeTransitionTest extends LifecycleTestBase {
37 private CertificationChangeTransition certifyTransitionObj = null;
38 private CertificationChangeTransition certificationCancelObj = null;
39 private CertificationChangeTransition certificationFailObj = null;
41 private User owner = null;
46 @SuppressWarnings("unchecked")
51 // checkout transition object
52 certifyTransitionObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
53 certifyTransitionObj.setConfigurationManager(configurationManager);
54 certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
56 certificationCancelObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
57 certificationCancelObj.setConfigurationManager(configurationManager);
58 certificationCancelObj.setLifeCycleOperation(toscaElementLifecycleOperation);
60 certificationFailObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
61 certificationFailObj.setConfigurationManager(configurationManager);
62 certificationFailObj.setLifeCycleOperation(toscaElementLifecycleOperation);
64 owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
66 resource = createResourceObject();
67 service = createServiceObject();
71 public void testConstructor(){
72 Resource resource = createResourceVFCMTObject();
74 User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
76 for (LifeCycleTransitionEnum value : LifeCycleTransitionEnum.values()) {
77 new CertificationChangeTransition(value, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
83 public void testVFCMTStateValidation(){
84 Resource resource = createResourceVFCMTObject();
86 User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
88 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
89 assertTrue(validateBeforeTransition.isLeft());
93 public void testStateValidationSuccess() {
95 Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
96 assertTrue(changeStateResult.isLeft());
101 public void testStateValidationFail() {
104 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
106 assertValidationStateErrorResponse(validateBeforeTransition);
109 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
110 assertValidationStateErrorResponse(validateBeforeTransition);
113 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
114 assertValidationStateErrorResponse(validateBeforeTransition);
117 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.CERTIFIED);
118 assertValidationStateErrorResponse(validateBeforeTransition);
123 public void testRolesFail() {
124 Either<Resource, ResponseFormat> changeStateResult;
126 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
128 User modifier = new User();
129 modifier.setUserId("modifier");
130 modifier.setFirstName("Albert");
131 modifier.setLastName("Einstein");
132 modifier.setRole(Role.DESIGNER.name());
133 Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
134 assertTrue(ownerResponse.isLeft());
135 User owner = ownerResponse.left().value();
136 //the lifecycle was changed for resource!!
137 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
138 assertTrue(validateBeforeTransition.isLeft());
140 modifier.setRole(Role.TESTER.name());
141 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
142 assertTrue(validateBeforeTransition.isLeft());
147 public void testRolesSuccess() {
149 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
150 Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
151 assertTrue(ownerResponse.isLeft());
152 User owner = ownerResponse.left().value();
154 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, owner, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
155 assertTrue(validateBeforeTransition.isLeft());
157 User modifier = new User();
158 modifier.setUserId("modifier");
159 modifier.setFirstName("Albert");
160 modifier.setLastName("Einstein");
161 modifier.setRole(Role.ADMIN.name());
162 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
163 assertTrue(validateBeforeTransition.isLeft());
167 private void assertValidationStateErrorResponse(Either<Boolean, ResponseFormat> validateBeforeTransition) {
168 assertTrue(validateBeforeTransition.isRight());
169 ResponseFormat error = validateBeforeTransition.right().value();
170 Either<Resource, ResponseFormat> changeStateResult = Either.right(error);
171 assertTrue(changeStateResult.isRight());
173 assertResponse(changeStateResult, ActionStatus.COMPONENT_NOT_READY_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());