Fix 'Optional license in onboarding'-bug
[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 static org.junit.jupiter.api.Assertions.assertTrue;
24
25 import fj.data.Either;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.Mockito;
29 import org.openecomp.sdc.be.components.csar.CsarArtifactsAndGroupsBusinessLogic;
30 import org.openecomp.sdc.be.components.csar.CsarBusinessLogic;
31 import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
32 import org.openecomp.sdc.be.components.impl.CompositionBusinessLogic;
33 import org.openecomp.sdc.be.components.impl.DataTypeBusinessLogic;
34 import org.openecomp.sdc.be.components.impl.InputsBusinessLogic;
35 import org.openecomp.sdc.be.components.impl.ModelBusinessLogic;
36 import org.openecomp.sdc.be.components.impl.OutputsBusinessLogic;
37 import org.openecomp.sdc.be.components.impl.PolicyBusinessLogic;
38 import org.openecomp.sdc.be.components.impl.PolicyTypeBusinessLogic;
39 import org.openecomp.sdc.be.components.impl.PropertyBusinessLogic;
40 import org.openecomp.sdc.be.components.impl.ResourceBusinessLogic;
41 import org.openecomp.sdc.be.components.impl.ResourceImportManager;
42 import org.openecomp.sdc.be.components.merge.resource.ResourceDataMergeBusinessLogic;
43 import org.openecomp.sdc.be.components.merge.utils.MergeInstanceUtils;
44 import org.openecomp.sdc.be.components.validation.component.ComponentContactIdValidator;
45 import org.openecomp.sdc.be.components.validation.component.ComponentNameValidator;
46 import org.openecomp.sdc.be.dao.api.ActionStatus;
47 import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
48 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
49 import org.openecomp.sdc.be.model.Component;
50 import org.openecomp.sdc.be.model.LifecycleStateEnum;
51 import org.openecomp.sdc.be.model.Resource;
52 import org.openecomp.sdc.be.model.User;
53 import org.openecomp.sdc.be.model.operations.impl.ModelOperation;
54 import org.openecomp.sdc.be.user.Role;
55 import org.openecomp.sdc.exception.ResponseFormat;
56
57 public class CheckoutTest extends LifecycleTestBase {
58
59    private CheckoutTransition checkoutObj = null;
60    private final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class);
61    private final ResourceImportManager resourceImportManager = Mockito.mock(ResourceImportManager.class);
62    private final InputsBusinessLogic inputsBusinessLogic = Mockito.mock(InputsBusinessLogic.class);
63    private final OutputsBusinessLogic outputsBusinessLogic = Mockito.mock(OutputsBusinessLogic.class);
64    private final CompositionBusinessLogic compositionBusinessLogic = Mockito.mock(CompositionBusinessLogic.class);
65    private final ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic = Mockito.mock(ResourceDataMergeBusinessLogic.class);
66    private final CsarArtifactsAndGroupsBusinessLogic csarArtifactsAndGroupsBusinessLogic = Mockito.mock(CsarArtifactsAndGroupsBusinessLogic.class);
67    private final MergeInstanceUtils mergeInstanceUtils = Mockito.mock(MergeInstanceUtils.class);
68     private final UiComponentDataConverter uiComponentDataConverter = Mockito.mock(UiComponentDataConverter.class);
69     private final CsarBusinessLogic csarBusinessLogic = Mockito.mock(CsarBusinessLogic.class);
70     private final PropertyBusinessLogic propertyBusinessLogic = Mockito.mock(PropertyBusinessLogic.class);
71     private final ComponentContactIdValidator componentContactIdValidator = new ComponentContactIdValidator(componentsUtils);
72     private final ComponentNameValidator componentNameValidator = new ComponentNameValidator(componentsUtils, toscaOperationFacade);
73     private final PolicyBusinessLogic policyBusinessLogic = Mockito.mock(PolicyBusinessLogic.class);
74     private final ModelBusinessLogic modelBusinessLogic = Mockito.mock(ModelBusinessLogic.class);
75     private final DataTypeBusinessLogic dataTypeBusinessLogic = Mockito.mock(DataTypeBusinessLogic.class);
76     private final PolicyTypeBusinessLogic policyTypeBusinessLogic = Mockito.mock(PolicyTypeBusinessLogic.class);
77     private final ModelOperation modelOperation = Mockito.mock(ModelOperation.class);
78
79     ResourceBusinessLogic bl = new ResourceBusinessLogic(elementDao, groupOperation, groupInstanceOperation, groupTypeOperation,
80         groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation, artifactsBusinessLogic,
81         componentInstanceBusinessLogic, resourceImportManager, inputsBusinessLogic, outputsBusinessLogic, compositionBusinessLogic,
82         resourceDataMergeBusinessLogic, csarArtifactsAndGroupsBusinessLogic, uiComponentDataConverter, csarBusinessLogic, artifactToscaOperation,
83         propertyBusinessLogic, componentContactIdValidator, componentNameValidator, componentTagsValidator, componentValidator,
84         componentIconValidator, componentProjectCodeValidator, componentDescriptionValidator, policyBusinessLogic, modelBusinessLogic,
85         dataTypeBusinessLogic, policyTypeBusinessLogic, modelOperation);
86
87     @Before
88     public void setup() {
89
90         super.setup();
91         // checkout transition object
92         checkoutObj = new CheckoutTransition(componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade,
93             janusGraphDao);
94         checkoutObj.setLifeCycleOperation(toscaElementLifecycleOperation);
95         checkoutObj.setConfigurationManager(configurationManager);
96         bl.setToscaOperationFacade(toscaOperationFacade);
97         bl.setComponentsUtils(componentsUtils);
98
99     }
100
101    @Test
102    public void testCheckoutStateValidation() {
103       Either<? extends Component, ResponseFormat> changeStateResult;
104       Resource resource = createResourceObject();
105
106       resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
107       Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
108       assertTrue(ownerResponse.isLeft());
109       User owner = ownerResponse.left().value();
110       changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
111       assertTrue(changeStateResult.isLeft());
112
113       resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
114         changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
115         assertTrue(changeStateResult.isLeft());
116
117     }
118
119    @Test
120    public void testAlreadyCheckout() {
121       Either<Resource, ResponseFormat> changeStateResult;
122       Resource resource = createResourceObject();
123
124       resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
125       Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
126       assertTrue(ownerResponse.isLeft());
127       User owner = ownerResponse.left().value();
128       Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user,
129           owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
130       assertTrue(validateBeforeTransition.isRight());
131       changeStateResult = Either.right(validateBeforeTransition.right().value());
132
133       assertTrue(changeStateResult.isRight());
134       assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CHECKOUT_STATE, resource.getName(),
135           ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
136
137    }
138
139    @Test
140    public void testRoles() {
141       Either<Resource, ResponseFormat> changeStateResult;
142       Resource resource = createResourceObject();
143
144       resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
145
146       User modifier = new User();
147       modifier.setUserId("modifier");
148       modifier.setFirstName("Albert");
149       modifier.setLastName("Einstein");
150       modifier.setRole(Role.DESIGNER.name());
151       Either<User, ResponseFormat> ownerResponse = checkoutObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
152       assertTrue(ownerResponse.isLeft());
153       User owner = ownerResponse.left().value();
154       // changeStateResult = checkoutObj.changeStateOperation(resource,
155       // modifier, owner);
156       Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE,
157           modifier, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
158       assertTrue(validateBeforeTransition.isLeft());
159
160       modifier.setRole(Role.TESTER.name());
161       // changeStateResult = checkoutObj.changeStateOperation(resource,
162       // modifier, owner);
163       validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner,
164           LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
165       assertTrue(validateBeforeTransition.isRight());
166       changeStateResult = Either.right(validateBeforeTransition.right().value());
167       assertResponse(changeStateResult, ActionStatus.RESTRICTED_OPERATION);
168
169    }
170 }