re base code
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / lifecycle / CheckoutTest.java
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 fj.data.Either;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.mockito.InjectMocks;
27 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
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.Component;
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 static org.junit.Assert.assertEquals;
38 import static org.junit.Assert.assertTrue;
39
40 public class CheckoutTest extends LifecycleTestBase {
41
42     private CheckoutTransition checkoutObj = null;
43     @InjectMocks
44     ResourceBusinessLogic bl = new ResourceBusinessLogic();
45
46     @Before
47     public void setup() {
48
49         super.setup();
50         // checkout transition object
51         checkoutObj = new CheckoutTransition(componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade,  titanDao);
52         checkoutObj.setLifeCycleOperation(toscaElementLifecycleOperation);
53         checkoutObj.setConfigurationManager(configurationManager);
54         bl.setToscaOperationFacade(toscaOperationFacade);
55         bl.setComponentsUtils(componentsUtils);
56
57     }
58
59     @Test
60     public void testCheckoutStateValidation() {
61         Either<? extends Component, ResponseFormat> changeStateResult;
62         Resource resource = createResourceObject();
63
64         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
65         Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
66         assertTrue(ownerResponse.isLeft());
67         User owner = ownerResponse.left().value();
68         changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
69         assertTrue(changeStateResult.isLeft());
70
71         resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
72         changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
73         assertTrue(changeStateResult.isLeft());
74
75     }
76
77     @Test
78     public void testAlreadyCheckout() {
79         Either<Resource, ResponseFormat> changeStateResult;
80         Resource resource = createResourceObject();
81
82         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
83         Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
84         assertTrue(ownerResponse.isLeft());
85         User owner = ownerResponse.left().value();
86         Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
87         assertTrue(validateBeforeTransition.isRight());
88         changeStateResult = Either.right(validateBeforeTransition.right().value());
89
90         assertTrue(changeStateResult.isRight());
91         assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CHECKOUT_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
92
93     }
94
95     @Test
96     public void testCertificationInProgress() {
97         Either<? extends Component, ResponseFormat> changeStateResult;
98         Resource resource = createResourceObject();
99
100         resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
101         Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
102         assertTrue(ownerResponse.isLeft());
103         User owner = ownerResponse.left().value();
104         changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
105
106         Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
107         assertTrue(validateBeforeTransition.isRight());
108         changeStateResult = Either.right(validateBeforeTransition.right().value());
109         assertTrue(changeStateResult.isRight());
110
111         assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
112
113     }
114
115     @Test
116     public void testReadyForCertification() {
117         Either<Resource, ResponseFormat> changeStateResult;
118         Resource resource = createResourceObject();
119
120         resource.setLifecycleState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
121
122         // if modifier = owner
123         Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
124         assertTrue(ownerResponse.isLeft());
125         User owner = ownerResponse.left().value();
126         Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
127         assertTrue(validateBeforeTransition.isLeft());
128
129         // else
130         User modifier = new User();
131         modifier.setUserId("modifier");
132         modifier.setFirstName("Albert");
133         modifier.setLastName("Einstein");
134
135         // admin
136         modifier.setRole(Role.ADMIN.name());
137         validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
138         assertTrue(validateBeforeTransition.isLeft());
139
140         // designer
141         modifier.setRole(Role.TESTER.name());
142         validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
143         assertTrue(validateBeforeTransition.isRight());
144         changeStateResult = Either.right(validateBeforeTransition.right().value());
145
146         assertTrue(changeStateResult.isRight());
147         assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
148
149     }
150
151     @Test
152     public void testRoles() {
153         Either<Resource, ResponseFormat> changeStateResult;
154         Resource resource = createResourceObject();
155
156         resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
157
158         User modifier = new User();
159         modifier.setUserId("modifier");
160         modifier.setFirstName("Albert");
161         modifier.setLastName("Einstein");
162         modifier.setRole(Role.DESIGNER.name());
163         Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
164         assertTrue(ownerResponse.isLeft());
165         User owner = ownerResponse.left().value();
166         Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
167         assertTrue(validateBeforeTransition.isLeft());
168
169         modifier.setRole(Role.TESTER.name());
170         validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
171         assertTrue(validateBeforeTransition.isRight());
172         changeStateResult = Either.right(validateBeforeTransition.right().value());
173         assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION);
174
175     }
176 }