1 package org.openecomp.sdc.be.components.validation;
3 import static org.junit.Assert.assertEquals;
4 import static org.mockito.ArgumentMatchers.anyString;
5 import static org.mockito.ArgumentMatchers.eq;
6 import static org.mockito.Mockito.verifyZeroInteractions;
7 import static org.mockito.Mockito.when;
9 import org.junit.Before;
10 import org.junit.Test;
11 import org.mockito.InjectMocks;
12 import org.mockito.Mock;
13 import org.mockito.MockitoAnnotations;
14 import org.openecomp.sdc.be.components.distribution.engine.IDistributionEngine;
15 import org.openecomp.sdc.be.components.impl.ActivationRequestInformation;
16 import org.openecomp.sdc.be.dao.api.ActionStatus;
17 import org.openecomp.sdc.be.dao.cassandra.OperationalEnvironmentDao;
18 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
19 import org.openecomp.sdc.be.datatypes.enums.EnvironmentStatusEnum;
20 import org.openecomp.sdc.be.externalapi.servlet.representation.ServiceDistributionReqInfo;
21 import org.openecomp.sdc.be.impl.ComponentsUtils;
22 import org.openecomp.sdc.be.model.LifecycleStateEnum;
23 import org.openecomp.sdc.be.model.Service;
24 import org.openecomp.sdc.be.model.User;
25 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
26 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
27 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
28 import org.openecomp.sdc.exception.ResponseFormat;
30 import fj.data.Either;
32 public class ServiceDistributionValidationTest {
34 private static final String USER_ID = "userId";
35 private static final String SERVICE_ID = "serviceId";
36 private static final String ENV_ID = "envId";
39 private ServiceDistributionValidation testInstance;
42 private UserValidations userValidations;
45 private ToscaOperationFacade toscaOperationFacade;
48 private OperationalEnvironmentDao operationalEnvironmentDao;
51 private IDistributionEngine distributionEngine;
54 private ComponentsUtils componentsUtils;
57 private Service service;
58 private OperationalEnvironmentEntry operationalEnvironmentEntry;
59 private ResponseFormat errResponse;
62 public void setUp() throws Exception {
63 MockitoAnnotations.initMocks(this);
65 user.setUserId(USER_ID);
66 errResponse = new ResponseFormat();
67 service = new Service();
68 service.setUniqueId(SERVICE_ID);
69 service.setLifecycleState(LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
70 operationalEnvironmentEntry = new OperationalEnvironmentEntry();
71 operationalEnvironmentEntry.setStatus(EnvironmentStatusEnum.COMPLETED);
75 public void validateActivateServiceRequest_userNotExist() {
76 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.right(errResponse));
77 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
78 assertEquals(errResponse, activateServiceReq.right().value());
79 verifyZeroInteractions(toscaOperationFacade, operationalEnvironmentDao, componentsUtils);
83 public void validateActivateServiceRequest_ServiceNotExist() {
84 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
85 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
86 when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.GENERAL_ERROR, ComponentTypeEnum.SERVICE)).thenReturn(ActionStatus.GENERAL_ERROR);
87 when(componentsUtils.getResponseFormat(ActionStatus.API_RESOURCE_NOT_FOUND, ApiResourceEnum.SERVICE_ID.getValue())).thenReturn(errResponse);
88 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
89 assertEquals(errResponse, activateServiceReq.right().value());
90 verifyZeroInteractions(operationalEnvironmentDao);
94 public void validateActivateServiceRequest_ServiceLifeCycleStateNotReadyForDistribution() {
95 service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
96 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
97 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
98 when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_SERVICE_STATE))).thenReturn(errResponse);
99 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
100 assertEquals(errResponse, activateServiceReq.right().value());
101 verifyZeroInteractions(operationalEnvironmentDao);
105 public void validateActivateServiceRequest_operationalEnvNotExist() throws Exception {
106 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
107 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
108 when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(null);
109 when(componentsUtils.getResponseFormat(eq(ActionStatus.API_RESOURCE_NOT_FOUND), anyString())).thenReturn(errResponse);
110 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
111 assertEquals(errResponse, activateServiceReq.right().value());
115 public void validateActivateServiceRequest_operationalEnvStatusNotComplete() {
116 operationalEnvironmentEntry.setStatus(EnvironmentStatusEnum.IN_PROGRESS);
117 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
118 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
119 when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
120 when(componentsUtils.getResponseFormat(eq(ActionStatus.API_RESOURCE_NOT_FOUND), anyString())).thenReturn(errResponse);
121 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
122 assertEquals(errResponse, activateServiceReq.right().value());
126 public void validateActivateServiceRequest_couldNotParseDistributionData() {
127 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
128 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
129 when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
130 when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_BODY))).thenReturn(errResponse);
131 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo());
132 assertEquals(errResponse, activateServiceReq.right().value());
136 public void validateActivateServiceRequest_distributionDataHasNoWorkloadContext() {
137 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
138 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
139 when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
140 when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_BODY))).thenReturn(errResponse);
141 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo(""));
142 assertEquals(errResponse, activateServiceReq.right().value());
146 public void validateActivateServiceRequest_requestValid() {
147 when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(Either.left(user));
148 when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
149 when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
150 Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("context"));
151 assertEquals(service, activateServiceReq.left().value().getServiceToActivate());
152 assertEquals("context", activateServiceReq.left().value().getWorkloadContext());