1 package org.openecomp.sdc.be.components.distribution.engine;
3 import org.junit.Before;
5 import org.mockito.InjectMocks;
6 import org.mockito.Mock;
7 import org.mockito.MockitoAnnotations;
8 import org.openecomp.sdc.be.components.utils.OperationalEnvironmentBuilder;
9 import org.openecomp.sdc.be.dao.api.ActionStatus;
10 import org.openecomp.sdc.be.model.Service;
11 import org.openecomp.sdc.be.resources.data.OperationalEnvironmentEntry;
13 import java.util.HashSet;
16 import java.util.function.Function;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
20 import static org.junit.Assert.assertEquals;
21 import static org.mockito.Matchers.any;
22 import static org.mockito.Matchers.eq;
23 import static org.mockito.Mockito.verifyZeroInteractions;
24 import static org.mockito.Mockito.when;
26 public class DistributionEngineTest {
28 public static final String DISTRIBUTION_ID = "distId";
29 public static final String ENV_ID = "envId";
30 public static final String USER_ID = "userId";
31 public static final String MODIFIER = "modifier";
34 private DistributionEngine testInstance;
37 private EnvironmentsEngine environmentsEngine;
40 private DistributionNotificationSender distributionNotificationSender;
42 private DummyDistributionConfigurationManager distributionEngineConfigurationMock;
44 private Map<String, OperationalEnvironmentEntry> envs;
48 public void setUp() throws Exception {
49 MockitoAnnotations.initMocks(this);
50 distributionEngineConfigurationMock = new DummyDistributionConfigurationManager();
51 envs = getEnvs(ENV_ID);
55 public void notifyService() throws Exception {
56 NotificationDataImpl notificationData = new NotificationDataImpl();
57 Service service = new Service();
58 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
59 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName()).thenReturn("topic");
60 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID), any(EnvironmentMessageBusData.class),
61 any(NotificationDataImpl.class), any(Service.class), eq(USER_ID), eq(MODIFIER)))
62 .thenReturn(ActionStatus.OK);
63 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID, USER_ID, MODIFIER);
64 assertEquals(ActionStatus.OK, actionStatus);
68 public void notifyService_couldNotResolveEnvironment() throws Exception {
69 when(environmentsEngine.getEnvironments()).thenReturn(envs);
70 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, new Service(), new NotificationDataImpl(), "someNonExisitngEnv", USER_ID, MODIFIER);
71 assertEquals(ActionStatus.DISTRIBUTION_ENVIRONMENT_NOT_AVAILABLE, actionStatus);
72 verifyZeroInteractions(distributionNotificationSender);
76 public void notifyService_failedWhileSendingNotification() throws Exception {
77 NotificationDataImpl notificationData = new NotificationDataImpl();
78 Service service = new Service();
79 when(environmentsEngine.getEnvironmentById(ENV_ID)).thenReturn(envs.get(ENV_ID));
80 when(distributionEngineConfigurationMock.getConfigurationMock().getDistributionNotifTopicName()).thenReturn("topic");
81 when(distributionNotificationSender.sendNotification(eq("topic-ENVID"), eq(DISTRIBUTION_ID), any(EnvironmentMessageBusData.class),
82 any(NotificationDataImpl.class), any(Service.class), eq(USER_ID), eq(MODIFIER)))
83 .thenReturn(ActionStatus.GENERAL_ERROR);
84 ActionStatus actionStatus = testInstance.notifyService(DISTRIBUTION_ID, service, notificationData, ENV_ID, USER_ID, MODIFIER);
85 assertEquals(ActionStatus.GENERAL_ERROR, actionStatus);
88 private Map<String, OperationalEnvironmentEntry> getEnvs(String ... environmentIds) {
89 Set<String> uebAddress = new HashSet<>();
90 uebAddress.add("someAddress");
91 return Stream.of(environmentIds)
92 .map(id -> new OperationalEnvironmentBuilder().setEnvId(id).setDmaapUebAddress(uebAddress).build())
93 .collect(Collectors.toMap(OperationalEnvironmentEntry::getEnvironmentId, Function.identity()));