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