72c58c02f0b51d29a9a456f64c7cb2cddc934c66
[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 import static org.mockito.Mockito.when;
26
27 import org.junit.Before;
28 import org.junit.Ignore;
29 import org.junit.Test;
30 import org.mockito.Mockito;
31 import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic;
32 import org.openecomp.sdc.be.components.lifecycle.CertificationChangeTransition;
33 import org.openecomp.sdc.be.dao.api.ActionStatus;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.impl.ComponentsUtils;
36 import org.openecomp.sdc.be.model.Component;
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.model.operations.api.StorageOperationStatus;
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 ComponentsUtils componentsUtils = new ComponentsUtils();
54         private String resourceName = "myResource";
55         private User owner = null;
56
57         protected ArtifactsBusinessLogic artifactsManager = Mockito.mock(ArtifactsBusinessLogic.class);
58
59         Resource resource;
60
61         @SuppressWarnings("unchecked")
62         @Before
63         public void setup() {
64
65                 super.setup();
66                 componentsUtils.Init();
67                 // checkout transition object
68                 certifyTransitionObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
69                 certifyTransitionObj.setConfigurationManager(configurationManager);
70                 certifyTransitionObj.setLifeCycleOperation(toscaElementLifecycleOperation);
71                 
72                 certificationCancelObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation,  toscaOperationFacade, titanDao);
73                 certificationCancelObj.setConfigurationManager(configurationManager);
74                 certificationCancelObj.setLifeCycleOperation(toscaElementLifecycleOperation);
75                 
76                 certificationFailObj = new CertificationChangeTransition(LifeCycleTransitionEnum.CERTIFY, componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade, titanDao);
77                 certificationFailObj.setConfigurationManager(configurationManager);
78                 certificationFailObj.setLifeCycleOperation(toscaElementLifecycleOperation);
79                 
80                 owner = new User("cs0008", "Carlos", "Santana", "cs@sdc.com", "DESIGNER", null);
81
82                 when(artifactsManager.deleteAllComponentArtifactsIfNotOnGraph(Mockito.anyList())).thenReturn(StorageOperationStatus.OK);
83                 resource = createResourceObject(false);
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                 assertEquals(validateBeforeTransition.isLeft(), true);
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                 assertEquals(changeStateResult.isLeft(), true);
101
102         }
103
104         @Test
105         public void testStateValidationFail() {
106
107                 // checkout
108                 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
109
110                 assertValidationStateErrorResponse(validateBeforeTransition);
111
112                 // checkin
113                 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
114                 assertValidationStateErrorResponse(validateBeforeTransition);
115
116                 // rfc
117                 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
118                 assertValidationStateErrorResponse(validateBeforeTransition);
119
120                 // certified
121                 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, 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
141                 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
142                 assertEquals(validateBeforeTransition.isRight(), true);
143                 changeStateResult = Either.right(validateBeforeTransition.right().value());
144                 assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION);
145
146                 modifier.setRole(Role.TESTER.name());
147                 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.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
151
152         }
153
154         @Test
155         public void testRolesSuccess() {
156
157                 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
158                 Either<User, ResponseFormat> ownerResponse = certifyTransitionObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
159                 assertTrue(ownerResponse.isLeft());
160                 User owner = ownerResponse.left().value();
161
162                 Either<Boolean, ResponseFormat> validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, owner, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
163                 assertEquals(true, validateBeforeTransition.isLeft());
164
165                 User modifier = new User();
166                 modifier.setUserId("modifier");
167                 modifier.setFirstName("Albert");
168                 modifier.setLastName("Einstein");
169                 modifier.setRole(Role.ADMIN.name());
170                 validateBeforeTransition = certifyTransitionObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
171                 assertEquals(true, validateBeforeTransition.isLeft());
172
173         }
174
175         private void assertValidationStateErrorResponse(Either<Boolean, ResponseFormat> validateBeforeTransition) {
176                 assertEquals(validateBeforeTransition.isRight(), true);
177                 ResponseFormat error = validateBeforeTransition.right().value();
178                 Either<Resource, ResponseFormat> changeStateResult = Either.right(error);
179                 assertEquals(changeStateResult.isRight(), true);
180
181                 assertResponse(changeStateResult, ActionStatus.COMPONENT_NOT_READY_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
182         }
183
184 }