Catalog alignment
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / lifecycle / CertificationChangeTransitionValidationTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.be.components.lifecycle;
22
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;
37
38 import static org.junit.Assert.assertTrue;
39
40 public class CertificationChangeTransitionValidationTest extends LifecycleTestBase {
41
42     private CertificationChangeTransition certifyTransitionObj = null;
43     @Mock
44     private ServiceBusinessLogic serviceBusinessLogic;
45
46     private User owner = null;
47
48     Resource resource;
49     Service service; 
50
51     @SuppressWarnings("unchecked")
52     @Before
53     public void setup() {
54
55         super.setup();
56         // checkout transition object
57         certifyTransitionObj = new CertificationChangeTransition(serviceBusinessLogic, LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, janusGraphDao);
58         certifyTransitionObj.setConfigurationManager(configurationManager);
59         certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
60
61         owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
62         user.setRole(UserRoleEnum.DESIGNER.getName());
63
64         resource = createResourceObject();
65         service = createServiceObject();
66     }
67
68     @Test
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());
73     }
74
75     @Test
76     public void testStateCheckInValidationSuccess() {
77         Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
78         assertTrue(changeStateResult.isLeft());
79
80         changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
81         assertTrue(changeStateResult.isLeft());
82     }
83
84     @Test
85     public void testStateCheckOutValidationSuccess() {
86         Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
87         assertTrue(changeStateResult.isLeft());
88
89         changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
90         assertTrue(changeStateResult.isLeft());
91     }
92     
93     @Test
94     public void testStateCertifyValidationFail() {
95         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.CERTIFIED);
96         assertValidationStateErrorResponse(validateBeforeTransition);
97
98         certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
99         assertValidationStateErrorResponse(validateBeforeTransition);
100     }
101
102     @Test
103     public void testRolesSuccess() {
104
105         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
106         assertSuccessWithResourceAndService();
107
108         user.setRole(UserRoleEnum.ADMIN.getName());
109         assertSuccessWithResourceAndService();
110
111     }
112
113     @Test
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();
123     }
124
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());
130     }
131
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);
137     }
138
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());
144
145         assertResponse(changeStateResult, ActionStatus.ILLEGAL_COMPONENT_STATE);
146     }
147
148 }