2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.components.impl;
23 import org.junit.Before;
24 import org.junit.BeforeClass;
25 import org.junit.Test;
26 import org.junit.runner.RunWith;
27 import org.mockito.ArgumentCaptor;
28 import org.mockito.Captor;
29 import org.mockito.InjectMocks;
30 import org.mockito.Mock;
31 import org.mockito.junit.MockitoJUnitRunner;
32 import org.openecomp.sdc.be.auditing.api.AuditEventFactory;
33 import org.openecomp.sdc.be.auditing.impl.AuditingManager;
34 import org.openecomp.sdc.be.auditing.impl.externalapi.AuditChangeLifecycleExternalApiEventFactory;
35 import org.openecomp.sdc.be.auditing.impl.externalapi.AuditCreateResourceExternalApiEventFactory;
36 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
37 import org.openecomp.sdc.be.impl.ComponentsUtils;
38 import org.openecomp.sdc.be.model.*;
39 import org.openecomp.sdc.be.resources.data.auditing.*;
40 import org.openecomp.sdc.be.resources.data.auditing.model.DistributionData;
41 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceCommonInfo;
42 import org.openecomp.sdc.be.resources.data.auditing.model.ResourceVersionInfo;
43 import org.openecomp.sdc.common.api.Constants;
44 import org.openecomp.sdc.common.util.ThreadLocalsHolder;
45 import org.openecomp.sdc.exception.ResponseFormat;
47 import javax.servlet.http.HttpServletRequest;
49 import static org.assertj.core.api.Assertions.assertThat;
50 import static org.mockito.Mockito.verify;
51 import static org.mockito.Mockito.when;
52 import static org.openecomp.sdc.be.auditing.impl.AuditTestUtils.*;
54 @RunWith(MockitoJUnitRunner.class)
55 public class ComponentsUtilsTest {
57 private static User modifier = new User();
58 private Component service = new Service();
59 private Resource resource = new Resource();
62 private AuditingManager manager;
64 private ResponseFormat responseFormat;
66 private HttpServletRequest request;
68 private ArtifactDefinition artifactDefinition = null;
71 private ArgumentCaptor<AuditEventFactory> factoryCaptor;
74 private static ComponentsUtils utils;
77 public static void setUpClass() {
78 modifier.setFirstName(MODIFIER_FIRST_NAME);
79 modifier.setLastName(MODIFIER_LAST_NAME);
80 modifier.setUserId(MODIFIER_ID);
86 ThreadLocalsHolder.setUuid(REQUEST_ID);
87 utils = new ComponentsUtils(manager);
91 public void auditComponentWhenAllParamsPassed() {
92 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
93 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
94 service.setUUID(SERVICE_INSTANCE_ID);
95 service.setInvariantUUID(INVARIANT_UUID);
97 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.ARTIFACT_DELETE,
98 new ResourceCommonInfo(RESOURCE_NAME, service.getComponentType().getValue()),
99 ResourceVersionInfo.newBuilder()
100 .state(PREV_RESOURCE_STATE)
101 .version(PREV_RESOURCE_VERSION)
102 .artifactUuid(ARTIFACT_UUID)
103 .distributionStatus(DPREV_STATUS).build(),
104 ResourceVersionInfo.newBuilder()
105 .state(CURRENT_STATE)
106 .version(CURRENT_VERSION)
107 .artifactUuid(ARTIFACT_UUID)
108 .distributionStatus(DCURR_STATUS).build(),
109 COMMENT, artifactDefinition, DIST_ID);
110 verifyResourceAdminEvent(AuditingActionEnum.ARTIFACT_DELETE.getName(), STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
111 false, true, true, false, true, true, true);
115 public void auditComponentWhenAllParamsPassedAndMostFromComponent() {
116 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
117 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
119 service.setUUID(SERVICE_INSTANCE_ID);
120 service.setInvariantUUID(INVARIANT_UUID);
121 service.setState(LifecycleStateEnum.CERTIFIED);
122 service.setVersion(CURRENT_VERSION);
123 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.CREATE_RESOURCE,
124 new ResourceCommonInfo(RESOURCE_NAME, service.getComponentType().getValue()),
125 ResourceVersionInfo.newBuilder()
126 .state(PREV_RESOURCE_STATE)
127 .version(PREV_RESOURCE_VERSION)
128 .artifactUuid(ARTIFACT_UUID)
129 .distributionStatus(DPREV_STATUS).build(),
130 ResourceVersionInfo.newBuilder()
131 .artifactUuid(ARTIFACT_UUID)
132 .distributionStatus(DCURR_STATUS).build(),
133 COMMENT, artifactDefinition, DIST_ID);
134 verifyResourceAdminEvent(AuditingActionEnum.CREATE_RESOURCE.getName(), STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
135 false, true, true, false, true, true, true);
140 public void auditComponentDistStateWithoutArtDataCommentAndDid() {
141 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
142 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
144 service.setUUID(SERVICE_INSTANCE_ID);
145 service.setInvariantUUID(INVARIANT_UUID);
146 service.setState(LifecycleStateEnum.CERTIFIED);
147 service.setName(RESOURCE_NAME);
148 service.setVersion(CURRENT_VERSION);
149 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.DISTRIBUTION_STATE_CHANGE_REQUEST,
150 new ResourceCommonInfo(service.getComponentType().getValue()),
151 ResourceVersionInfo.newBuilder()
152 .state(PREV_RESOURCE_STATE)
153 .version(PREV_RESOURCE_VERSION)
154 .artifactUuid(ARTIFACT_UUID)
155 .distributionStatus(DPREV_STATUS).build(),
156 ResourceVersionInfo.newBuilder()
157 .artifactUuid(ARTIFACT_UUID)
158 .distributionStatus(DCURR_STATUS).build());
159 verifyResourceAdminEvent(AuditingActionEnum.DISTRIBUTION_STATE_CHANGE_REQUEST.getName(),
160 STATUS_OK, DESCRIPTION, service.getComponentType().getValue(),
161 false, true, true, false, false, true, false);
165 public void auditComponentWhenError() {
166 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
167 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
169 service.setUUID(SERVICE_INSTANCE_ID);
170 service.setInvariantUUID(INVARIANT_UUID);
171 service.setState(LifecycleStateEnum.CERTIFIED);
172 service.setName(RESOURCE_NAME);
173 service.setVersion(CURRENT_VERSION);
175 utils.auditComponent(responseFormat, modifier, service, AuditingActionEnum.CERTIFICATION_REQUEST_RESOURCE,
176 new ResourceCommonInfo(ComponentTypeEnum.SERVICE.getValue()),
177 ResourceVersionInfo.newBuilder().state(PREV_RESOURCE_STATE).version(PREV_RESOURCE_VERSION).artifactUuid(ARTIFACT_UUID).build());
178 verifyResourceAdminEvent(AuditingActionEnum.CERTIFICATION_REQUEST_RESOURCE.getName(), STATUS_500, DESC_ERROR,
179 service.getComponentType().getValue(), false, true, false, false, false, false, false);
183 public void auditComponentWhenCompIsNull() {
184 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
185 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
187 utils.auditComponent(responseFormat, modifier, AuditingActionEnum.START_CERTIFICATION_RESOURCE,
188 new ResourceCommonInfo(RESOURCE_NAME, ComponentTypeEnum.SERVICE.getValue()), COMMENT);
189 verifyResourceAdminEvent(AuditingActionEnum.START_CERTIFICATION_RESOURCE.getName(), STATUS_500, DESC_ERROR, service.getComponentType().getValue(),
190 true, false, false, false, true, false, false);
194 public void auditComponentAdmin() {
195 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
196 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
198 service.setUUID(SERVICE_INSTANCE_ID);
199 service.setInvariantUUID(INVARIANT_UUID);
200 service.setName(RESOURCE_NAME);
201 service.setState(LifecycleStateEnum.CERTIFIED);
202 service.setVersion(CURRENT_VERSION);
203 utils.auditComponentAdmin(responseFormat, modifier, service, AuditingActionEnum.CREATE_RESOURCE, service.getComponentType());
204 verifyResourceAdminEvent(AuditingActionEnum.CREATE_RESOURCE.getName(), STATUS_500, DESC_ERROR, service.getComponentType().getValue(),
205 false, false, false, false, false, false, false);
209 public void auditResourceWhenAllParamsPassed() {
210 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
211 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
213 resource.setUUID(SERVICE_INSTANCE_ID);
214 resource.setInvariantUUID(INVARIANT_UUID);
215 resource.setName(RESOURCE_NAME);
216 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
217 resource.setVersion(CURRENT_VERSION);
218 resource.setToscaResourceName(TOSCA_NODE_TYPE);
219 utils.auditResource(responseFormat, modifier, resource, null, AuditingActionEnum.IMPORT_RESOURCE,
220 ResourceVersionInfo.newBuilder()
221 .state(PREV_RESOURCE_STATE)
222 .version(PREV_RESOURCE_VERSION)
223 .artifactUuid(ARTIFACT_UUID)
225 ARTIFACT_UUID, artifactDefinition);
226 verifyResourceAdminEvent(AuditingActionEnum.IMPORT_RESOURCE.getName(), STATUS_OK, DESCRIPTION, resource.getResourceType().name(),
227 false, true, true, false, false, false, false);
231 public void auditResourceWithoutPrevFields() {
232 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
233 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
235 resource.setUUID(SERVICE_INSTANCE_ID);
236 resource.setInvariantUUID(INVARIANT_UUID);
237 resource.setName(RESOURCE_NAME);
238 resource.setLifecycleState(LifecycleStateEnum.CERTIFIED);
239 resource.setVersion(CURRENT_VERSION);
241 utils.auditResource(responseFormat, modifier, resource, AuditingActionEnum.UPDATE_RESOURCE_METADATA);
242 verifyResourceAdminEvent(AuditingActionEnum.UPDATE_RESOURCE_METADATA.getName(), STATUS_500, DESC_ERROR, resource.getResourceType().name(),
243 false, false, false, false, false, false, false);
247 public void auditResourceWhenResourceIsNull() {
248 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
249 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
251 utils.auditResource(responseFormat, modifier, RESOURCE_NAME, AuditingActionEnum.CHECKOUT_RESOURCE);
252 verifyResourceAdminEvent(AuditingActionEnum.CHECKOUT_RESOURCE.getName(), STATUS_500, DESC_ERROR, ComponentTypeEnum.RESOURCE.getValue(),
253 true, false, false, false, false, false, false);
257 public void auditUserAdminEvent() {
258 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
259 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
261 User userAfter = new User();
262 userAfter.setFirstName(USER_FIRST_NAME);
263 userAfter.setUserId(USER_ID);
264 userAfter.setLastName(USER_LAST_NAME);
265 userAfter.setRole(TESTER_USER_ROLE);
266 userAfter.setEmail(USER_EMAIL);
268 utils.auditAdminUserAction(AuditingActionEnum.ADD_USER, modifier, null, userAfter, responseFormat);
269 verify(manager).auditEvent(factoryCaptor.capture());
270 AuditEventFactory factory = factoryCaptor.getValue();
271 UserAdminEvent event = (UserAdminEvent)factory.getDbEvent();
272 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
273 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
274 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
275 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
276 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.ADD_USER.getName());
277 assertThat(event.getUserBefore()).isNull();
278 assertThat(event.getUserAfter()).isEqualTo(UPDATED_USER_EXTENDED_NAME);
282 public void auditEcompOpEnvEvent() {
283 utils.auditEnvironmentEngine(AuditingActionEnum.CREATE_ENVIRONMENT, OP_ENV_ID, OP_ENV_TYPE, OP_ENV_ACTION, OP_ENV_NAME, TENANT_CONTEXT);
284 verify(manager).auditEvent(factoryCaptor.capture());
285 AuditEventFactory factory = factoryCaptor.getValue();
286 EcompOperationalEnvironmentEvent event = (EcompOperationalEnvironmentEvent)factory.getDbEvent();
287 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CREATE_ENVIRONMENT.getName());
288 assertThat(event.getOperationalEnvironmentId()).isEqualTo(OP_ENV_ID);
289 assertThat(event.getOperationalEnvironmentType()).isEqualTo(OP_ENV_TYPE);
290 assertThat(event.getOperationalEnvironmentName()).isEqualTo(OP_ENV_NAME);
291 assertThat(event.getOperationalEnvironmentAction()).isEqualTo(OP_ENV_ACTION);
292 assertThat(event.getTenantContext()).isEqualTo(TENANT_CONTEXT);
296 public void auditDistrDownloadEvent(){
297 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
298 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
300 utils.auditDistributionDownload(responseFormat, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL));
302 verify(manager).auditEvent(factoryCaptor.capture());
303 AuditEventFactory factory = factoryCaptor.getValue();
304 DistributionDownloadEvent event = (DistributionDownloadEvent)factory.getDbEvent();
305 assertThat(event.getResourceUrl()).isEqualTo(DIST_RESOURCE_URL);
306 assertThat(event.getConsumerId()).isEqualTo(DIST_CONSUMER_ID);
307 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
308 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
309 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
310 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.DISTRIBUTION_ARTIFACT_DOWNLOAD.getName());
313 private void verifyResourceAdminEvent(String action, String status, String desc, String resourceType, boolean isComponentNull,
314 boolean isPrevStateAndVersionSet, boolean isCurrFieldsProvided, boolean isArtDataProvided, boolean isCommentProvided,
315 boolean isDistStatusProvided, boolean isDidProvided) {
316 verify(manager).auditEvent(factoryCaptor.capture());
317 AuditEventFactory factory = factoryCaptor.getValue();
318 ResourceAdminEvent event = (ResourceAdminEvent)factory.getDbEvent();
319 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
320 assertThat(event.getStatus()).isEqualTo(status);
321 assertThat(event.getDesc()).isEqualTo(desc);
322 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
323 assertThat(event.getAction()).isEqualTo(action);
324 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
326 if (isComponentNull) {
327 assertThat(event.getServiceInstanceId()).isNull();
328 assertThat(event.getCurrState()).isNull();
329 assertThat(event.getCurrVersion()).isNull();
330 assertThat(event.getInvariantUUID()).isNull();
331 assertThat(event.getResourceType()).isEqualTo(resourceType);
334 assertThat(event.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
335 assertThat(event.getCurrState()).isEqualTo(CURRENT_STATE);
336 assertThat(event.getCurrVersion()).isEqualTo(CURRENT_VERSION);
337 assertThat(event.getInvariantUUID()).isEqualTo(INVARIANT_UUID);
339 if (action.equals(AuditingActionEnum.IMPORT_RESOURCE.getName())) {
340 assertThat(event.getToscaNodeType()).isEqualTo(TOSCA_NODE_TYPE);
343 assertThat(event.getToscaNodeType()).isEmpty();
345 if (isPrevStateAndVersionSet) {
346 assertThat(event.getPrevState()).isEqualTo(PREV_RESOURCE_STATE);
347 assertThat(event.getPrevVersion()).isEqualTo(PREV_RESOURCE_VERSION);
348 assertThat(event.getPrevArtifactUUID()).isEqualTo(ARTIFACT_UUID);
351 assertThat(event.getPrevState()).isNull();
352 assertThat(event.getPrevVersion()).isNull();
353 assertThat(event.getPrevArtifactUUID()).isNull();
355 if (isCurrFieldsProvided) {
356 assertThat(event.getCurrArtifactUUID()).isEqualTo(ARTIFACT_UUID);
359 assertThat(event.getCurrArtifactUUID()).isNull();
361 if (isArtDataProvided) {
362 assertThat(event.getArtifactData()).isEqualTo(ARTIFACT_DATA);
365 assertThat(event.getArtifactData()).isEmpty();
368 assertThat(event.getDid()).isEqualTo(DIST_ID);
371 assertThat(event.getDid()).isNull();
373 if (isCommentProvided) {
374 assertThat(event.getComment()).isEqualTo(COMMENT);
377 assertThat(event.getComment()).isEmpty();
379 if (isDistStatusProvided) {
380 assertThat(event.getDcurrStatus()).isEqualTo(DCURR_STATUS);
381 assertThat(event.getDprevStatus()).isEqualTo(DPREV_STATUS);
384 assertThat(event.getDcurrStatus()).isNull();
385 assertThat(event.getDprevStatus()).isNull();
390 public void auditChangeLifeCycleExternalApiEventWhenComponentAndResponseObjectAreNull() {
391 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
392 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
394 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
395 null, null, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
397 verify(manager).auditEvent(factoryCaptor.capture());
398 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
400 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
401 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
402 verifyCommonDataForExternalApiEvent(event, false);
403 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
404 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
405 verifyDistributionDataForExternalApiEvent(event);
406 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
407 assertThat(event.getInvariantUuid()).isEmpty();
408 assertThat(event.getResourceName()).isNull();
409 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
413 public void auditChangeLifeCycleExternalApiEventWhenComponentIsNullAndResponseObjectIsNotNull() {
414 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
415 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
416 Component responseObject = new Resource();
417 responseObject.setVersion(CURRENT_VERSION);
418 responseObject.setState(LifecycleStateEnum.CERTIFIED);
419 responseObject.setInvariantUUID(INVARIANT_UUID);
420 responseObject.setUUID(SERVICE_INSTANCE_ID);
422 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
423 null, responseObject, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
425 verify(manager).auditEvent(factoryCaptor.capture());
426 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
428 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
429 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
430 verifyCommonDataForExternalApiEvent(event, true);
431 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
432 verifyCurrentResourceVersionInfoForExternalApiEvent(event, false);
433 verifyDistributionDataForExternalApiEvent(event);
434 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
435 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
436 assertThat(event.getResourceName()).isNull();
437 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
441 public void auditChangeLifeCycleExternalApiEventWhenComponentIsNotNullAndResponseObjectIsNull() {
442 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
443 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
444 Component component = new Resource();
445 component.setVersion(PREV_RESOURCE_VERSION);
446 component.setState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
447 component.setInvariantUUID(INVARIANT_UUID);
448 component.setName(RESOURCE_NAME);
450 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
451 component, null, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
453 verify(manager).auditEvent(factoryCaptor.capture());
454 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
456 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
457 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
459 verifyCommonDataForExternalApiEvent(event, false);
460 verifyPreviousResourceVersionInfoForExternalApiEvent(event, false);
461 verifyDistributionDataForExternalApiEvent(event);
462 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
463 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
464 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
465 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
469 public void auditChangeLifeCycleExternalApiEventWhenComponentAndResponseObjectAreNotNull() {
470 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
471 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
472 Component responseObject = new Resource();
473 responseObject.setVersion(CURRENT_VERSION);
474 responseObject.setState(LifecycleStateEnum.CERTIFIED);
475 responseObject.setInvariantUUID(INVARIANT_UUID);
476 responseObject.setUUID(SERVICE_INSTANCE_ID);
478 Component component = new Resource();
479 component.setVersion(PREV_RESOURCE_VERSION);
480 component.setState(LifecycleStateEnum.READY_FOR_CERTIFICATION);
481 component.setInvariantUUID(INVARIANT_UUID);
482 component.setUUID(SERVICE_INSTANCE_ID);
483 component.setName(RESOURCE_NAME);
485 utils.auditChangeLifecycleAction(responseFormat, ComponentTypeEnum.RESOURCE, REQUEST_ID,
486 null, responseObject, new DistributionData(DIST_CONSUMER_ID, DIST_RESOURCE_URL), modifier);
488 verify(manager).auditEvent(factoryCaptor.capture());
489 AuditChangeLifecycleExternalApiEventFactory factory = (AuditChangeLifecycleExternalApiEventFactory)factoryCaptor.getValue();
491 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
492 assertThat(event.getAction()).isEqualTo(AuditingActionEnum.CHANGE_LIFECYCLE_BY_API.getName());
493 verifyCommonDataForExternalApiEvent(event, true);
494 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
495 verifyCurrentResourceVersionInfoForExternalApiEvent(event, false);
496 verifyDistributionDataForExternalApiEvent(event);
497 assertThat(event.getModifier()).isEqualTo(MODIFIER_UID);
498 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
499 assertThat(event.getResourceName()).isNull();
500 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
504 private void verifyDistributionDataForExternalApiEvent(ExternalApiEvent event) {
505 assertThat(event.getConsumerId()).isEqualTo(DIST_CONSUMER_ID);
506 assertThat(event.getResourceURL()).isEqualTo(DIST_RESOURCE_URL);
509 private void verifyDistributionDataNotSetForExternalApiEvent(ExternalApiEvent event) {
510 assertThat(event.getConsumerId()).isNull();
511 assertThat(event.getResourceURL()).isNull();
514 private void verifyCommonDataForExternalApiEvent(ExternalApiEvent event, boolean isSucceeded) {
516 assertThat(event.getDesc()).isEqualTo(DESCRIPTION);
517 assertThat(event.getStatus()).isEqualTo(STATUS_OK);
518 assertThat(event.getServiceInstanceId()).isEqualTo(SERVICE_INSTANCE_ID);
521 assertThat(event.getDesc()).isEqualTo(DESC_ERROR);
522 assertThat(event.getStatus()).isEqualTo(STATUS_500);
523 assertThat(event.getServiceInstanceId()).isNullOrEmpty();
525 assertThat(event.getRequestId()).isEqualTo(REQUEST_ID);
528 private void verifyCurrentResourceVersionInfoForExternalApiEvent(ExternalApiEvent event, boolean isNull) {
529 assertThat(event.getCurrArtifactUuid()).isNull();
531 assertThat(event.getCurrState()).isNull();
532 assertThat(event.getCurrVersion()).isNull();
535 assertThat(event.getCurrState()).isEqualTo(LifecycleStateEnum.CERTIFIED.name());
536 assertThat(event.getCurrVersion()).isEqualTo(CURRENT_VERSION);
540 private void verifyPreviousResourceVersionInfoForExternalApiEvent(ExternalApiEvent event, boolean isNull) {
541 assertThat(event.getPrevArtifactUuid()).isNull();
543 assertThat(event.getPrevState()).isNull();
544 assertThat(event.getPrevVersion()).isNull();
547 assertThat(event.getPrevState()).isEqualTo(LifecycleStateEnum.READY_FOR_CERTIFICATION.name());
548 assertThat(event.getPrevVersion()).isEqualTo(PREV_RESOURCE_VERSION);
553 public void auditExternalCreateResourceEventWhenResourceObjectIsNull() {
554 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
555 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
557 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(USER_ID);
558 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(DIST_CONSUMER_ID);
559 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
560 when(request.getRequestURI()).thenReturn(DIST_RESOURCE_URL);
562 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(RESOURCE_NAME, ComponentTypeEnum.RESOURCE.getValue()),
565 verify(manager).auditEvent(factoryCaptor.capture());
566 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
568 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
569 verifyCommonDataForExternalApiEvent(event, false);
570 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
571 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
572 verifyDistributionDataForExternalApiEvent(event);
573 assertThat(event.getModifier()).isEqualTo("(" + USER_ID + ")");
574 assertThat(event.getInvariantUuid()).isNull();
575 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
576 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
580 public void auditExternalCreateResourceEventWhenResourceObjectIsNullAndRequestDataIsNotProvided() {
581 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_500));
582 when(responseFormat.getFormattedMessage()).thenReturn(DESC_ERROR);
584 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(null);
585 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(null);
586 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
587 when(request.getRequestURI()).thenReturn(null);
589 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(ComponentTypeEnum.RESOURCE.getValue()),
592 verify(manager).auditEvent(factoryCaptor.capture());
593 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
595 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
596 verifyCommonDataForExternalApiEvent(event, false);
597 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
598 verifyCurrentResourceVersionInfoForExternalApiEvent(event, true);
599 verifyDistributionDataNotSetForExternalApiEvent(event);
600 assertThat(event.getModifier()).isEmpty();
601 assertThat(event.getInvariantUuid()).isNull();
602 assertThat(event.getResourceName()).isNull();
603 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
607 public void auditExternalCreateResourceEventWhenResourceObjectAndRequestDataProvided() {
608 when(responseFormat.getStatus()).thenReturn(Integer.valueOf(STATUS_OK));
609 when(responseFormat.getFormattedMessage()).thenReturn(DESCRIPTION);
611 when(request.getHeader(Constants.USER_ID_HEADER)).thenReturn(USER_ID);
612 when(request.getHeader(Constants.X_ECOMP_INSTANCE_ID_HEADER)).thenReturn(DIST_CONSUMER_ID);
613 when(request.getHeader(Constants.X_ECOMP_REQUEST_ID_HEADER)).thenReturn(REQUEST_ID);
614 when(request.getRequestURI()).thenReturn(DIST_RESOURCE_URL);
616 Resource resource = new Resource();
617 resource.setName(RESOURCE_NAME);
618 resource.setInvariantUUID(INVARIANT_UUID);
619 resource.setUUID(SERVICE_INSTANCE_ID);
621 utils.auditCreateResourceExternalApi(responseFormat, new ResourceCommonInfo(ComponentTypeEnum.RESOURCE.getValue()),
624 verify(manager).auditEvent(factoryCaptor.capture());
625 AuditCreateResourceExternalApiEventFactory factory = (AuditCreateResourceExternalApiEventFactory)factoryCaptor.getValue();
627 ExternalApiEvent event = (ExternalApiEvent)factory.getDbEvent();
628 verifyCommonDataForExternalApiEvent(event, true);
629 verifyPreviousResourceVersionInfoForExternalApiEvent(event, true);
630 verifyDistributionDataForExternalApiEvent(event);
631 assertThat(event.getCurrArtifactUuid()).isNull();
632 assertThat(event.getCurrState()).isEqualTo(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
633 assertThat(event.getCurrVersion()).isEqualTo(ImportUtils.Constants.FIRST_NON_CERTIFIED_VERSION);
634 assertThat(event.getModifier()).isEqualTo("(" + USER_ID + ")");
635 assertThat(event.getInvariantUuid()).isEqualTo(INVARIANT_UUID);
636 assertThat(event.getResourceName()).isEqualTo(RESOURCE_NAME);
637 assertThat(event.getResourceType()).isEqualTo(ComponentTypeEnum.RESOURCE.getValue());
641 public void checkIfAuditEventIsExternal() {
642 assertThat(utils.isExternalApiEvent(AuditingActionEnum.ARTIFACT_UPLOAD_BY_API)).isTrue();
643 assertThat(utils.isExternalApiEvent(AuditingActionEnum.ARTIFACT_UPLOAD)).isFalse();