Sync Integ to Master
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / components / distribution / engine / DistributionEngineTest.java
1 package org.openecomp.sdc.be.components.distribution.engine;
2
3 import org.junit.Before;
4 import org.junit.Test;
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;
12
13 import java.util.HashSet;
14 import java.util.Map;
15 import java.util.Set;
16 import java.util.function.Function;
17 import java.util.stream.Collectors;
18 import java.util.stream.Stream;
19
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;
25
26 public class DistributionEngineTest {
27
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";
32
33     @InjectMocks
34     private DistributionEngine testInstance;
35
36     @Mock
37     private EnvironmentsEngine environmentsEngine;
38
39     @Mock
40     private DistributionNotificationSender distributionNotificationSender;
41
42     private DummyDistributionConfigurationManager distributionEngineConfigurationMock;
43
44     private Map<String, OperationalEnvironmentEntry> envs;
45
46
47     @Before
48     public void setUp() throws Exception {
49         MockitoAnnotations.initMocks(this);
50         distributionEngineConfigurationMock = new DummyDistributionConfigurationManager();
51         envs = getEnvs(ENV_ID);
52     }
53
54     @Test
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);
65     }
66
67     @Test
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);
73     }
74
75     @Test
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);
86     }
87
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()));
94     }
95 }