8538e090fd3df592fbe88d1087bbfe3e4c61f7a5
[sdc.git] /
1 package org.openecomp.sdc.be.components.validation;
2
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;
8
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;
29
30 import fj.data.Either;
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))).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);
80     }
81
82     @Test
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);
91     }
92
93     @Test
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);
102     }
103
104     @Test
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());
112     }
113
114     @Test
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());
123     }
124
125     @Test
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());
133     }
134
135     @Test
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());
143     }
144
145     @Test
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());
153     }
154 }