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