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.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;
51 import static org.junit.Assert.assertTrue;
53 public class CheckoutTest extends LifecycleTestBase {
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);
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);
82 // checkout transition object
83 checkoutObj = new CheckoutTransition(componentsUtils, toscaElementLifecycleOperation, toscaOperationFacade,
85 checkoutObj.setLifeCycleOperation(toscaElementLifecycleOperation);
86 checkoutObj.setConfigurationManager(configurationManager);
87 bl.setToscaOperationFacade(toscaOperationFacade);
88 bl.setComponentsUtils(componentsUtils);
93 public void testCheckoutStateValidation() {
94 Either<? extends Component, ResponseFormat> changeStateResult;
95 Resource resource = createResourceObject();
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());
104 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
105 changeStateResult = checkoutObj.changeState(ComponentTypeEnum.RESOURCE, resource, bl, user, owner, false, false);
106 assertTrue(changeStateResult.isLeft());
111 public void testAlreadyCheckout() {
112 Either<Resource, ResponseFormat> changeStateResult;
113 Resource resource = createResourceObject();
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());
123 assertTrue(changeStateResult.isRight());
124 assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CHECKOUT_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
129 public void testRoles() {
130 Either<Resource, ResponseFormat> changeStateResult;
131 Resource resource = createResourceObject();
133 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
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,
145 Either<Boolean, ResponseFormat> validateBeforeTransition = checkoutObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, modifier, owner, LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
146 assertTrue(validateBeforeTransition.isLeft());
148 modifier.setRole(Role.TESTER.name());
149 // changeStateResult = checkoutObj.changeStateOperation(resource,
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);