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