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