re base code
[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, titanDao);
53         certifyTransitionObj.setConfigurationManager(configurationManager);
54         certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
55
56         certificationCancelObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation,  toscaOperationFacade, titanDao);
57         certificationCancelObj.setConfigurationManager(configurationManager);
58         certificationCancelObj.setLifeCycleOperation(toscaElementLifecycleOperation);
59
60         certificationFailObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
61         certificationFailObj.setConfigurationManager(configurationManager);
62         certificationFailObj.setLifeCycleOperation(toscaElementLifecycleOperation);
63
64         owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
65
66         resource = createResourceObject();
67         service = createServiceObject();
68     }
69     
70     @Test
71     public void testConstructor(){
72         Resource resource = createResourceVFCMTObject();
73
74         User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
75
76         for (LifeCycleTransitionEnum value : LifeCycleTransitionEnum.values()) {
77                 new CertificationChangeTransition(value, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
78                 }
79         
80     }
81     
82     @Test
83     public void testVFCMTStateValidation(){
84         Resource resource = createResourceVFCMTObject();
85
86         User user = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
87
88         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
89         assertTrue(validateBeforeTransition.isLeft());
90     }
91
92     @Test
93     public void testStateValidationSuccess() {
94
95         Either<Boolean, ResponseFormat> changeStateResult = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
96         assertTrue(changeStateResult.isLeft());
97
98     }
99     
100     @Test
101     public void testStateValidationFail() {
102
103         // checkout
104         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
105
106         assertValidationStateErrorResponse(validateBeforeTransition);
107
108         // checkin
109         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
110         assertValidationStateErrorResponse(validateBeforeTransition);
111
112         // rfc
113         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
114         assertValidationStateErrorResponse(validateBeforeTransition);
115
116         // certified
117         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(service, ComponentTypeEnum.SERVICE, user, owner, LifecycleStateEnum.CERTIFIED);
118         assertValidationStateErrorResponse(validateBeforeTransition);
119
120     }
121
122     @Test
123     public void testRolesFail() {
124         Either<Resource, ResponseFormat> changeStateResult;
125
126         resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
127
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());
139
140         modifier.setRole(Role.TESTER.name());
141         validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
142         assertTrue(validateBeforeTransition.isLeft());
143
144     }
145
146     @Test
147     public void testRolesSuccess() {
148
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();
153
154         Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, owner, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
155         assertTrue(validateBeforeTransition.isLeft());
156
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());
164
165     }
166
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());
172
173         assertResponse(changeStateResult, ActionStatus.COMPONENT_NOT_READY_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
174     }
175
176 }