1 package org.openecomp.sdc.be.auditing.impl.externalapi;
3 import org.junit.Before;
5 import org.junit.runner.RunWith;
6 import org.mockito.ArgumentCaptor;
7 import org.mockito.Captor;
8 import org.mockito.Mock;
9 import org.mockito.junit.MockitoJUnitRunner;
10 import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
11 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
12 import org.openecomp.sdc.be.config.Configuration;
13 import org.openecomp.sdc.be.dao.api.ActionStatus;
14 import org.openecomp.sdc.be.dao.cassandra.AuditCassandraDao;
15 import org.openecomp.sdc.be.dao.cassandra.CassandraOperationStatus;
16 import org.openecomp.sdc.be.dao.impl.AuditingDao;
17 import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum;
18 import org.openecomp.sdc.be.resources.data.auditing.AuditingGenericEvent;
19 import org.openecomp.sdc.be.resources.data.auditing.ExternalApiEvent;
20 import org.openecomp.sdc.be.resources.data.auditing.model.CommonAuditData;
21 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceAuditData;
22 import org.openecomp.sdc.common.datastructure.AuditingFieldsKeysEnum;
24 import java.util.EnumMap;
26 import static org.assertj.core.api.Assertions.assertThat;
27 import static org.mockito.ArgumentMatchers.any;
28 import static org.mockito.ArgumentMatchers.anyMap;
29 import static org.mockito.ArgumentMatchers.eq;
30 import static org.mockito.Mockito.verify;
31 import static org.mockito.Mockito.when;
32 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.ARTIFACT_DATA;
33 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.ARTIFACT_UUID;
34 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.CURRENT_STATE;
35 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.CURRENT_VERSION;
36 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DESCRIPTION;
37 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_CONSUMER_ID;
38 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.DIST_RESOURCE_URL;
39 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_ACTIVATE_SERVICE_API_LOG_STR;
40 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_CHANGE_LIFECYCLE_EXTERNAL_API_LOG_STR;
41 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_DELETE_ARTIFACT_EXTERNAL_API_LOG_STR;
42 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_DOWNLOAD_ARTIFACT_EXTERNAL_API_LOG_STR;
43 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_GET_ASSET_LIST_LOG_STR;
44 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.EXPECTED_GET_TOSCA_MODEL_LOG_STR;
45 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.INVARIANT_UUID;
46 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.MODIFIER_UID;
47 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.PREV_RESOURCE_STATE;
48 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.PREV_RESOURCE_VERSION;
49 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.REQUEST_ID;
50 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.RESOURCE_NAME;
51 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.RESOURCE_TYPE;
52 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.SERVICE_INSTANCE_ID;
53 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.STATUS_OK;
54 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.init;
55 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.modifier;
57 @RunWith(MockitoJUnitRunner.class)
58 public class AuditExternalApiEventFuncTest {
60 private AuditingManager auditingManager;
63 private static AuditCassandraDao cassandraDao;
65 private static AuditingDao auditingDao;
67 private static Configuration.ElasticSearchConfig esConfig;
70 private ArgumentCaptor<AuditingGenericEvent> eventCaptor;
75 auditingManager = new AuditingManager(auditingDao, cassandraDao);
79 public void testNewActivateServiceEvent() {
80 AuditEventFactory builder = new AuditActivateServiceExternalApiEventFactory(
81 CommonAuditData.newBuilder()
82 .description(DESCRIPTION)
84 .requestId(REQUEST_ID)
85 .serviceInstanceId(SERVICE_INSTANCE_ID)
87 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
88 ResourceAuditData.newBuilder()
89 .artifactUuid(ARTIFACT_UUID)
90 .state(PREV_RESOURCE_STATE)
91 .version(PREV_RESOURCE_VERSION)
93 ResourceAuditData.newBuilder()
94 .artifactUuid(ARTIFACT_UUID)
96 .version(CURRENT_VERSION)
98 INVARIANT_UUID, modifier, ARTIFACT_DATA);
100 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.ACTIVATE_SERVICE_BY_API.getAuditingEsType())))
101 .thenReturn(ActionStatus.OK);
102 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
104 assertThat(auditingManager.auditEvent(builder)).isEqualTo(EXPECTED_ACTIVATE_SERVICE_API_LOG_STR);
105 verifyExternalApiEvent(AuditingActionEnum.ACTIVATE_SERVICE_BY_API.getName());
109 public void testOldActivateServiceEvent() {
110 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.ACTIVATE_SERVICE_BY_API.getAuditingEsType())))
111 .thenReturn(ActionStatus.OK);
112 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
114 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.ACTIVATE_SERVICE_BY_API))).isEqualTo(EXPECTED_ACTIVATE_SERVICE_API_LOG_STR);
115 verifyExternalApiEvent(AuditingActionEnum.ACTIVATE_SERVICE_BY_API.getName());
120 public void testNewDownloadArtifactEvent() {
121 AuditEventFactory builder = new AuditDownloadArtifactExternalApiEventFactory(
122 CommonAuditData.newBuilder()
123 .description(DESCRIPTION)
125 .requestId(REQUEST_ID)
126 .serviceInstanceId(SERVICE_INSTANCE_ID)
128 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
129 ResourceAuditData.newBuilder()
130 .artifactUuid(ARTIFACT_UUID)
131 .state(PREV_RESOURCE_STATE)
132 .version(PREV_RESOURCE_VERSION)
134 ResourceAuditData.newBuilder()
135 .artifactUuid(ARTIFACT_UUID)
136 .state(CURRENT_STATE)
137 .version(CURRENT_VERSION)
139 INVARIANT_UUID, modifier, ARTIFACT_DATA);
141 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.DOWNLOAD_ARTIFACT.getAuditingEsType())))
142 .thenReturn(ActionStatus.OK);
143 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
145 assertThat(auditingManager.auditEvent(builder)).isEqualTo(EXPECTED_DOWNLOAD_ARTIFACT_EXTERNAL_API_LOG_STR);
146 verifyExternalApiEvent(AuditingActionEnum.DOWNLOAD_ARTIFACT.getName());
150 public void testOldDownloadArtifactEvent() {
151 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.DOWNLOAD_ARTIFACT.getAuditingEsType())))
152 .thenReturn(ActionStatus.OK);
153 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
155 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.DOWNLOAD_ARTIFACT))).isEqualTo(EXPECTED_DOWNLOAD_ARTIFACT_EXTERNAL_API_LOG_STR + " ");
156 verifyExternalApiEvent(AuditingActionEnum.DOWNLOAD_ARTIFACT.getName());
160 public void testNewChangeLifecycleEvent() {
161 AuditEventFactory factory = new AuditChangeLifecycleExternalApiEventFactory(
162 CommonAuditData.newBuilder()
163 .description(DESCRIPTION)
165 .requestId(REQUEST_ID)
166 .serviceInstanceId(SERVICE_INSTANCE_ID)
168 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
169 ResourceAuditData.newBuilder()
170 .artifactUuid(ARTIFACT_UUID)
171 .state(PREV_RESOURCE_STATE)
172 .version(PREV_RESOURCE_VERSION)
174 ResourceAuditData.newBuilder()
175 .artifactUuid(ARTIFACT_UUID)
176 .state(CURRENT_STATE)
177 .version(CURRENT_VERSION)
179 INVARIANT_UUID, modifier, ARTIFACT_DATA);
181 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getAuditingEsType())))
182 .thenReturn(ActionStatus.OK);
183 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
185 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_CHANGE_LIFECYCLE_EXTERNAL_API_LOG_STR);
186 verifyExternalApiEvent(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
190 public void testOldChangeLifecycleEvent() {
191 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getAuditingEsType())))
192 .thenReturn(ActionStatus.OK);
193 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
195 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API))).isEqualTo(EXPECTED_CHANGE_LIFECYCLE_EXTERNAL_API_LOG_STR);
196 verifyExternalApiEvent(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
201 public void testNewDeleteArtifactEvent() {
202 AuditEventFactory factory = new AuditDeleteArtByApiCrudExternalApiEventFactory(
203 CommonAuditData.newBuilder()
204 .description(DESCRIPTION)
206 .requestId(REQUEST_ID)
207 .serviceInstanceId(SERVICE_INSTANCE_ID)
209 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
210 ResourceAuditData.newBuilder()
211 .artifactUuid(ARTIFACT_UUID)
212 .state(PREV_RESOURCE_STATE)
213 .version(PREV_RESOURCE_VERSION)
215 ResourceAuditData.newBuilder()
216 .artifactUuid(ARTIFACT_UUID)
217 .state(CURRENT_STATE)
218 .version(CURRENT_VERSION)
220 INVARIANT_UUID, modifier, ARTIFACT_DATA);
222 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.ARTIFACT_DELETE_BY_API.getAuditingEsType())))
223 .thenReturn(ActionStatus.OK);
224 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
226 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_DELETE_ARTIFACT_EXTERNAL_API_LOG_STR);
227 verifyExternalApiEvent(AuditingActionEnum.ARTIFACT_DELETE_BY_API.getName());
231 public void testOldDeleteArtifactEvent() {
232 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.ARTIFACT_DELETE_BY_API.getAuditingEsType())))
233 .thenReturn(ActionStatus.OK);
234 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
236 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.ARTIFACT_DELETE_BY_API))).isEqualTo(EXPECTED_DELETE_ARTIFACT_EXTERNAL_API_LOG_STR + " ");
237 verifyExternalApiEvent(AuditingActionEnum.ARTIFACT_DELETE_BY_API.getName());
242 public void testNewGetAssetsListEvent() {
243 AuditEventFactory factory = new AuditGetAssetListExternalApiEventFactory(
244 CommonAuditData.newBuilder()
245 .description(DESCRIPTION)
247 .requestId(REQUEST_ID)
248 .serviceInstanceId(SERVICE_INSTANCE_ID)
250 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
251 ResourceAuditData.newBuilder()
252 .artifactUuid(ARTIFACT_UUID)
253 .state(PREV_RESOURCE_STATE)
254 .version(PREV_RESOURCE_VERSION)
256 ResourceAuditData.newBuilder()
257 .artifactUuid(ARTIFACT_UUID)
258 .state(CURRENT_STATE)
259 .version(CURRENT_VERSION)
261 INVARIANT_UUID, modifier, ARTIFACT_DATA);
263 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.GET_ASSET_LIST.getAuditingEsType())))
264 .thenReturn(ActionStatus.OK);
265 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
267 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_GET_ASSET_LIST_LOG_STR);
268 verifyExternalApiEvent(AuditingActionEnum.GET_ASSET_LIST.getName());
272 public void testOldGetAssetsListEvent() {
273 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.GET_ASSET_LIST.getAuditingEsType())))
274 .thenReturn(ActionStatus.OK);
275 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
277 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.GET_ASSET_LIST))).isEqualTo(EXPECTED_GET_ASSET_LIST_LOG_STR);
278 verifyExternalApiEvent(AuditingActionEnum.GET_ASSET_LIST.getName());
282 public void testNewGetToscaModelEvent() {
283 AuditEventFactory factory = new AuditGetToscaModelExternalApiEventFactory(
284 CommonAuditData.newBuilder()
285 .description(DESCRIPTION)
287 .requestId(REQUEST_ID)
288 .serviceInstanceId(SERVICE_INSTANCE_ID)
290 RESOURCE_TYPE, RESOURCE_NAME, DIST_CONSUMER_ID, DIST_RESOURCE_URL,
291 ResourceAuditData.newBuilder()
292 .artifactUuid(ARTIFACT_UUID)
293 .state(PREV_RESOURCE_STATE)
294 .version(PREV_RESOURCE_VERSION)
296 ResourceAuditData.newBuilder()
297 .artifactUuid(ARTIFACT_UUID)
298 .state(CURRENT_STATE)
299 .version(CURRENT_VERSION)
301 INVARIANT_UUID, modifier, ARTIFACT_DATA);
303 when(auditingDao.addRecord(any(AuditingGenericEvent.class), eq(AuditingActionEnum.GET_TOSCA_MODEL.getAuditingEsType())))
304 .thenReturn(ActionStatus.OK);
305 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
307 assertThat(auditingManager.auditEvent(factory)).isEqualTo(EXPECTED_GET_TOSCA_MODEL_LOG_STR);
308 verifyExternalApiEvent(AuditingActionEnum.GET_TOSCA_MODEL.getName());
312 public void testOldGetToscaModelEvent() {
313 when(auditingDao.addRecord(anyMap(), eq(AuditingActionEnum.GET_TOSCA_MODEL.getAuditingEsType())))
314 .thenReturn(ActionStatus.OK);
315 when(cassandraDao.saveRecord(any(AuditingGenericEvent.class))).thenReturn(CassandraOperationStatus.OK);
317 assertThat(auditingManager.auditEvent(fillMap(AuditingActionEnum.GET_TOSCA_MODEL))).isEqualTo(EXPECTED_GET_TOSCA_MODEL_LOG_STR);
318 verifyExternalApiEvent(AuditingActionEnum.GET_TOSCA_MODEL.getName());
321 private void verifyExternalApiEvent(String action) {
322 verify(cassandraDao).saveRecord(eventCaptor.capture());
323 ExternalApiEvent storedEvent = (ExternalApiEvent) eventCaptor.getValue();
324 assertThat(storedEvent.getModifier()).isEqualTo(MODIFIER_UID);
325 assertThat(storedEvent.getDesc()).isEqualTo(DESCRIPTION);
326 assertThat(storedEvent.getStatus()).isEqualTo(STATUS_OK);
327 assertThat(storedEvent.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
328 assertThat(storedEvent.getAction()).isEqualTo(action);
329 assertThat(storedEvent.getArtifactData()).isEqualTo(ARTIFACT_DATA);
330 assertThat(storedEvent.getCurrArtifactUuid()).isEqualTo(ARTIFACT_UUID);
331 assertThat(storedEvent.getPrevArtifactUuid()).isEqualTo(ARTIFACT_UUID);
332 assertThat(storedEvent.getPrevState()).isEqualTo(PREV_RESOURCE_STATE);
333 assertThat(storedEvent.getCurrState()).isEqualTo(CURRENT_STATE);
334 assertThat(storedEvent.getPrevVersion()).isEqualTo(PREV_RESOURCE_VERSION);
335 assertThat(storedEvent.getCurrVersion()).isEqualTo(CURRENT_VERSION);
336 assertThat(storedEvent.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
337 assertThat(storedEvent.getResourceName()).isEqualTo(RESOURCE_NAME);
338 assertThat(storedEvent.getResourceType()).isEqualTo(RESOURCE_TYPE);
342 private EnumMap<AuditingFieldsKeysEnum, Object> fillMap(AuditingActionEnum action) {
343 EnumMap<AuditingFieldsKeysEnum, Object> auditingFields = new EnumMap<>(AuditingFieldsKeysEnum.class);
344 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ACTION, action.getName());
345 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_NAME, modifier.getFirstName() + " " + modifier.getLastName());
346 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_MODIFIER_UID, modifier.getUserId());
347 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_STATUS, STATUS_OK);
348 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DESC, DESCRIPTION);
350 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_TYPE, RESOURCE_TYPE);
351 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_PREV_VERSION, PREV_RESOURCE_VERSION);
352 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_PREV_STATE, PREV_RESOURCE_STATE);
353 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_NAME, RESOURCE_NAME);
354 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_VERSION, CURRENT_VERSION);
355 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_RESOURCE_CURR_STATE, CURRENT_STATE);
356 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_SERVICE_INSTANCE_ID, SERVICE_INSTANCE_ID);
357 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_INVARIANT_UUID, INVARIANT_UUID);
358 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_ARTIFACT_DATA, ARTIFACT_DATA);
359 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_CURR_ARTIFACT_UUID, ARTIFACT_UUID);
360 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_PREV_ARTIFACT_UUID, ARTIFACT_UUID);
361 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_CONSUMER_ID, DIST_CONSUMER_ID);
362 auditingFields.put(AuditingFieldsKeysEnum.AUDIT_DISTRIBUTION_RESOURCE_URL, DIST_RESOURCE_URL);
363 return auditingFields;