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