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