+/*-
+ * ============LICENSE_START=======================================================
+ * SDC
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ * Modifications copyright (c) 2019 Nokia
+ * ================================================================================
+ */
package org.openecomp.sdc.be.components;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
import fj.data.Either;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
-import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.openecomp.sdc.be.auditing.impl.AuditingManager;
import org.openecomp.sdc.be.components.distribution.engine.NotificationDataImpl;
import org.openecomp.sdc.be.components.health.HealthCheckBusinessLogic;
import org.openecomp.sdc.be.components.impl.ActivationRequestInformation;
+import org.openecomp.sdc.be.components.impl.ComponentInstanceBusinessLogic;
import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
+import org.openecomp.sdc.be.components.path.ForwardingPathValidator;
+import org.openecomp.sdc.be.components.utils.ComponentBusinessLogicMock;
import org.openecomp.sdc.be.components.validation.ServiceDistributionValidation;
-import org.openecomp.sdc.be.config.ConfigurationManager;
import org.openecomp.sdc.be.dao.api.ActionStatus;
+import org.openecomp.sdc.be.datamodel.utils.UiComponentDataConverter;
import org.openecomp.sdc.be.externalapi.servlet.representation.ServiceDistributionReqInfo;
import org.openecomp.sdc.be.impl.ComponentsUtils;
import org.openecomp.sdc.be.model.ComponentParametersView;
import org.openecomp.sdc.be.model.DistributionStatusEnum;
import org.openecomp.sdc.be.model.Service;
import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.common.api.ConfigurationSource;
+import org.openecomp.sdc.be.model.jsonjanusgraph.operations.ToscaOperationFacade;
+import org.openecomp.sdc.be.model.operations.impl.ModelOperation;
import org.openecomp.sdc.common.impl.ExternalConfiguration;
-import org.openecomp.sdc.common.impl.FSConfigurationSource;
import org.openecomp.sdc.common.util.ThreadLocalsHolder;
import org.openecomp.sdc.exception.ResponseFormat;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.when;
+class ServiceDistributionBLTest extends ComponentBusinessLogicMock {
-/**
- * Created by chaya on 10/26/2017.
- */
-public class ServiceDistributionBLTest {
+ private final ServiceDistributionValidation serviceDistributionValidation = Mockito.mock(ServiceDistributionValidation.class);
+ private final DistributionEngine distributionEngine = Mockito.mock(DistributionEngine.class);
+ private final HealthCheckBusinessLogic healthCheckBusinessLogic = Mockito.mock(HealthCheckBusinessLogic.class);
+ private final ToscaOperationFacade toscaOperationFacade = Mockito.mock(ToscaOperationFacade.class);
+ private final ComponentInstanceBusinessLogic componentInstanceBusinessLogic = Mockito.mock(ComponentInstanceBusinessLogic.class);
+ private final ForwardingPathValidator forwardingPathValidator = Mockito.mock(ForwardingPathValidator.class);
+ private final UiComponentDataConverter uiComponentDataConverter = Mockito.mock(UiComponentDataConverter.class);
+ private final ModelOperation modelOperation = Mockito.mock(ModelOperation.class);
@InjectMocks
- ServiceBusinessLogic bl = new ServiceBusinessLogic();
-
- @Mock
- ServiceDistributionValidation serviceDistributionValidation;
-
- @Mock
- HealthCheckBusinessLogic healthCheckBusinessLogic;
-
- @Mock
- ToscaOperationFacade toscaOperationFacade;
-
- ComponentsUtils componentsUtils;
-
- @Mock
- DistributionEngine distributionEngine;
+ private final ServiceBusinessLogic bl = new ServiceBusinessLogic(elementDao, groupOperation, groupInstanceOperation,
+ groupTypeOperation, groupBusinessLogic, interfaceOperation, interfaceLifecycleTypeOperation,
+ artifactsBusinessLogic, distributionEngine, componentInstanceBusinessLogic,
+ serviceDistributionValidation, forwardingPathValidator, uiComponentDataConverter,
+ artifactToscaOperation, componentContactIdValidator,
+ componentNameValidator, componentTagsValidator, componentValidator, componentIconValidator,
+ componentProjectCodeValidator, componentDescriptionValidator, modelOperation, null, null,
+ null, null, null);
private Service serviceToActivate;
private ActivationRequestInformation activationRequestInformation;
private String DID = "distributionId";
private User modifier;
-
- public ServiceDistributionBLTest() {
- }
-
- @Before
+ @BeforeEach
public void setup() {
ExternalConfiguration.setAppName("catalog-be");
- MockitoAnnotations.initMocks(this);
- // init Configuration
- String appConfigDir = "src/test/resources/config/catalog-be";
- ConfigurationSource configurationSource = new FSConfigurationSource(ExternalConfiguration.getChangeListener(), appConfigDir);
- ConfigurationManager configurationManager = new ConfigurationManager(configurationSource);
- componentsUtils = new ComponentsUtils(Mockito.mock(AuditingManager.class));
+ MockitoAnnotations.openMocks(this);
+ final ComponentsUtils componentsUtils = new ComponentsUtils(Mockito.mock(AuditingManager.class));
bl.setComponentsUtils(componentsUtils);
serviceToActivate = new Service();
serviceToActivate.setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_NOT_APPROVED);
activationRequestInformation = new ActivationRequestInformation(serviceToActivate, WORKLOAD_CONTEXT, TENANT);
when(toscaOperationFacade.getToscaElement(anyString(), any(ComponentParametersView.class)))
- .thenReturn(Either.left(serviceToActivate));
+ .thenReturn(Either.left(serviceToActivate));
when(distributionEngine.buildServiceForDistribution(any(Service.class), anyString(), anyString()))
- .thenReturn(new NotificationDataImpl());
+ .thenReturn(new NotificationDataImpl());
modifier = new User();
modifier.setUserId("uid");
modifier.setFirstName("user");
}
@Test
- public void testActivateServiceOnTenantValidationFails() {
+ void testActivateServiceOnTenantValidationFails() {
int VALIDATION_FAIL_STATUS = 666;
when(serviceDistributionValidation.validateActivateServiceRequest
- (anyString(), anyString(),any(User.class), any(ServiceDistributionReqInfo.class)))
- .thenReturn(Either.right(new ResponseFormat(VALIDATION_FAIL_STATUS)));
+ (anyString(), anyString(), any(User.class), any(ServiceDistributionReqInfo.class)))
+ .thenReturn(Either.right(new ResponseFormat(VALIDATION_FAIL_STATUS)));
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == VALIDATION_FAIL_STATUS);
- }
-
- @Test
- public void testNoDeploymentArtifacts() {
- when(serviceDistributionValidation.validateActivateServiceRequest
- (anyString(), anyString(),any(User.class), any(ServiceDistributionReqInfo.class)))
- .thenReturn(Either.left(activationRequestInformation));
- when(healthCheckBusinessLogic.isDistributionEngineUp()).thenReturn(true);
- when(distributionEngine.verifyServiceHasDeploymentArtifacts(any(Service.class)))
- .thenReturn(StorageOperationStatus.DISTR_ARTIFACT_NOT_FOUND);
- Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
- assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 409);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4139"));
+ assertEquals((int) stringResponseFormatEither.right().value().getStatus(), VALIDATION_FAIL_STATUS);
}
//TODO see if we want to add ActionStatus.AUTHENTICATION_ERROR to error-configuration.yaml
- @Test
- public void testDistributionAuthenticationFails() {
+ @Test()
+ void testDistributionAuthenticationFails() {
mockAllMethodsUntilDENotification();
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString(), anyString()))
- .thenReturn(ActionStatus.AUTHENTICATION_ERROR);
+ when(distributionEngine.notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.AUTHENTICATION_ERROR);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 502);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4676"));
+ assertEquals(502, (int) stringResponseFormatEither.right().value().getStatus());
+ assertEquals("SVC4676", stringResponseFormatEither.right().value().getMessageId());
}
//TODO see if we want to add ActionStatus.AUTHENTICATION_ERROR to error-configuration.yaml
- @Test
- public void testDistributionUnknownHostFails() {
+ @Test()
+ void testDistributionUnknownHostFails() {
mockAllMethodsUntilDENotification();
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString()))
- .thenReturn(ActionStatus.UNKNOWN_HOST);
+ when(distributionEngine.notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.UNKNOWN_HOST);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 502);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4676"));
+ assertEquals(502, (int) stringResponseFormatEither.right().value().getStatus());
+ assertEquals("SVC4676", stringResponseFormatEither.right().value().getMessageId());
}
//TODO see if we want to add ActionStatus.AUTHENTICATION_ERROR to error-configuration.yaml
- @Test
- public void testDistributionConnectionErrorFails() {
+ @Test()
+ void testDistributionConnectionErrorFails() {
mockAllMethodsUntilDENotification();
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString()))
- .thenReturn(ActionStatus.CONNNECTION_ERROR);
+ when(distributionEngine.notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.CONNNECTION_ERROR);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 502);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4676"));
+ assertEquals(502, (int) stringResponseFormatEither.right().value().getStatus());
+ assertEquals("SVC4676", stringResponseFormatEither.right().value().getMessageId());
}
//TODO see if we want to add ActionStatus.AUTHENTICATION_ERROR to error-configuration.yaml
- @Test
- public void testDistributionObjectNotFoundFails() {
+ @Test()
+ void testDistributionObjectNotFoundFails() {
mockAllMethodsUntilDENotification();
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString()))
- .thenReturn(ActionStatus.OBJECT_NOT_FOUND);
+ when(distributionEngine.notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.OBJECT_NOT_FOUND);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 502);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4676"));
+ assertEquals(502, (int) stringResponseFormatEither.right().value().getStatus());
+ assertEquals("SVC4676", stringResponseFormatEither.right().value().getMessageId());
}
- @Test
- public void testDistributionGeneralFails() {
+ @Test()
+ void testDistributionGeneralFails() {
mockAllMethodsUntilDENotification();
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString()))
- .thenReturn(ActionStatus.GENERAL_ERROR);
+ when(distributionEngine.notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.GENERAL_ERROR);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isRight());
- assertTrue(stringResponseFormatEither.right().value().getStatus() == 502);
- assertTrue(stringResponseFormatEither.right().value().getMessageId().equals("SVC4676"));
+ assertEquals(502, (int) stringResponseFormatEither.right().value().getStatus());
+ assertEquals("SVC4676", stringResponseFormatEither.right().value().getMessageId());
}
@Test
- public void testDistributionOk() {
+ void testDistributionOk() {
mockAllMethodsUntilDENotification();
ThreadLocalsHolder.setUuid(DID);
- when(distributionEngine.notifyService(anyString(),any(Service.class), any(INotificationData.class), anyString(),anyString(), anyString(), anyString()))
- .thenReturn(ActionStatus.OK);
+ when(distributionEngine
+ .notifyService(anyString(), any(Service.class), any(INotificationData.class), anyString(), anyString(), any(User.class)))
+ .thenReturn(ActionStatus.OK);
Either<String, ResponseFormat> stringResponseFormatEither = callActivateServiceOnTenantWIthDefaults();
assertTrue(stringResponseFormatEither.isLeft());
- assertTrue(stringResponseFormatEither.left().value().equals(DID));
+ assertEquals(stringResponseFormatEither.left().value(), DID);
}
private void mockAllMethodsUntilDENotification() {
when(serviceDistributionValidation.validateActivateServiceRequest
- (anyString(), anyString(),any(User.class), any(ServiceDistributionReqInfo.class)))
- .thenReturn(Either.left(activationRequestInformation));
+ (anyString(), anyString(), any(User.class), any(ServiceDistributionReqInfo.class)))
+ .thenReturn(Either.left(activationRequestInformation));
when(healthCheckBusinessLogic.isDistributionEngineUp()).thenReturn(true);
- when(distributionEngine.verifyServiceHasDeploymentArtifacts(any(Service.class)))
- .thenReturn(StorageOperationStatus.OK);
}
private Either<String, ResponseFormat> callActivateServiceOnTenantWIthDefaults() {