2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.be.components.lifecycle;
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;
53 import static org.junit.Assert.assertTrue;
55 public class CheckoutTest extends LifecycleTestBase {
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);
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);
86 // checkout transition object
87 checkoutObj = new CheckoutTransition(componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade,
89 checkoutObj.setLifeCycleOperation(toscaElementLifecycleOperation);
90 checkoutObj.setConfigurationManager(configurationManager);
91 bl.setToscaOperationFacade(toscaOperationFacade);
92 bl.setComponentsUtils(componentsUtils);
97 public void testCheckoutStateValidation() {
98 Either<? extends Component, ResponseFormat> changeStateResult;
99 Resource resource = createResourceObject();
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());
108 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
109 changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
110 assertTrue(changeStateResult.isLeft());
115 public void testAlreadyCheckout() {
116 Either<Resource, ResponseFormat> changeStateResult;
117 Resource resource = createResourceObject();
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());
127 assertTrue(changeStateResult.isRight());
128 assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CHECKOUT_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
133 public void testRoles() {
134 Either<Resource, ResponseFormat> changeStateResult;
135 Resource resource = createResourceObject();
137 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
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,
149 Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
150 assertTrue(validateBeforeTransition.isLeft());
152 modifier.setRole(Role.TESTER.name());
153 // changeStateResult = checkoutObj.changeStateOperation(resource,
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);