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