Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / validation / ServiceDistributionValidationTest.java
1 package org.openecomp.sdc.be.components.validation;
2
3 import fj.data.Either;
4 import org.junit.Before;
5 import org.junit.Test;
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;
24
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;
30
31 public class ServiceDistributionValidationTest {
32
33     private static final String USER_ID = "userId";
34     private static final String SERVICE_ID = "serviceId";
35     private static final String ENV_ID = "envId";
36
37     @InjectMocks
38     private ServiceDistributionValidation testInstance;
39
40     @Mock
41     private UserValidations userValidations;
42
43     @Mock
44     private ToscaOperationFacade toscaOperationFacade;
45
46     @Mock
47     private OperationalEnvironmentDao operationalEnvironmentDao;
48
49     @Mock
50     private IDistributionEngine distributionEngine;
51
52     @Mock
53     private ComponentsUtils componentsUtils;
54
55     private User user;
56     private Service service;
57     private OperationalEnvironmentEntry operationalEnvironmentEntry;
58     private ResponseFormat errResponse;
59
60     @Before
61     public void setUp() throws Exception {
62         MockitoAnnotations.initMocks(this);
63         user = new User();
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);
71     }
72
73     @Test
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);
79     }
80
81     @Test
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);
90     }
91
92     @Test
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);
101     }
102
103     @Test
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());
111     }
112
113     @Test
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());
122     }
123
124     @Test
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());
132     }
133
134     @Test
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());
142     }
143
144     @Test
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());
152     }
153 }