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