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.mockito.Mock;
27 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
28 import org.openecomp.sdc.be.dao.api.ActionStatus;
29 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
30 import org.openecomp.sdc.be.model.LifeCycleTransitionEnum;
31 import org.openecomp.sdc.be.model.LifecycleStateEnum;
32 import org.openecomp.sdc.be.model.Resource;
33 import org.openecomp.sdc.be.model.Service;
34 import org.openecomp.sdc.be.model.User;
35 import org.openecomp.sdc.common.api.UserRoleEnum;
36 import org.openecomp.sdc.exception.ResponseFormat;
38 import static org.junit.Assert.assertTrue;
40 public class CertificationChangeTransitionValidationTest extends LifecycleTestBase {
42 private CertificationChangeTransition certifyTransitionObj = null;
44 private ServiceBusinessLogic serviceBusinessLogic;
46 private User owner = null;
51 @SuppressWarnings("unchecked")
56 // checkout transition object
57 certifyTransitionObj = new CertificationChangeTransition(serviceBusinessLogic, LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, janusGraphDao);
58 certifyTransitionObj.setConfigurationManager(configurationManager);
59 certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
61 owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
62 user.setRole(UserRoleEnum.DESIGNER.getName());
64 resource = createResourceObject();
65 service = createServiceObject();
69 public void testVFCMTStateValidation(){
70 Resource resource = createResourceVFCMTObject();
71 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
72 assertTrue(validateBeforeTransition.isLeft());
76 public void testStateCheckInValidationSuccess() {
77 Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
78 assertTrue(changeStateResult.isLeft());
80 changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
81 assertTrue(changeStateResult.isLeft());
85 public void testStateCheckOutValidationSuccess() {
86 Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
87 assertTrue(changeStateResult.isLeft());
89 changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
90 assertTrue(changeStateResult.isLeft());
94 public void testStateCertifyValidationFail() {
95 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.CERTIFIED);
96 assertValidationStateErrorResponse(validateBeforeTransition);
98 certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
99 assertValidationStateErrorResponse(validateBeforeTransition);
103 public void testRolesSuccess() {
105 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
106 assertSuccessWithResourceAndService();
108 user.setRole(UserRoleEnum.ADMIN.getName());
109 assertSuccessWithResourceAndService();
114 public void testRolesFail() {
115 user.setRole(UserRoleEnum.TESTER.getName());
116 assertBeforeTransitionRoleFalis();
117 assertBeforeTransitionRoleFalis();
118 assertBeforeTransitionRoleFalis();
119 user.setRole(UserRoleEnum.PRODUCT_MANAGER.getName());
120 assertBeforeTransitionRoleFalis();
121 user.setRole(UserRoleEnum.PRODUCT_STRATEGIST.getName());
122 assertBeforeTransitionRoleFalis();
125 private void assertSuccessWithResourceAndService() {
126 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
127 assertTrue(validateBeforeTransition.isLeft());
128 certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
129 assertTrue(validateBeforeTransition.isLeft());
132 private void assertBeforeTransitionRoleFalis() {
133 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
134 assertResponse(Either.right(validateBeforeTransition.right().value()), ActionStatus.RESTRICTED_OPERATION);
135 certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
136 assertResponse(Either.right(validateBeforeTransition.right().value()), ActionStatus.RESTRICTED_OPERATION);
139 private void assertValidationStateErrorResponse(Either<Boolean, ResponseFormat> validateBeforeTransition) {
140 assertTrue(validateBeforeTransition.isRight());
141 ResponseFormat error = validateBeforeTransition.right().value();
142 Either<Resource, ResponseFormat> changeStateResult = Either.right(error);
143 assertTrue(changeStateResult.isRight());
145 assertResponse(changeStateResult, ActionStatus.ILLEGAL_COMPONENT_STATE);