1 package org.openecomp.sdc.be.auditing.impl.distribution;
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;
24 import java.util.EnumMap;
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;
47 @RunWith(MockitoJUnitRunner.class)
48 public class AuditDistrEngineFuncTest {
49 private AuditingManager auditingManager;
52 private static AuditCassandraDao cassandraDao;
54 private static AuditingDao auditingDao;
56 private static Configuration.ElasticSearchConfig esConfig;
59 private ArgumentCaptor<AuditingGenericEvent> eventCaptor;
64 auditingManager = new AuditingManager(auditingDao, cassandraDao);
65 ThreadLocalsHolder.setUuid(REQUEST_ID);
69 public void testNewAddKeyEvent() {
70 AuditEventFactory factory = new AuditAddKeyDistribEngineEventFactory(
71 CommonAuditData.newBuilder()
72 .description(DESCRIPTION)
74 .requestId(REQUEST_ID)
75 .serviceInstanceId(SERVICE_INSTANCE_ID)
77 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
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);
83 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_ADD_KEY_ENGINE_LOG_STR);
84 verifyEvent(AuditingActionEnum.ADD_KEY_TO_TOPIC_ACL.getName());
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);
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());
99 public void testNewCreateTopicEvent() {
100 AuditEventFactory factory = new AuditCreateTopicDistribEngineEventFactory(
101 CommonAuditData.newBuilder()
102 .description(DESCRIPTION)
104 .requestId(REQUEST_ID)
105 .serviceInstanceId(SERVICE_INSTANCE_ID)
107 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
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);
113 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_CREATE_TOPIC_ENGINE_LOG_STR);
114 verifyEvent(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getName());
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);
123 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC))).isEqualTo(EXPECTED_DIST_CREATE_TOPIC_ENGINE_LOG_STR);
124 verifyEvent(AuditingActionEnum.CREATE_DISTRIBUTION_TOPIC.getName());
128 public void testNewRegisterEvent() {
129 AuditEventFactory factory = new AuditRegisterDistribEngineEventFactory(
130 CommonAuditData.newBuilder()
131 .description(DESCRIPTION)
133 .requestId(REQUEST_ID)
134 .serviceInstanceId(SERVICE_INSTANCE_ID)
136 DIST_CONSUMER_ID, DIST_STATUS_TOPIC, DIST_NOTIFY_TOPIC, DIST_API_KEY, DIST_ENV_NAME, DIST_ROLE);
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);
142 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DIST_REG_ENGINE_LOG_STR);
143 verifyEvent(AuditingActionEnum.DISTRIBUTION_REGISTER.getName());
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);
152 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.DISTRIBUTION_REGISTER))).isEqualTo(EXPECTED_DIST_REG_ENGINE_LOG_STR);
153 verifyEvent(AuditingActionEnum.DISTRIBUTION_REGISTER.getName());
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);
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);
187 return auditingFields;