1 package org.openecomp.sdc.be.components.impl;
3 import org.junit.Before;
4 import org.junit.BeforeClass;
6 import org.junit.runner.RunWith;
7 import org.mockito.ArgumentCaptor;
8 import org.mockito.Captor;
9 import org.mockito.InjectMocks;
10 import org.mockito.Mock;
11 import org.mockito.junit.MockitoJUnitRunner;
12 import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
13 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
14 import org.openecomp.sdc.be.auditing.impl.externalapi.AuditChangeLifecycleExternalApiEventFactory;
15 import org.openecomp.sdc.be.auditing.impl.externalapi.AuditCreateResourceExternalApiEventFactory;
16 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
17 import org.openecomp.sdc.be.impl.ComponentsUtils;
18 import org.openecomp.sdc.be.model.*;
19 import org.openecomp.sdc.be.resources.data.auditing.*;
20 import org.openecomp.sdc.be.resources.data.auditing.model.DistributionData;
21 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceCommonInfo;
22 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceVersionInfo;
23 import org.openecomp.sdc.common.api.Constants;
24 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
25 import org.openecomp.sdc.exception.ResponseFormat;
27 import javax.servlet.http.HttpServletRequest;
29 import static org.assertj.core.api.Assertions.assertThat;
30 import static org.mockito.Mockito.verify;
31 import static org.mockito.Mockito.when;
32 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.*;
34 @RunWith(MockitoJUnitRunner.class)
35 public class ComponentsUtilsTest {
37 private static User modifier = new User();
38 private Component service = new Service();
39 private Resource resource = new Resource();
42 private AuditingManager manager;
44 private ResponseFormat responseFormat;
46 private HttpServletRequest request;
48 private ArtifactDefinition artifactDefinition = null;
51 private ArgumentCaptor<AuditEventFactory> factoryCaptor;
54 private static ComponentsUtils utils;
57 public static void setUpClass() {
58 modifier.setFirstName(MODIFIER_FIRST_NAME);
59 modifier.setLastName(MODIFIER_LAST_NAME);
60 modifier.setUserId(MODIFIER_ID);
66 ThreadLocalsHolder.setUuid(REQUEST_ID);
67 utils = new ComponentsUtils(manager);
71 public void auditComponentWhenAllParamsPassed() {
72 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
73 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
74 service.setUUID(SERVICE_INSTANCE_ID);
75 service.setInvariantUUID(INVARIANT_UUID);
77 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.ARTIFACT_DELETE,
78 new ResourceCommonInfo(RESOURCE_NAME, service.getComponentType().getValue()),
79 ResourceVersionInfo.newBuilder()
80 .state(PREV_RESOURCE_STATE)
81 .version(PREV_RESOURCE_VERSION)
82 .artifactUuid(ARTIFACT_UUID)
83 .distributionStatus(DPREV_STATUS).build(),
84 ResourceVersionInfo.newBuilder()
86 .version(CURRENT_VERSION)
87 .artifactUuid(ARTIFACT_UUID)
88 .distributionStatus(DCURR_STATUS).build(),
89 COMMENT, artifactDefinition, DIST_ID);
90 verifyResourceAdminEvent(AuditingActionEnum.ARTIFACT_DELETE.getName(), STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
91 false, true, true, false, true, true, true);
95 public void auditComponentWhenAllParamsPassedAndMostFromComponent() {
96 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
97 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
99 service.setUUID(SERVICE_INSTANCE_ID);
100 service.setInvariantUUID(INVARIANT_UUID);
101 service.setState(LifecycleStateEnum.CERTIFIED);
102 service.setVersion(CURRENT_VERSION);
103 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.CREATE_RESOURCE,
104 new ResourceCommonInfo(RESOURCE_NAME, service.getComponentType().getValue()),
105 ResourceVersionInfo.newBuilder()
106 .state(PREV_RESOURCE_STATE)
107 .version(PREV_RESOURCE_VERSION)
108 .artifactUuid(ARTIFACT_UUID)
109 .distributionStatus(DPREV_STATUS).build(),
110 ResourceVersionInfo.newBuilder()
111 .artifactUuid(ARTIFACT_UUID)
112 .distributionStatus(DCURR_STATUS).build(),
113 COMMENT, artifactDefinition, DIST_ID);
114 verifyResourceAdminEvent(AuditingActionEnum.CREATE_RESOURCE.getName(), STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
115 false, true, true, false, true, true, true);
120 public void auditComponentDistStateWithoutArtDataCommentAndDid() {
121 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
122 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
124 service.setUUID(SERVICE_INSTANCE_ID);
125 service.setInvariantUUID(INVARIANT_UUID);
126 service.setState(LifecycleStateEnum.CERTIFIED);
127 service.setName(RESOURCE_NAME);
128 service.setVersion(CURRENT_VERSION);
129 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.DISTRIBUTION_STATE_CHANGE_REQUEST,
130 new ResourceCommonInfo(service.getComponentType().getValue()),
131 ResourceVersionInfo.newBuilder()
132 .state(PREV_RESOURCE_STATE)
133 .version(PREV_RESOURCE_VERSION)
134 .artifactUuid(ARTIFACT_UUID)
135 .distributionStatus(DPREV_STATUS).build(),
136 ResourceVersionInfo.newBuilder()
137 .artifactUuid(ARTIFACT_UUID)
138 .distributionStatus(DCURR_STATUS).build());
139 verifyResourceAdminEvent(AuditingActionEnum.DISTRIBUTION_STATE_CHANGE_REQUEST.getName(),
140 STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
141 false, true, true, false, false, true, false);
145 public void auditComponentWhenError() {
146 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
147 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
149 service.setUUID(SERVICE_INSTANCE_ID);
150 service.setInvariantUUID(INVARIANT_UUID);
151 service.setState(LifecycleStateEnum.CERTIFIED);
152 service.setName(RESOURCE_NAME);
153 service.setVersion(CURRENT_VERSION);
155 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.CERTIFICATION_REQUEST_RESOURCE,
156 new ResourceCommonInfo(ComponentTypeEnum.SERVICE.getValue()),
157 ResourceVersionInfo.newBuilder().state(PREV_RESOURCE_STATE).version(PREV_RESOURCE_VERSION).artifactUuid(ARTIFACT_UUID).build());
158 verifyResourceAdminEvent(AuditingActionEnum.CERTIFICATION_REQUEST_RESOURCE.getName(), STATUS_500, DESC_ERROR,
159 service.getComponentType().getValue(), false, true, false, false, false, false, false);
163 public void auditComponentWhenCompIsNull() {
164 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
165 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
167 utils.auditComponent(responseFormat, modifier, AuditingActionEnum.START_CERTIFICATION_RESOURCE,
168 new ResourceCommonInfo(RESOURCE_NAME, ComponentTypeEnum.SERVICE.getValue()), COMMENT);
169 verifyResourceAdminEvent(AuditingActionEnum.START_CERTIFICATION_RESOURCE.getName(), STATUS_500, DESC_ERROR, service.getComponentType().getValue(),
170 true, false, false, false, true, false, false);
174 public void auditComponentAdmin() {
175 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
176 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
178 service.setUUID(SERVICE_INSTANCE_ID);
179 service.setInvariantUUID(INVARIANT_UUID);
180 service.setName(RESOURCE_NAME);
181 service.setState(LifecycleStateEnum.CERTIFIED);
182 service.setVersion(CURRENT_VERSION);
183 utils.auditComponentAdmin(responseFormat, modifier, service, AuditingActionEnum.CREATE_RESOURCE, service.getComponentType());
184 verifyResourceAdminEvent(AuditingActionEnum.CREATE_RESOURCE.getName(), STATUS_500, DESC_ERROR, service.getComponentType().getValue(),
185 false, false, false, false, false, false, false);
189 public void auditResourceWhenAllParamsPassed() {
190 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
191 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
193 resource.setUUID(SERVICE_INSTANCE_ID);
194 resource.setInvariantUUID(INVARIANT_UUID);
195 resource.setName(RESOURCE_NAME);
196 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
197 resource.setVersion(CURRENT_VERSION);
198 resource.setToscaResourceName(TOSCA_NODE_TYPE);
199 utils.auditResource(responseFormat, modifier, resource, null, AuditingActionEnum.IMPORT_RESOURCE,
200 ResourceVersionInfo.newBuilder()
201 .state(PREV_RESOURCE_STATE)
202 .version(PREV_RESOURCE_VERSION)
203 .artifactUuid(ARTIFACT_UUID)
205 ARTIFACT_UUID, artifactDefinition);
206 verifyResourceAdminEvent(AuditingActionEnum.IMPORT_RESOURCE.getName(), STATUS_OK, DESCRIPTION, resource.getResourceType().name(),
207 false, true, true, false, false, false, false);
211 public void auditResourceWithoutPrevFields() {
212 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
213 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
215 resource.setUUID(SERVICE_INSTANCE_ID);
216 resource.setInvariantUUID(INVARIANT_UUID);
217 resource.setName(RESOURCE_NAME);
218 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
219 resource.setVersion(CURRENT_VERSION);
221 utils.auditResource(responseFormat, modifier, resource, AuditingActionEnum.UPDATE_RESOURCE_METADATA);
222 verifyResourceAdminEvent(AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName(), STATUS_500, DESC_ERROR, resource.getResourceType().name(),
223 false, false, false, false, false, false, false);
227 public void auditResourceWhenResourceIsNull() {
228 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
229 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
231 utils.auditResource(responseFormat, modifier, RESOURCE_NAME, AuditingActionEnum.CHECKOUT_RESOURCE);
232 verifyResourceAdminEvent(AuditingActionEnum.CHECKOUT_RESOURCE.getName(), STATUS_500, DESC_ERROR, ComponentTypeEnum.RESOURCE.getValue(),
233 true, false, false, false, false, false, false);
237 public void auditUserAdminEvent() {
238 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
239 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
241 User userAfter = new User();
242 userAfter.setFirstName(USER_FIRST_NAME);
243 userAfter.setUserId(USER_ID);
244 userAfter.setLastName(USER_LAST_NAME);
245 userAfter.setRole(TESTER_USER_ROLE);
246 userAfter.setEmail(USER_EMAIL);
248 utils.auditAdminUserAction(AuditingActionEnum.ADD_USER, modifier, null, userAfter, responseFormat);
249 verify(manager).auditEvent(factoryCaptor.capture());
250 AuditEventFactory factory = factoryCaptor.getValue();
251 UserAdminEvent event = (UserAdminEvent)factory.getDbEvent();
252 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
253 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
254 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
255 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
256 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.ADD_USER.getName());
257 assertThat(event.getUserBefore()).isNull();
258 assertThat(event.getUserAfter()).isEqualTo(UPDATED_USER_EXTENDED_NAME);
262 public void auditEcompOpEnvEvent() {
263 utils.auditEnvironmentEngine(AuditingActionEnum.CREATE_ENVIRONMENT, OP_ENV_ID, OP_ENV_TYPE, OP_ENV_ACTION, OP_ENV_NAME, TENANT_CONTEXT);
264 verify(manager).auditEvent(factoryCaptor.capture());
265 AuditEventFactory factory = factoryCaptor.getValue();
266 EcompOperationalEnvironmentEvent event = (EcompOperationalEnvironmentEvent)factory.getDbEvent();
267 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CREATE_ENVIRONMENT.getName());
268 assertThat(event.getOperationalEnvironmentId()).isEqualTo(OP_ENV_ID);
269 assertThat(event.getOperationalEnvironmentType()).isEqualTo(OP_ENV_TYPE);
270 assertThat(event.getOperationalEnvironmentName()).isEqualTo(OP_ENV_NAME);
271 assertThat(event.getOperationalEnvironmentAction()).isEqualTo(OP_ENV_ACTION);
272 assertThat(event.getTenantContext()).isEqualTo(TENANT_CONTEXT);
276 public void auditDistrDownloadEvent(){
277 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
278 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
280 utils.auditDistributionDownload(responseFormat, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL));
282 verify(manager).auditEvent(factoryCaptor.capture());
283 AuditEventFactory factory = factoryCaptor.getValue();
284 DistributionDownloadEvent event = (DistributionDownloadEvent)factory.getDbEvent();
285 assertThat(event.getResourceUrl()).isEqualTo(DIST_RESOURCE_URL);
286 assertThat(event.getConsumerId()).isEqualTo(DIST_CONSUMER_ID);
287 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
288 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
289 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
290 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.DISTRIBUTION_ARTIFACT_DOWNLOAD.getName());
293 private void verifyResourceAdminEvent(String action, String status, String desc, String resourceType, boolean isComponentNull,
294 boolean isPrevStateAndVersionSet, boolean isCurrFieldsProvided, boolean isArtDataProvided, boolean isCommentProvided,
295 boolean isDistStatusProvided, boolean isDidProvided) {
296 verify(manager).auditEvent(factoryCaptor.capture());
297 AuditEventFactory factory = factoryCaptor.getValue();
298 ResourceAdminEvent event = (ResourceAdminEvent)factory.getDbEvent();
299 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
300 assertThat(event.getStatus()).isEqualTo(status);
301 assertThat(event.getDesc()).isEqualTo(desc);
302 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
303 assertThat(event.getAction()).isEqualTo(action);
304 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
306 if (isComponentNull) {
307 assertThat(event.getServiceInstanceId()).isNull();
308 assertThat(event.getCurrState()).isNull();
309 assertThat(event.getCurrVersion()).isNull();
310 assertThat(event.getInvariantUUID()).isNull();
311 assertThat(event.getResourceType()).isEqualTo(resourceType);
314 assertThat(event.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
315 assertThat(event.getCurrState()).isEqualTo(CURRENT_STATE);
316 assertThat(event.getCurrVersion()).isEqualTo(CURRENT_VERSION);
317 assertThat(event.getInvariantUUID()).isEqualTo(INVARIANT_UUID);
319 if (action.equals(AuditingActionEnum.IMPORT_RESOURCE.getName())) {
320 assertThat(event.getToscaNodeType()).isEqualTo(TOSCA_NODE_TYPE);
323 assertThat(event.getToscaNodeType()).isEmpty();
325 if (isPrevStateAndVersionSet) {
326 assertThat(event.getPrevState()).isEqualTo(PREV_RESOURCE_STATE);
327 assertThat(event.getPrevVersion()).isEqualTo(PREV_RESOURCE_VERSION);
328 assertThat(event.getPrevArtifactUUID()).isEqualTo(ARTIFACT_UUID);
331 assertThat(event.getPrevState()).isNull();
332 assertThat(event.getPrevVersion()).isNull();
333 assertThat(event.getPrevArtifactUUID()).isNull();
335 if (isCurrFieldsProvided) {
336 assertThat(event.getCurrArtifactUUID()).isEqualTo(ARTIFACT_UUID);
339 assertThat(event.getCurrArtifactUUID()).isNull();
341 if (isArtDataProvided) {
342 assertThat(event.getArtifactData()).isEqualTo(ARTIFACT_DATA);
345 assertThat(event.getArtifactData()).isEmpty();
348 assertThat(event.getDid()).isEqualTo(DIST_ID);
351 assertThat(event.getDid()).isNull();
353 if (isCommentProvided) {
354 assertThat(event.getComment()).isEqualTo(COMMENT);
357 assertThat(event.getComment()).isEmpty();
359 if (isDistStatusProvided) {
360 assertThat(event.getDcurrStatus()).isEqualTo(DCURR_STATUS);
361 assertThat(event.getDprevStatus()).isEqualTo(DPREV_STATUS);
364 assertThat(event.getDcurrStatus()).isNull();
365 assertThat(event.getDprevStatus()).isNull();
370 public void auditChangeLifeCycleExternalApiEventWhenComponentAndResponseObjectAreNull() {
371 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
372 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
374 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
375 null, null, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
377 verify(manager).auditEvent(factoryCaptor.capture());
378 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
380 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
381 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
382 verifyCommonDataForExternalApiEvent(event, false);
383 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
384 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
385 verifyDistributionDataForExternalApiEvent(event);
386 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
387 assertThat(event.getInvariantUuid()).isEmpty();
388 assertThat(event.getResourceName()).isNull();
389 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
393 public void auditChangeLifeCycleExternalApiEventWhenComponentIsNullAndResponseObjectIsNotNull() {
394 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
395 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
396 Component responseObject = new Resource();
397 responseObject.setVersion(CURRENT_VERSION);
398 responseObject.setState(LifecycleStateEnum.CERTIFIED);
399 responseObject.setInvariantUUID(INVARIANT_UUID);
400 responseObject.setUUID(SERVICE_INSTANCE_ID);
402 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
403 null, responseObject, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
405 verify(manager).auditEvent(factoryCaptor.capture());
406 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
408 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
409 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
410 verifyCommonDataForExternalApiEvent(event, true);
411 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
412 verifyCurrentResourceVersionInfoForExternalApiEvent(event, false);
413 verifyDistributionDataForExternalApiEvent(event);
414 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
415 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
416 assertThat(event.getResourceName()).isNull();
417 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
421 public void auditChangeLifeCycleExternalApiEventWhenComponentIsNotNullAndResponseObjectIsNull() {
422 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
423 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
424 Component component = new Resource();
425 component.setVersion(PREV_RESOURCE_VERSION);
426 component.setState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
427 component.setInvariantUUID(INVARIANT_UUID);
428 component.setName(RESOURCE_NAME);
430 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
431 component, null, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
433 verify(manager).auditEvent(factoryCaptor.capture());
434 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
436 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
437 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
439 verifyCommonDataForExternalApiEvent(event, false);
440 verifyPreviousResourceVersionInfoForExternalApiEvent(event, false);
441 verifyDistributionDataForExternalApiEvent(event);
442 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
443 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
444 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
445 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
449 public void auditChangeLifeCycleExternalApiEventWhenComponentAndResponseObjectAreNotNull() {
450 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
451 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
452 Component responseObject = new Resource();
453 responseObject.setVersion(CURRENT_VERSION);
454 responseObject.setState(LifecycleStateEnum.CERTIFIED);
455 responseObject.setInvariantUUID(INVARIANT_UUID);
456 responseObject.setUUID(SERVICE_INSTANCE_ID);
458 Component component = new Resource();
459 component.setVersion(PREV_RESOURCE_VERSION);
460 component.setState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
461 component.setInvariantUUID(INVARIANT_UUID);
462 component.setUUID(SERVICE_INSTANCE_ID);
463 component.setName(RESOURCE_NAME);
465 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
466 null, responseObject, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
468 verify(manager).auditEvent(factoryCaptor.capture());
469 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
471 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
472 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
473 verifyCommonDataForExternalApiEvent(event, true);
474 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
475 verifyCurrentResourceVersionInfoForExternalApiEvent(event, false);
476 verifyDistributionDataForExternalApiEvent(event);
477 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
478 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
479 assertThat(event.getResourceName()).isNull();
480 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
484 private void verifyDistributionDataForExternalApiEvent(ExternalApiEvent event) {
485 assertThat(event.getConsumerId()).isEqualTo(DIST_CONSUMER_ID);
486 assertThat(event.getResourceURL()).isEqualTo(DIST_RESOURCE_URL);
489 private void verifyDistributionDataNotSetForExternalApiEvent(ExternalApiEvent event) {
490 assertThat(event.getConsumerId()).isNull();
491 assertThat(event.getResourceURL()).isNull();
494 private void verifyCommonDataForExternalApiEvent(ExternalApiEvent event, boolean isSucceeded) {
496 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
497 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
498 assertThat(event.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
501 assertThat(event.getDesc()).isEqualTo(DESC_ERROR);
502 assertThat(event.getStatus()).isEqualTo(STATUS_500);
503 assertThat(event.getServiceInstanceId()).isNullOrEmpty();
505 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
508 private void verifyCurrentResourceVersionInfoForExternalApiEvent(ExternalApiEvent event, boolean isNull) {
509 assertThat(event.getCurrArtifactUuid()).isNull();
511 assertThat(event.getCurrState()).isNull();
512 assertThat(event.getCurrVersion()).isNull();
515 assertThat(event.getCurrState()).isEqualTo(LifecycleStateEnum.CERTIFIED.name());
516 assertThat(event.getCurrVersion()).isEqualTo(CURRENT_VERSION);
520 private void verifyPreviousResourceVersionInfoForExternalApiEvent(ExternalApiEvent event, boolean isNull) {
521 assertThat(event.getPrevArtifactUuid()).isNull();
523 assertThat(event.getPrevState()).isNull();
524 assertThat(event.getPrevVersion()).isNull();
527 assertThat(event.getPrevState()).isEqualTo(LifecycleStateEnum.READY_FOR_CERTIFICATION.name());
528 assertThat(event.getPrevVersion()).isEqualTo(PREV_RESOURCE_VERSION);
533 public void auditExternalCreateResourceEventWhenResourceObjectIsNull() {
534 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
535 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
537 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(USER_ID);
538 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(DIST_CONSUMER_ID);
539 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
540 when(request.getRequestURI()).thenReturn(DIST_RESOURCE_URL);
542 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(RESOURCE_NAME, ComponentTypeEnum.RESOURCE.getValue()),
545 verify(manager).auditEvent(factoryCaptor.capture());
546 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
548 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
549 verifyCommonDataForExternalApiEvent(event, false);
550 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
551 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
552 verifyDistributionDataForExternalApiEvent(event);
553 assertThat(event.getModifier()).isEqualTo("(" + USER_ID + ")");
554 assertThat(event.getInvariantUuid()).isNull();
555 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
556 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
560 public void auditExternalCreateResourceEventWhenResourceObjectIsNullAndRequestDataIsNotProvided() {
561 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
562 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
564 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(null);
565 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(null);
566 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
567 when(request.getRequestURI()).thenReturn(null);
569 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(ComponentTypeEnum.RESOURCE.getValue()),
572 verify(manager).auditEvent(factoryCaptor.capture());
573 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
575 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
576 verifyCommonDataForExternalApiEvent(event, false);
577 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
578 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
579 verifyDistributionDataNotSetForExternalApiEvent(event);
580 assertThat(event.getModifier()).isEmpty();
581 assertThat(event.getInvariantUuid()).isNull();
582 assertThat(event.getResourceName()).isNull();
583 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
587 public void auditExternalCreateResourceEventWhenResourceObjectAndRequestDataProvided() {
588 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
589 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
591 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(USER_ID);
592 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(DIST_CONSUMER_ID);
593 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
594 when(request.getRequestURI()).thenReturn(DIST_RESOURCE_URL);
596 Resource resource = new Resource();
597 resource.setName(RESOURCE_NAME);
598 resource.setInvariantUUID(INVARIANT_UUID);
599 resource.setUUID(SERVICE_INSTANCE_ID);
601 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(ComponentTypeEnum.RESOURCE.getValue()),
604 verify(manager).auditEvent(factoryCaptor.capture());
605 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
607 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
608 verifyCommonDataForExternalApiEvent(event, true);
609 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
610 verifyDistributionDataForExternalApiEvent(event);
611 assertThat(event.getCurrArtifactUuid()).isNull();
612 assertThat(event.getCurrState()).isEqualTo(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
613 assertThat(event.getCurrVersion()).isEqualTo(ImportUtils.Constants.FIRST_NON_CERTIFIED_VERSION);
614 assertThat(event.getModifier()).isEqualTo("(" + USER_ID + ")");
615 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
616 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
617 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
621 public void checkIfAuditEventIsExternal() {
622 assertThat(utils.isExternalApiEvent(AuditingActionEnum.ARTIFACT_UPLOAD_BY_API)).isTrue();
623 assertThat(utils.isExternalApiEvent(AuditingActionEnum.ARTIFACT_UPLOAD)).isFalse();