re base code
[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.components.impl.exceptions.ComponentException;
12 import org.openecomp.sdc.be.dao.api.ActionStatus;
13 import org.openecomp.sdc.be.dao.cassandra.OperationalEnvironmentDao;
14 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
15 import org.openecomp.sdc.be.datatypes.enums.EnvironmentStatusEnum;
16 import org.openecomp.sdc.be.externalapi.servlet.representation.ServiceDistributionReqInfo;
17 import org.openecomp.sdc.be.impl.ComponentsUtils;
18 import org.openecomp.sdc.be.model.LifecycleStateEnum;
19 import org.openecomp.sdc.be.model.Service;
20 import org.openecomp.sdc.be.model.User;
21 import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
22 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
23 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
24 import org.openecomp.sdc.exception.ResponseFormat;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.mockito.ArgumentMatchers.anyString;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.Mockito.verifyZeroInteractions;
30 import static org.mockito.Mockito.when;
31
32 public class ServiceDistributionValidationTest {
33
34     private static final String USER_ID = "userId";
35     private static final String SERVICE_ID = "serviceId";
36     private static final String ENV_ID = "envId";
37
38     @InjectMocks
39     private ServiceDistributionValidation testInstance;
40
41     @Mock
42     private UserValidations userValidations;
43
44     @Mock
45     private ToscaOperationFacade toscaOperationFacade;
46
47     @Mock
48     private OperationalEnvironmentDao operationalEnvironmentDao;
49
50     @Mock
51     private IDistributionEngine distributionEngine;
52
53     @Mock
54     private ComponentsUtils componentsUtils;
55
56     private User user;
57     private Service service;
58     private OperationalEnvironmentEntry operationalEnvironmentEntry;
59     private ResponseFormat errResponse;
60
61     @Before
62     public void setUp() throws Exception {
63         MockitoAnnotations.initMocks(this);
64         user = new User();
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);
72     }
73
74     @Test
75     public void validateActivateServiceRequest_userNotExist() {
76         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenThrow(new ComponentException(errResponse));
77         try {
78             testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
79         } catch(ComponentException e){
80             assertEquals(errResponse, e.getResponseFormat());
81         }
82         verifyZeroInteractions(toscaOperationFacade, operationalEnvironmentDao, componentsUtils);
83     }
84
85     @Test
86     public void validateActivateServiceRequest_ServiceNotExist() {
87         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
88         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.right(StorageOperationStatus.GENERAL_ERROR));
89         when(componentsUtils.convertFromStorageResponse(StorageOperationStatus.GENERAL_ERROR, ComponentTypeEnum.SERVICE)).thenReturn(ActionStatus.GENERAL_ERROR);
90         when(componentsUtils.getResponseFormat(ActionStatus.API_RESOURCE_NOT_FOUND, ApiResourceEnum.SERVICE_ID.getValue())).thenReturn(errResponse);
91         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
92         assertEquals(errResponse, activateServiceReq.right().value());
93         verifyZeroInteractions(operationalEnvironmentDao);
94     }
95
96     @Test
97     public void validateActivateServiceRequest_ServiceLifeCycleStateNotReadyForDistribution() {
98         service.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
99         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
100         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
101         when(componentsUtils.getResponseFormat(eq(ActionStatus.INVALID_SERVICE_STATE))).thenReturn(errResponse);
102         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
103         assertEquals(errResponse, activateServiceReq.right().value());
104         verifyZeroInteractions(operationalEnvironmentDao);
105     }
106
107     @Test
108     public void validateActivateServiceRequest_operationalEnvNotExist() throws Exception {
109         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
110         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
111         when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(null);
112         when(componentsUtils.getResponseFormat(eq(ActionStatus.API_RESOURCE_NOT_FOUND), anyString())).thenReturn(errResponse);
113         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
114         assertEquals(errResponse, activateServiceReq.right().value());
115     }
116
117     @Test
118     public void validateActivateServiceRequest_operationalEnvStatusNotComplete() {
119         operationalEnvironmentEntry.setStatus(EnvironmentStatusEnum.IN_PROGRESS);
120         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
121         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
122         when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
123         when(componentsUtils.getResponseFormat(eq(ActionStatus.API_RESOURCE_NOT_FOUND), anyString())).thenReturn(errResponse);
124         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("distributionData"));
125         assertEquals(errResponse, activateServiceReq.right().value());
126     }
127
128     @Test
129     public void validateActivateServiceRequest_couldNotParseDistributionData() {
130         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
131         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
132         when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
133         when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_BODY))).thenReturn(errResponse);
134         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo());
135         assertEquals(errResponse, activateServiceReq.right().value());
136     }
137
138     @Test
139     public void validateActivateServiceRequest_distributionDataHasNoWorkloadContext() {
140         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
141         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
142         when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
143         when(componentsUtils.getResponseFormat(eq(ActionStatus.MISSING_BODY))).thenReturn(errResponse);
144         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo(""));
145         assertEquals(errResponse, activateServiceReq.right().value());
146     }
147
148     @Test
149     public void validateActivateServiceRequest_requestValid() {
150         when(userValidations.validateUserExists(eq(USER_ID), anyString(), eq(false))).thenReturn(user);
151         when(toscaOperationFacade.getLatestServiceByUuid(eq(SERVICE_ID))).thenReturn(Either.left(service));
152         when(distributionEngine.getEnvironmentById(ENV_ID)).thenReturn(operationalEnvironmentEntry);
153         Either<ActivationRequestInformation, ResponseFormat> activateServiceReq = testInstance.validateActivateServiceRequest(SERVICE_ID, ENV_ID, user, new ServiceDistributionReqInfo("context"));
154         assertEquals(service, activateServiceReq.left().value().getServiceToActivate());
155         assertEquals("context", activateServiceReq.left().value().getWorkloadContext());
156     }
157 }