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.apache.http.HttpStatus;
25 import org.junit.Before;
26 import org.junit.Test;
27 import org.junit.runner.RunWith;
28 import org.mockito.Mock;
29 import org.mockito.Mockito;
30 import org.mockito.junit.MockitoJUnitRunner;
31 import org.openecomp.sdc.be.components.distribution.engine.ServiceDistributionArtifactsBuilder;
32 import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
33 import org.openecomp.sdc.be.dao.api.ActionStatus;
34 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
35 import org.openecomp.sdc.be.model.*;
36 import org.openecomp.sdc.be.model.jsontitan.datamodel.ToscaElement;
37 import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
38 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
39 import org.openecomp.sdc.be.model.operations.impl.CapabilityOperation;
40 import org.openecomp.sdc.be.tosca.ToscaExportHandler;
41 import org.openecomp.sdc.be.user.Role;
42 import org.openecomp.sdc.exception.ResponseFormat;
44 import java.util.ArrayList;
45 import java.util.List;
47 import static org.junit.Assert.assertEquals;
48 import static org.junit.Assert.assertTrue;
49 import static org.mockito.Mockito.when;
51 @RunWith(MockitoJUnitRunner.Silent.class)
52 public class CertificationRequestTest extends LifecycleTestBase {
55 private ServiceDistributionArtifactsBuilder serviceDistributionArtifactsBuilder;
57 private ServiceBusinessLogic serviceBusinessLogic;
59 private CapabilityOperation capabilityOperation;
61 private ToscaExportHandler toscaExportUtils;
63 private CertificationRequestTransition rfcObj;
69 rfcObj = new CertificationRequestTransition(componentsUtils, toscaElementLifecycleOperation, serviceBusinessLogic, toscaOperationFacade, titanDao);
70 rfcObj.setConfigurationManager(configurationManager);
74 public void testVFCMTStateValidation(){
75 Either<? extends Component, ResponseFormat> changeStateResult;
76 Resource resource = createResourceVFCMTObject();
78 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
79 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
80 assertTrue(ownerResponse.isLeft());
81 User owner = ownerResponse.left().value();
83 User user = new User();
84 user.setUserId("cs0008");
85 user.setFirstName("Carlos");
86 user.setLastName("Santana");
87 user.setRole(Role.TESTER.name());
89 changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
90 assertTrue(changeStateResult.isLeft());
94 public void testCheckoutStateValidation() {
95 Either<? extends Component, ResponseFormat> changeStateResult;
96 Resource resource = createResourceObject();
98 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
99 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
100 assertTrue(ownerResponse.isLeft());
101 User owner = ownerResponse.left().value();
102 changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
103 assertTrue(changeStateResult.isLeft());
105 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
106 changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
107 assertTrue(changeStateResult.isLeft());
111 public void testAlreadyRfc() {
112 Either<Resource, ResponseFormat> changeStateResult;
113 Resource resource = createResourceObject();
115 resource.setLifecycleState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
116 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
117 assertTrue(ownerResponse.isLeft());
118 User owner = ownerResponse.left().value();
119 Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.READY_FOR_CERTIFICATION);
120 assertTrue(validateBeforeTransition.isRight());
121 changeStateResult = Either.right(validateBeforeTransition.right().value());
122 assertResponse(changeStateResult, ActionStatus.COMPONENT_SENT_FOR_CERTIFICATION, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
127 public void testCertificationInProgress() {
128 Either<Resource, ResponseFormat> changeStateResult;
129 Resource resource = createResourceObject();
131 resource.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
132 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
133 assertTrue(ownerResponse.isLeft());
134 User owner = ownerResponse.left().value();
135 Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
136 assertTrue(validateBeforeTransition.isRight());
137 changeStateResult = Either.right(validateBeforeTransition.right().value());
138 assertResponse(changeStateResult, ActionStatus.COMPONENT_IN_CERT_IN_PROGRESS_STATE, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
143 public void testAlreadyCertified() {
144 Either<Resource, ResponseFormat> changeStateResult;
145 Resource resource = createResourceObject();
147 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
148 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
149 assertTrue(ownerResponse.isLeft());
150 User owner = ownerResponse.left().value();
151 Either<Boolean, ResponseFormat> validateBeforeTransition = rfcObj.validateBeforeTransition(resource, ComponentTypeEnum.RESOURCE, user, owner, LifecycleStateEnum.CERTIFIED);
152 assertTrue(validateBeforeTransition.isRight());
153 changeStateResult = Either.right(validateBeforeTransition.right().value());
154 assertResponse(changeStateResult, ActionStatus.COMPONENT_ALREADY_CERTIFIED, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
158 public void testVSPIsArchivedValidation(){
159 Either<? extends Component, ResponseFormat> changeStateResult;
160 Resource resource = createResourceObject();
161 resource.setVspArchived(true);
163 resource.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
164 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(resource, ComponentTypeEnum.RESOURCE);
165 assertTrue(ownerResponse.isLeft());
166 User owner = ownerResponse.left().value();
168 User user = new User();
169 user.setUserId("cs0008");
170 user.setFirstName("Carlos");
171 user.setLastName("Santana");
172 user.setRole(Role.TESTER.name());
174 changeStateResult = rfcObj.changeState(ComponentTypeEnum.RESOURCE, resource, serviceBusinessLogic, user, owner, false, false);
175 assertTrue(changeStateResult.isRight());
176 changeStateResult = Either.right(changeStateResult.right().value());
177 assertResponse(changeStateResult, ActionStatus.ARCHIVED_ORIGINS_FOUND, resource.getName(), ComponentTypeEnum.RESOURCE.name().toLowerCase(), user.getFirstName(), user.getLastName(), user.getUserId());
182 public void testValidateAllResourceInstanceCertified_SuccessWithoutRI() {
183 Resource resource = new Resource();
184 Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
185 assertTrue(validateAllResourceInstanceCertified.isLeft());
189 public void testValidateAllResourceInstanceCertified_SuccessWithCertifiedResources() {
190 Resource resource = new Resource();
191 List<ComponentInstance> riList = new ArrayList<>();
192 ComponentInstance ri = new ComponentInstance();
193 ri.setComponentVersion("2.0");
195 resource.setComponentInstances(riList);
197 Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
198 assertTrue(validateAllResourceInstanceCertified.isLeft());
202 public void testValidateAllResourceInstanceCertified_FailWithUnCertifiedResourcesMinorVersion() {
203 Resource resource = createVFWithRI("0.3");
205 simulateCertifiedVersionExistForRI();
207 Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
209 assertTrue(validateAllResourceInstanceCertified.isRight());
210 ResponseFormat responseFormat = validateAllResourceInstanceCertified.right().value();
211 assertEquals((int) responseFormat.getStatus(), HttpStatus.SC_FORBIDDEN);
212 assertEquals("SVC4559", responseFormat.getMessageId());
217 public void testValidateAllResourceInstanceCertified_FailWithUnCertifiedResourcesMajorVersion() {
218 Resource resource = createVFWithRI("1.3");
220 simulateCertifiedVersionExistForRI();
222 Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified = rfcObj.validateAllResourceInstanceCertified(resource);
224 assertTrue(validateAllResourceInstanceCertified.isRight());
225 ResponseFormat responseFormat = validateAllResourceInstanceCertified.right().value();
226 assertEquals((int) responseFormat.getStatus(), HttpStatus.SC_FORBIDDEN);
227 assertEquals("SVC4559", responseFormat.getMessageId());
232 public void testDeploymentArtifactRestriction() {
233 Either<? extends Component, ResponseFormat> changeStateResult;
234 Service service = createServiceObject();
235 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
237 Either<User, ResponseFormat> ownerResponse = rfcObj.getComponentOwner(service, ComponentTypeEnum.SERVICE);
238 assertTrue(ownerResponse.isLeft());
239 User owner = ownerResponse.left().value();
241 Either<Service, ResponseFormat> result = Either.left(service);
242 Either<ToscaElement, StorageOperationStatus> reqCertRes = Either.left(ModelConverter.convertToToscaElement(service));
243 Either<Either<ArtifactDefinition, Operation>, ResponseFormat> resultArtifacts = Either.left(Either.left(new ArtifactDefinition()));
244 when(serviceBusinessLogic.generateHeatEnvArtifacts(service, owner, false, true)).thenReturn(result);
245 when(serviceBusinessLogic.generateVfModuleArtifacts(service, owner, false, true)).thenReturn(result);
246 when(serviceBusinessLogic.populateToscaArtifacts(service, owner, true, false, false)).thenReturn(resultArtifacts);
247 when(toscaElementLifecycleOperation.requestCertificationToscaElement(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(reqCertRes);
248 changeStateResult = rfcObj.changeState(ComponentTypeEnum.SERVICE, service, serviceBusinessLogic, user, owner, false, true);
249 assertTrue(changeStateResult.isLeft());
252 private void simulateCertifiedVersionExistForRI() {
253 Component dummyResource = new Resource();
254 Either<Component, StorageOperationStatus> result = Either.left(dummyResource);
255 Mockito.when(toscaOperationFacade.getToscaElement(Mockito.anyString())).thenReturn(Either.left(dummyResource));
256 Mockito.when(toscaOperationFacade.findLastCertifiedToscaElementByUUID(Mockito.any(Component.class))).thenReturn(result);
259 private Resource createVFWithRI(String riVersion) {
260 Resource resource = new Resource();
261 List<ComponentInstance> riList = new ArrayList<>();
262 ComponentInstance ri = new ComponentInstance();
264 ri.setComponentVersion(riVersion);
265 ri.setComponentUid("someUniqueId");
267 resource.setComponentInstances(riList);