diff options
author | k.kazak <k.kazak@samsung.com> | 2019-02-19 09:06:56 +0100 |
---|---|---|
committer | k.kazak <k.kazak@samsung.com> | 2019-02-19 09:06:56 +0100 |
commit | fb5dd4e22d3793c9871542222cb6361c5e257f35 (patch) | |
tree | 316465617f90248a13df3da4d76c986799809a5a /bpmn/so-bpmn-tasks/src/test/java | |
parent | 2c46078b2731081fa79b4af0e22a39e6641010ee (diff) |
fix sonar potential nullpointer
AppcRunTasks: fix potential null pointer if vnf = null
AppcRunTasksTest: add tests for this case and the method itself
Change-Id: I63b37670541ef5ff31b03b0336d990677b753fc5
Issue-ID: SO-1516
Signed-off-by: k.kazak <k.kazak@samsung.com>
Diffstat (limited to 'bpmn/so-bpmn-tasks/src/test/java')
-rw-r--r-- | bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java | 120 |
1 files changed, 116 insertions, 4 deletions
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java index 114066aae3..7495cc1e8d 100644 --- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java +++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasksTest.java @@ -4,6 +4,8 @@ * ================================================================================ * Copyright (C) 2017 - 2018 AT&T Intellectual Property. All rights reserved. * ================================================================================ + * Modifications Copyright (c) 2019 Samsung + * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at @@ -20,19 +22,32 @@ package org.onap.so.bpmn.infrastructure.appc.tasks; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; +import static org.junit.Assert.assertEquals; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import org.junit.Test; +import org.mockito.InjectMocks; import org.onap.appc.client.lcm.model.Action; +import org.onap.so.bpmn.BaseTaskTest; import org.onap.so.bpmn.common.BuildingBlockExecution; +import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf; +import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule; +import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; +import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext; +import org.onap.so.client.exception.BBObjectNotFoundException; +import org.onap.so.db.catalog.beans.ControllerSelectionReference; -public class AppcRunTasksTest { +public class AppcRunTasksTest extends BaseTaskTest { - + @InjectMocks private AppcRunTasks appcRunTasks = new AppcRunTasks(); + @Test public void mapRollbackVariablesTest() { @@ -53,4 +68,101 @@ public class AppcRunTasksTest { appcRunTasks.mapRollbackVariables(mock, Action.ResumeTraffic, "0"); verify(mock, times(1)).setVariable("rollbackQuiesceTraffic", false); } + + @Test + public void runAppcCommandVnfNull() throws BBObjectNotFoundException { + execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "NULL-TEST"); + fillRequiredAppcExecutionFields(); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("NULL-TEST"))) + .thenReturn(null); + when(catalogDbClient.getControllerSelectionReferenceByVnfTypeAndActionCategory( + isNull(), eq(Action.Lock.toString()))). + thenThrow(new IllegalArgumentException("name or values is null")); + + appcRunTasks.runAppcCommand(execution, Action.Lock); + + // if vnf = null -> vnfType = null -> + // IllegalArgumentException will be thrown in catalogDbClient.getControllerSelectionReferenceByVnfTypeAndActionCategory + verify(exceptionUtil, times(1)). + buildAndThrowWorkflowException( + any(BuildingBlockExecution.class), eq(1002), eq("name or values is null")); + } + + @Test + public void runAppcCommandBBObjectNotFoundException() throws BBObjectNotFoundException { + execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "EXCEPTION-TEST"); + fillRequiredAppcExecutionFields(); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("EXCEPTION-TEST"))) + .thenThrow(new BBObjectNotFoundException()); + + appcRunTasks.runAppcCommand(execution, Action.Lock); + + verify(exceptionUtil, times(1)). + buildAndThrowWorkflowException( + any(BuildingBlockExecution.class), eq(7000), eq("No valid VNF exists")); + } + + @Test + public void runAppcCommandVfModuleNull() throws BBObjectNotFoundException { + execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "SUCCESS-TEST"); + fillRequiredAppcExecutionFields(); + GenericVnf genericVnf = getTestGenericVnf(); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("SUCCESS-TEST"))) + .thenReturn(genericVnf); + mockReferenceResponse(); + execution.getLookupMap().put(ResourceKey.VF_MODULE_ID, "VF-MODULE-ID-TEST"); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID), eq("VF-MODULE-ID-TEST"))) + .thenReturn(null); + when(appCClient.getErrorCode()).thenReturn("0"); + + appcRunTasks.runAppcCommand(execution, Action.Lock); + + assertEquals(true, execution.getVariable("rollbackVnfLock")); + } + + @Test + public void runAppcCommand() throws BBObjectNotFoundException { + execution.getLookupMap().put(ResourceKey.GENERIC_VNF_ID, "SUCCESS-TEST"); + fillRequiredAppcExecutionFields(); + GenericVnf genericVnf = getTestGenericVnf(); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.GENERIC_VNF_ID), eq("SUCCESS-TEST"))) + .thenReturn(genericVnf); + mockReferenceResponse(); + execution.getLookupMap().put(ResourceKey.VF_MODULE_ID, "VF-MODULE-ID-TEST"); + VfModule vfModule = new VfModule(); + vfModule.setVfModuleId("VF-MODULE-ID"); + when(extractPojosForBB.extractByKey(eq(execution), eq(ResourceKey.VF_MODULE_ID), eq("VF-MODULE-ID-TEST"))) + .thenReturn(vfModule); + when(appCClient.getErrorCode()).thenReturn("0"); + + appcRunTasks.runAppcCommand(execution, Action.Lock); + + assertEquals(true, execution.getVariable("rollbackVnfLock")); + } + + private void mockReferenceResponse() { + ControllerSelectionReference reference = new ControllerSelectionReference(); + reference.setControllerName("TEST-CONTROLLER-NAME"); + when(catalogDbClient.getControllerSelectionReferenceByVnfTypeAndActionCategory( + eq("TEST-VNF-TYPE"), eq(Action.Lock.toString()))).thenReturn(reference); + } + + private void fillRequiredAppcExecutionFields() { + RequestContext context = new RequestContext(); + context.setMsoRequestId("TEST-MSO-ID"); + execution.setVariable("aicIdentity", "AIC-TEST"); + execution.setVariable("vmIdList", "VM-ID-LIST-TEST"); + execution.setVariable("vserverIdList", "VSERVER-ID-LIST"); + execution.setVariable("identityUrl", "IDENTITY-URL-TEST"); + execution.getGeneralBuildingBlock().setRequestContext(context); + } + + private GenericVnf getTestGenericVnf() { + GenericVnf genericVnf = new GenericVnf(); + genericVnf.setVnfId("TEST-VNF-ID"); + genericVnf.setVnfType("TEST-VNF-TYPE"); + genericVnf.setVnfName("TEST-VNF-NAME"); + genericVnf.setIpv4OamAddress("129.0.0.1"); + return genericVnf; + } } |