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