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