Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / lifecycle / CertificationChangeTransitionTest.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.openecomp.sdc.be.dao.api.ActionStatus;
27 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
28 import org.openecomp.sdc.be.model.LifeCycleTransitionEnum;
29 import org.openecomp.sdc.be.model.LifecycleStateEnum;
30 import org.openecomp.sdc.be.model.Resource;
31 import org.openecomp.sdc.be.model.User;
32 import org.openecomp.sdc.be.user.Role;
33 import org.openecomp.sdc.exception.ResponseFormat;
34
35 import static org.junit.Assert.assertEquals;
36 import static org.junit.Assert.assertTrue;
37
38 public class CertificationChangeTransitionTest extends LifecycleTestBase {
39
40     private CertificationChangeTransition certifyTransitionObj = null;
41     private CertificationChangeTransition certificationCancelObj = null;
42     private CertificationChangeTransition certificationFailObj = null;
43
44     private User owner = null;
45
46     Resource resource;
47
48     @SuppressWarnings("unchecked")
49     @Before
50     public void setup() {
51
52         super.setup();
53         // checkout transition object
54         certifyTransitionObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
55         certifyTransitionObj.setConfigurationManager(configurationManager);
56         certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
57
58         certificationCancelObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation,  toscaOperationFacade, titanDao);
59         certificationCancelObj.setConfigurationManager(configurationManager);
60         certificationCancelObj.setLifeCycleOperation(toscaElementLifecycleOperation);
61
62         certificationFailObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
63         certificationFailObj.setConfigurationManager(configurationManager);
64         certificationFailObj.setLifeCycleOperation(toscaElementLifecycleOperation);
65
66         owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
67
68         resource = createResourceObject();
69     }
70
71     @Test
72     public void testVFCMTStateValidation(){
73         Resource resource = createResourceVFCMTObject();
74
75         User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
76
77         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
78         assertEquals(validateBeforeTransition.isLeft(), true);
79     }
80
81     @Test
82     public void testStateValidationSuccess() {
83
84         Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
85         assertEquals(changeStateResult.isLeft(), true);
86
87     }
88
89     @Test
90     public void testStateValidationFail() {
91
92         // checkout
93         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
94
95         assertValidationStateErrorResponse(validateBeforeTransition);
96
97         // checkin
98         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
99         assertValidationStateErrorResponse(validateBeforeTransition);
100
101         // rfc
102         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
103         assertValidationStateErrorResponse(validateBeforeTransition);
104
105         // certified
106         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
107         assertValidationStateErrorResponse(validateBeforeTransition);
108
109     }
110
111     @Test
112     public void testRolesFail() {
113         Either<Resource, ResponseFormat> changeStateResult;
114
115         resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
116
117         User modifier = new User();
118         modifier.setUserId("modifier");
119         modifier.setFirstName("Albert");
120         modifier.setLastName("Einstein");
121         modifier.setRole(Role.DESIGNER.name());
122         Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
123         assertTrue(ownerResponse.isLeft());
124         User owner = ownerResponse.left().value();
125
126         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
127         assertEquals(validateBeforeTransition.isRight(), true);
128         changeStateResult = Either.right(validateBeforeTransition.right().value());
129         assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION);
130
131         modifier.setRole(Role.TESTER.name());
132         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
133         assertEquals(validateBeforeTransition.isRight(), true);
134         changeStateResult = Either.right(validateBeforeTransition.right().value());
135         assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
136
137     }
138
139     @Test
140     public void testRolesSuccess() {
141
142         resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
143         Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
144         assertTrue(ownerResponse.isLeft());
145         User owner = ownerResponse.left().value();
146
147         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, owner, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
148         assertEquals(true, validateBeforeTransition.isLeft());
149
150         User modifier = new User();
151         modifier.setUserId("modifier");
152         modifier.setFirstName("Albert");
153         modifier.setLastName("Einstein");
154         modifier.setRole(Role.ADMIN.name());
155         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
156         assertEquals(true, validateBeforeTransition.isLeft());
157
158     }
159
160     private void assertValidationStateErrorResponse(Either<Boolean, ResponseFormat> validateBeforeTransition) {
161         assertEquals(validateBeforeTransition.isRight(), true);
162         ResponseFormat error = validateBeforeTransition.right().value();
163         Either<Resource, ResponseFormat> changeStateResult = Either.right(error);
164         assertEquals(changeStateResult.isRight(), true);
165
166         assertResponse(changeStateResult, ActionStatus.COMPONENT_NOT_READY_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
167     }
168
169 }