Refactoring Consolidation Service
[sdc.git] / catalog-be / src / test / java / org / openecomp / sdc / be / auditing / impl / distribution / AuditDistrEngineFuncTest.java
1 package org.openecomp.sdc.be.auditing.impl.distribution;
2
3 import static org.assertj.core.api.Assertions.assertThat;
4 import static org.mockito.ArgumentMatchers.any;
5 import static org.mockito.ArgumentMatchers.anyMap;
6 import static org.mockito.ArgumentMatchers.eq;
7 import static org.mockito.Mockito.verify;
8 import static org.mockito.Mockito.when;
9 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DESCRIPTION;
10 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_API_KEY;
11 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_CONSUMER_ID;
12 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_ENV_NAME;
13 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_NOTIFY_TOPIC;
14 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_ROLE;
15 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_STATUS_TOPIC;
16 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_DIST_ADD_KEY_ENGINE_LOG_STR;
17 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_DIST_CREATE_TOPIC_ENGINE_LOG_STR;
18 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_DIST_REG_ENGINE_LOG_STR;
19 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.REQUEST_ID;
20 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.SERVICE_INSTANCE_ID;
21 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.STATUS_OK;
22 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.init;
23
24 import java.util.EnumMap;
25
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.junit.runner.RunWith;
29 import org.mockito.ArgumentCaptor;
30 import org.mockito.Captor;
31 import org.mockito.Mock;
32 import org.mockito.junit.MockitoJUnitRunner;
33 import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
34 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
35 import org.openecomp.sdc.be.config.Configuration;
36 import org.openecomp.sdc.be.dao.api.ActionStatus;
37 import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao;
38 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
39 import org.openecomp.sdc.be.dao.impl.AuditingDao;
40 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
41 import org.openecomp.sdc.be.resources.data.auditing.AuditingGenericEvent;
42 import org.openecomp.sdc.be.resources.data.auditing.DistributionEngineEvent;
43 import org.openecomp.sdc.be.resources.data.auditing.model.CommonAuditData;
44 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
45 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
46
47 @RunWith(MockitoJUnitRunner.class)
48 public class AuditDistrEngineFuncTest {
49     private AuditingManager auditingManager;
50
51     @Mock
52     private static AuditCassandraDao cassandraDao;
53     @Mock
54     private static AuditingDao auditingDao;
55     @Mock
56     private static Configuration.ElasticSearchConfig esConfig;
57
58     @Captor
59     private ArgumentCaptor<AuditingGenericEvent> eventCaptor;
60
61     @Before
62     public void setUp() {
63         init(esConfig);
64         auditingManager = new AuditingManager(auditingDao, cassandraDao);
65         ThreadLocalsHolder.setUuid(REQUEST_ID);
66     }
67
68     @Test
69     public void testNewAddKeyEvent() {
70         AuditEventFactory factory = new AuditAddKeyDistribEngineEventFactory(
71                 CommonAuditData.newBuilder()
72                         .description(DESCRIPTION)
73                         .status(STATUS_OK)
74                         .requestId(REQUEST_ID)
75                         .serviceInstanceId(SERVICE_INSTANCE_ID)
76                         .build(),
77                 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
78
79         when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL.getAuditingEsType())))
80                 .thenReturn(ActionStatus.OK);
81         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
82
83         assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_ADD_KEY_ENGINE_LOG_STR);
84         verifyEvent(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL.getName());
85     }
86
87     @Test
88     public void testOldAddKeyEvent() {
89         when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL.getAuditingEsType())))
90                 .thenReturn(ActionStatus.OK);
91         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
92
93         assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL))).isEqualTo(EXPECTED_DIST_ADD_KEY_ENGINE_LOG_STR);
94         verifyEvent(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL.getName());
95
96     }
97
98     @Test
99     public void testNewCreateTopicEvent() {
100         AuditEventFactory factory = new AuditCreateTopicDistribEngineEventFactory(
101                 CommonAuditData.newBuilder()
102                         .description(DESCRIPTION)
103                         .status(STATUS_OK)
104                         .requestId(REQUEST_ID)
105                         .serviceInstanceId(SERVICE_INSTANCE_ID)
106                         .build(),
107                 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
108
109         when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getAuditingEsType())))
110                 .thenReturn(ActionStatus.OK);
111         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
112
113         assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_CREATE_TOPIC_ENGINE_LOG_STR);
114         verifyEvent(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getName());
115     }
116
117     @Test
118     public void testOldCreateTopicEvent() {
119         when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getAuditingEsType())))
120                 .thenReturn(ActionStatus.OK);
121         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
122
123         assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC))).isEqualTo(EXPECTED_DIST_CREATE_TOPIC_ENGINE_LOG_STR);
124         verifyEvent(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getName());
125     }
126
127     @Test
128     public void testNewRegisterEvent() {
129         AuditEventFactory factory = new AuditRegisterDistribEngineEventFactory(
130                 CommonAuditData.newBuilder()
131                         .description(DESCRIPTION)
132                         .status(STATUS_OK)
133                         .requestId(REQUEST_ID)
134                         .serviceInstanceId(SERVICE_INSTANCE_ID)
135                         .build(),
136                 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
137
138         when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.DISTRIBUTION_REGISTER.getAuditingEsType())))
139                 .thenReturn(ActionStatus.OK);
140         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
141
142         assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_REG_ENGINE_LOG_STR);
143         verifyEvent(AuditingActionEnum.DISTRIBUTION_REGISTER.getName());
144     }
145
146     @Test
147     public void testOldRegisterEvent() {
148         when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.DISTRIBUTION_REGISTER.getAuditingEsType())))
149                 .thenReturn(ActionStatus.OK);
150         when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
151
152         assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.DISTRIBUTION_REGISTER))).isEqualTo(EXPECTED_DIST_REG_ENGINE_LOG_STR);
153         verifyEvent(AuditingActionEnum.DISTRIBUTION_REGISTER.getName());
154     }
155
156     private void verifyEvent(String action) {
157         verify(cassandraDao).saveRecord(eventCaptor.capture());
158         DistributionEngineEvent storedEvent = (DistributionEngineEvent) eventCaptor.getValue();
159         assertThat(storedEvent.getDnotifTopic()).isEqualTo(DIST_NOTIFY_TOPIC);
160         assertThat(storedEvent.getDstatusTopic()).isEqualTo(DIST_STATUS_TOPIC);
161         assertThat(storedEvent.getDesc()).isEqualTo(DESCRIPTION);
162         assertThat(storedEvent.getStatus()).isEqualTo(STATUS_OK);
163         assertThat(storedEvent.getRequestId()).isEqualTo(REQUEST_ID);
164         assertThat(storedEvent.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
165         assertThat(storedEvent.getAction()).isEqualTo(action);
166         assertThat(storedEvent.getEnvironmentName()).isEqualTo(DIST_ENV_NAME);
167         assertThat(storedEvent.getApiKey()).isEqualTo(DIST_API_KEY);
168         assertThat(storedEvent.getConsumerId()).isEqualTo(DIST_CONSUMER_ID);
169         assertThat(storedEvent.getRole()).isEqualTo(DIST_ROLE);
170     }
171
172     private EnumMap<AuditingFieldsKeysEnum, Object> fillMap(AuditingActionEnum action) {
173         EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<>(AuditingFieldsKeysEnum.class);
174         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, action.getName());
175         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, DIST_CONSUMER_ID);
176         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ENVRIONMENT_NAME, DIST_ENV_NAME);
177         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, STATUS_OK);
178         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, DESCRIPTION);
179         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_STATUS_TOPIC_NAME, DIST_STATUS_TOPIC);
180         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_NOTIFICATION_TOPIC_NAME, DIST_NOTIFY_TOPIC);
181         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_TOPIC_NAME, DIST_NOTIFY_TOPIC);
182         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_API_KEY, DIST_API_KEY);
183         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_REQUEST_ID, REQUEST_ID);
184         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_ROLE, DIST_ROLE);
185         auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, SERVICE_INSTANCE_ID);
186
187         return auditingFields;
188     }
189
190
191 }