blob: d7333a9da111475c362d90530fe28003445c622f [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
package com.cloud.network.vpc;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.times;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.ServerApiException;
import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd;
import org.apache.cloudstack.api.command.user.network.MoveNetworkAclItemCmd;
import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLItemCmd;
import org.apache.cloudstack.api.command.user.network.UpdateNetworkACLListCmd;
import org.apache.cloudstack.context.CallContext;
import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InOrder;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.Spy;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.ResourceUnavailableException;
import com.cloud.network.Network;
import com.cloud.network.NetworkModel;
import com.cloud.network.dao.NetworkVO;
import com.cloud.network.vpc.NetworkACLItem.Action;
import com.cloud.network.vpc.NetworkACLItem.TrafficType;
import com.cloud.network.vpc.dao.NetworkACLDao;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.User;
import com.cloud.utils.db.EntityManager;
import com.cloud.utils.exception.CloudRuntimeException;
@RunWith(PowerMockRunner.class)
@PrepareForTest(CallContext.class)
public class NetworkACLServiceImplTest {
@Spy
@InjectMocks
private NetworkACLServiceImpl networkAclServiceImpl = new NetworkACLServiceImpl();
@Mock
private NetworkModel networkModelMock;
@Mock
private NetworkACLManager networkAclManagerMock;
@Mock
private NetworkACLItemDao networkAclItemDaoMock;
@Mock
private EntityManager entityManagerMock;
@Mock
private AccountManager accountManagerMock;
@Mock
private NetworkACLDao networkAclDaoMock;
@Mock
private CreateNetworkACLCmd createNetworkAclCmdMock;
@Mock
private UpdateNetworkACLItemCmd updateNetworkACLItemCmdMock;
@Mock
private Network networkMock;
@Mock
private NetworkACLVO networkAclMock;
@Mock
private NetworkACLItemVO networkAclItemVoMock;
@Mock
private NetworkACLVO networkACLVOMock;
@Mock
private UpdateNetworkACLListCmd updateNetworkACLListCmdMock;
private Long networkAclMockId = 1L;
private Long networkOfferingMockId = 2L;
private Long networkMockVpcMockId = 3L;
private long networkAclListId = 1l;
@Mock
private MoveNetworkAclItemCmd moveNetworkAclItemCmdMock;
@Mock
private NetworkACLItemVO aclRuleBeingMovedMock;
private String uuidAclRuleBeingMoved = "uuidRuleBeingMoved";
@Mock
private NetworkACLItemVO previousAclRuleMock;
private String previousAclRuleUuid = "uuidPreviousAclRule";
@Mock
private NetworkACLItemVO nextAclRuleMock;
private String nextAclRuleUuid = "uuidNextAclRule";
@Mock
private CallContext callContextMock;
@Before
public void befoteTest() {
PowerMockito.mockStatic(CallContext.class);
PowerMockito.when(CallContext.current()).thenReturn(callContextMock);
Mockito.doReturn(Mockito.mock(User.class)).when(callContextMock).getCallingUser();
Mockito.doReturn(Mockito.mock(Account.class)).when(callContextMock).getCallingAccount();
Mockito.when(networkAclDaoMock.findById(networkAclListId)).thenReturn(networkACLVOMock);
Mockito.when(createNetworkAclCmdMock.getNetworkId()).thenReturn(1L);
Mockito.when(createNetworkAclCmdMock.getProtocol()).thenReturn("tcp");
Mockito.when(networkMock.getNetworkOfferingId()).thenReturn(networkOfferingMockId);
Mockito.when(networkMock.getVpcId()).thenReturn(networkMockVpcMockId);
Mockito.when(moveNetworkAclItemCmdMock.getUuidRuleBeingMoved()).thenReturn(uuidAclRuleBeingMoved);
Mockito.when(aclRuleBeingMovedMock.getUuid()).thenReturn(uuidAclRuleBeingMoved);
Mockito.when(aclRuleBeingMovedMock.getAclId()).thenReturn(networkAclMockId);
Mockito.when(previousAclRuleMock.getUuid()).thenReturn(previousAclRuleUuid);
Mockito.when(nextAclRuleMock.getUuid()).thenReturn(nextAclRuleUuid);
Mockito.when(networkAclMock.getVpcId()).thenReturn(networkMockVpcMockId);
}
@Test
public void createNetworkACLItemTestAclNumberNull() {
createNetworkACLItemTestForNumberAndExecuteTest(null);
}
@Test
public void createNetworkACLItemTestAclNumberNotNull() {
createNetworkACLItemTestForNumberAndExecuteTest(10);
}
private void createNetworkACLItemTestForNumberAndExecuteTest(Integer number) {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(number);
Mockito.doReturn(networkAclMockId).when(networkAclServiceImpl).createAclListIfNeeded(createNetworkAclCmdMock);
Mockito.when(networkAclManagerMock.getNetworkACL(networkAclMockId)).thenReturn(networkAclMock);
Mockito.doNothing().when(networkAclServiceImpl).validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
Mockito.doNothing().when(networkAclServiceImpl).validateNetworkAcl(networkAclMock);
Mockito.doReturn(Action.Allow).when(networkAclServiceImpl).validateAndCreateNetworkAclRuleAction(anyString());
Mockito.when(networkAclItemDaoMock.getMaxNumberByACL(networkAclMockId)).thenReturn(5);
Mockito.doNothing().when(networkAclServiceImpl).validateNetworkACLItem(Mockito.any(NetworkACLItemVO.class));
Mockito.when(networkAclManagerMock.createNetworkACLItem(Mockito.any(NetworkACLItemVO.class))).thenAnswer(new Answer<NetworkACLItemVO>() {
@Override
public NetworkACLItemVO answer(InvocationOnMock invocation) throws Throwable {
return (NetworkACLItemVO)invocation.getArguments()[0];
}
});
NetworkACLItem netowkrAclRuleCreated = networkAclServiceImpl.createNetworkACLItem(createNetworkAclCmdMock);
Assert.assertEquals(number == null ? 6 : number, netowkrAclRuleCreated.getNumber());
InOrder inOrder = Mockito.inOrder( networkAclServiceImpl, networkAclManagerMock, networkAclItemDaoMock);
inOrder.verify(networkAclServiceImpl).createAclListIfNeeded(createNetworkAclCmdMock);
inOrder.verify(networkAclManagerMock).getNetworkACL(networkAclMockId);
inOrder.verify(networkAclServiceImpl).validateNetworkAcl(networkAclMock);
inOrder.verify(networkAclServiceImpl).validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
inOrder.verify(networkAclServiceImpl).validateAndCreateNetworkAclRuleAction(nullable(String.class));
inOrder.verify(networkAclItemDaoMock, Mockito.times(number == null ? 1 : 0)).getMaxNumberByACL(networkAclMockId);
inOrder.verify(networkAclServiceImpl).validateNetworkACLItem(Mockito.any(NetworkACLItemVO.class));
inOrder.verify(networkAclManagerMock).createNetworkACLItem(Mockito.any(NetworkACLItemVO.class));
}
@Test
public void createAclListIfNeededTestAclRuleListIdNotNull() {
Long expectedAclListId = 1L;
Mockito.when(createNetworkAclCmdMock.getACLId()).thenReturn(expectedAclListId);
Long returnetAclListId = networkAclServiceImpl.createAclListIfNeeded(createNetworkAclCmdMock);
Assert.assertEquals(expectedAclListId, returnetAclListId);
}
@Test(expected = InvalidParameterValueException.class)
public void createAclListIfNeededTestAclRuleListIdNullAndNetworkDoesNotHaveVpc() {
Mockito.when(createNetworkAclCmdMock.getACLId()).thenReturn(null);
long networkId = 1L;
Mockito.when(createNetworkAclCmdMock.getNetworkId()).thenReturn(networkId);
Network networkMock = Mockito.mock(Network.class);
Mockito.when(networkMock.getVpcId()).thenReturn(null);
Mockito.doReturn(networkMock).when(networkModelMock).getNetwork(networkId);
networkAclServiceImpl.createAclListIfNeeded(createNetworkAclCmdMock);
}
@Test
public void createAclListIfNeededTestAclRuleListIdNullAndNetworkWithVpcAndNotAclListYet() {
Mockito.when(createNetworkAclCmdMock.getACLId()).thenReturn(null);
long networkId = 1L;
Mockito.when(createNetworkAclCmdMock.getNetworkId()).thenReturn(networkId);
Network networkMock = Mockito.mock(Network.class);
Mockito.when(networkMock.getVpcId()).thenReturn(12L);
Mockito.when(networkMock.getNetworkACLId()).thenReturn(null);
Mockito.doReturn(networkMock).when(networkModelMock).getNetwork(networkId);
Long expectedAclListId = 15L;
Mockito.doReturn(expectedAclListId).when(networkAclServiceImpl).createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
Long aclIdReturned = networkAclServiceImpl.createAclListIfNeeded(createNetworkAclCmdMock);
Assert.assertEquals(expectedAclListId, aclIdReturned);
Mockito.verify(networkAclServiceImpl).createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
}
@Test
public void createAclListIfNeededTestAclRuleListIdNullAndNetworkWithVpcAndAclListAlreadyCreated() {
Mockito.when(createNetworkAclCmdMock.getACLId()).thenReturn(null);
long networkId = 1L;
Mockito.when(createNetworkAclCmdMock.getNetworkId()).thenReturn(networkId);
Network networkMock = Mockito.mock(Network.class);
;
Mockito.when(networkMock.getVpcId()).thenReturn(12L);
Long expectedAclListId = 15L;
Mockito.when(networkMock.getNetworkACLId()).thenReturn(expectedAclListId);
Mockito.doReturn(networkMock).when(networkModelMock).getNetwork(networkId);
Mockito.doReturn(16L).when(networkAclServiceImpl).createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
Long aclIdReturned = networkAclServiceImpl.createAclListIfNeeded(createNetworkAclCmdMock);
Assert.assertEquals(expectedAclListId, aclIdReturned);
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
}
@Test(expected = InvalidParameterValueException.class)
public void createAclListForNetworkAndReturnAclListIdTestServicesNotSupportedByNetworkOffering() {
Mockito.doReturn(false).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
}
@Test(expected = InvalidParameterValueException.class)
public void createAclListForNetworkAndReturnAclListIdTestServicesSupportedByNetworkOfferingButVpcNotFound() {
Mockito.doReturn(true).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
Mockito.doReturn(null).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
}
@Test(expected = CloudRuntimeException.class)
public void createAclListForNetworkAndReturnAclListIdTestCreateNetworkAclReturnsNull() {
Mockito.doReturn(true).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.doReturn(null).when(networkAclManagerMock).createNetworkACL(Mockito.anyString(), Mockito.anyString(), Mockito.anyLong(), Mockito.anyBoolean());
networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkMock);
}
@Test(expected = CloudRuntimeException.class)
public void createAclListForNetworkAndReturnAclListIdTestAclNetworkIsCreatedButNotApplied() throws ResourceUnavailableException {
Mockito.doReturn(true).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.doReturn(Mockito.mock(NetworkACL.class)).when(networkAclManagerMock).createNetworkACL(Mockito.anyString(), Mockito.anyString(), Mockito.anyLong(), Mockito.anyBoolean());
Mockito.doReturn(false).when(networkAclManagerMock).replaceNetworkACL(Mockito.any(NetworkACL.class), Mockito.any(NetworkVO.class));
NetworkVO networkVoMock = new NetworkVO();
networkVoMock.setNetworkOfferingId(networkOfferingMockId);
networkVoMock.setVpcId(networkMockVpcMockId);
networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkVoMock);
}
@Test(expected = CloudRuntimeException.class)
public void createAclListForNetworkAndReturnAclListIdTestAclNetworkIsCreatedButNotAppliedWithException() throws ResourceUnavailableException {
Mockito.doReturn(true).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.doReturn(Mockito.mock(NetworkACL.class)).when(networkAclManagerMock).createNetworkACL(Mockito.anyString(), Mockito.anyString(), Mockito.anyLong(), Mockito.anyBoolean());
Mockito.doThrow(ResourceUnavailableException.class).when(networkAclManagerMock).replaceNetworkACL(Mockito.any(NetworkACL.class), Mockito.any(NetworkVO.class));
NetworkVO networkVoMock = new NetworkVO();
networkVoMock.setNetworkOfferingId(networkOfferingMockId);
networkVoMock.setVpcId(networkMockVpcMockId);
networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkVoMock);
}
@Test
public void createAclListForNetworkAndReturnAclListIdTestAclIsCreatedAndAppliedWithSuccess() throws ResourceUnavailableException {
Mockito.doReturn(true).when(networkModelMock).areServicesSupportedByNetworkOffering(networkOfferingMockId, Network.Service.NetworkACL);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
NetworkACL networkAclMock = Mockito.mock(NetworkACL.class);
Long expectedNetworkAclId = 5L;
Mockito.when(networkAclMock.getId()).thenReturn(expectedNetworkAclId);
Mockito.doReturn(networkAclMock).when(networkAclManagerMock).createNetworkACL(Mockito.anyString(), Mockito.anyString(), Mockito.anyLong(), Mockito.anyBoolean());
Mockito.doReturn(true).when(networkAclManagerMock).replaceNetworkACL(Mockito.any(NetworkACL.class), Mockito.any(NetworkVO.class));
NetworkVO networkVoMock = new NetworkVO();
networkVoMock.setNetworkOfferingId(networkOfferingMockId);
networkVoMock.setVpcId(networkMockVpcMockId);
Long networkAclIdReceived = networkAclServiceImpl.createAclListForNetworkAndReturnAclListId(createNetworkAclCmdMock, networkVoMock);
Assert.assertEquals(expectedNetworkAclId, networkAclIdReceived);
}
@Test(expected = InvalidParameterValueException.class)
public void validateAclRuleNumberTestNumberLessThanOne() {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(0);
networkAclServiceImpl.validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateAclRuleNumberTestNumberNegative() {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(-1);
networkAclServiceImpl.validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateAclRuleNumberTestNumberInOtherAcl() {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(1);
Mockito.doReturn(Mockito.mock(NetworkACLItemVO.class)).when(networkAclItemDaoMock).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
networkAclServiceImpl.validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
Mockito.verify(networkAclItemDaoMock).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
}
@Test
public void validateAclRuleNumberTestHappyDay() {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(1);
Mockito.doReturn(null).when(networkAclItemDaoMock).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
networkAclServiceImpl.validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
Mockito.verify(networkAclItemDaoMock).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
}
@Test
public void validateAclRuleNumberTestNumberNull() {
Mockito.when(createNetworkAclCmdMock.getNumber()).thenReturn(null);
Mockito.doReturn(null).when(networkAclItemDaoMock).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
networkAclServiceImpl.validateAclRuleNumber(createNetworkAclCmdMock, networkAclMock);
Mockito.verify(networkAclItemDaoMock, Mockito.times(0)).findByAclAndNumber(Mockito.anyLong(), Mockito.anyInt());
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclTestAclNull() {
networkAclServiceImpl.validateNetworkAcl(null);
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclTestAclDefaulAllow() {
Mockito.when(networkAclMock.getId()).thenReturn(2L);
networkAclServiceImpl.validateNetworkAcl(networkAclMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclTestAclDefaulDeny() {
Mockito.when(networkAclMock.getId()).thenReturn(1L);
networkAclServiceImpl.validateNetworkAcl(networkAclMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclTestAclNotDefaulWithoutVpc() {
Mockito.when(networkAclMock.getId()).thenReturn(3L);
Mockito.doReturn(null).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
;
networkAclServiceImpl.validateNetworkAcl(networkAclMock);
}
@Test
@PrepareForTest(CallContext.class)
public void validateNetworkAclTestAclNotDefaulWithVpc() {
CallContext callContextMock = Mockito.mock(CallContext.class);
Mockito.doReturn(Mockito.mock(Account.class)).when(callContextMock).getCallingAccount();
PowerMockito.mockStatic(CallContext.class);
PowerMockito.when(CallContext.current()).thenReturn(callContextMock);
Mockito.when(networkAclMock.getId()).thenReturn(3L);
Mockito.when(networkAclMock.getVpcId()).thenReturn(networkMockVpcMockId);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.doNothing().when(accountManagerMock).checkAccess(Mockito.any(Account.class), Mockito.isNull(AccessType.class), Mockito.eq(true), Mockito.any(Vpc.class));
networkAclServiceImpl.validateNetworkAcl(networkAclMock);
Mockito.verify(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.verify(accountManagerMock).checkAccess(Mockito.any(Account.class), Mockito.isNull(AccessType.class), Mockito.eq(true), Mockito.any(Vpc.class));
PowerMockito.verifyStatic(CallContext.class);
CallContext.current();
}
@Test
public void validateAndCreateNetworkAclRuleActionTestActionNull() {
NetworkACLItem.Action receivedAction = networkAclServiceImpl.validateAndCreateNetworkAclRuleAction(null);
Assert.assertEquals(NetworkACLItem.Action.Allow, receivedAction);
Mockito.verify(networkAclServiceImpl).validateNetworkAclRuleAction(null);
}
@Test
public void validateAndCreateNetworkAclRuleActionTestActionAllow() {
NetworkACLItem.Action receivedAction = networkAclServiceImpl.validateAndCreateNetworkAclRuleAction("allow");
Assert.assertEquals(NetworkACLItem.Action.Allow, receivedAction);
Mockito.verify(networkAclServiceImpl).validateNetworkAclRuleAction("allow");
}
@Test
public void validateAndCreateNetworkAclRuleActionTestActionDeny() {
NetworkACLItem.Action receivedAction = networkAclServiceImpl.validateAndCreateNetworkAclRuleAction("deny");
Assert.assertEquals(NetworkACLItem.Action.Deny, receivedAction);
Mockito.verify(networkAclServiceImpl).validateNetworkAclRuleAction("deny");
}
@Test
public void validateNetworkAclRuleActionTestActionNull() {
networkAclServiceImpl.validateNetworkAclRuleAction(null);
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclRuleActionTestInvalidAction() {
networkAclServiceImpl.validateNetworkAclRuleAction("Invalid");
}
@Test
public void validateNetworkAclRuleActionTestValidActions() {
networkAclServiceImpl.validateNetworkAclRuleAction("deny");
networkAclServiceImpl.validateNetworkAclRuleAction("allow");
}
@Test
public void validateNetworkACLItemTest() {
Mockito.doNothing().when(networkAclServiceImpl).validateSourceStartAndEndPorts(networkAclItemVoMock);
Mockito.doNothing().when(networkAclServiceImpl).validateSourceCidrList(networkAclItemVoMock);
Mockito.doNothing().when(networkAclServiceImpl).validateProtocol(networkAclItemVoMock);
networkAclServiceImpl.validateNetworkACLItem(networkAclItemVoMock);
InOrder inOrder = Mockito.inOrder(networkAclServiceImpl);
inOrder.verify(networkAclServiceImpl).validateSourceStartAndEndPorts(networkAclItemVoMock);
inOrder.verify(networkAclServiceImpl).validateSourceCidrList(networkAclItemVoMock);
inOrder.verify(networkAclServiceImpl).validateProtocol(networkAclItemVoMock);
}
@Test
public void validateSourceStartAndEndPortsTestBothPortsNull() {
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateSourceStartAndEndPortsTestStartPorInvalid() {
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(65536);
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateSourceStartAndEndPortsTestStartPorValidButEndPortInvalid() {
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(65535);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(65536);
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateSourceStartAndEndPortsTestStartPortBiggerThanEndPort() {
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(65535);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(2);
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateSourceStartAndEndPortsTestPortsWithAllProtocol() {
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(2);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("all");
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test
public void validateSourceStartAndEndPortsTestPortsWithTcpProtocol() {
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(2);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("tcp");
networkAclServiceImpl.validateSourceStartAndEndPorts(networkAclItemVoMock);
}
@Test
public void validateSourceCidrListTestEmptySourceCirdList() {
Mockito.when(networkAclItemVoMock.getSourceCidrList()).thenReturn(new ArrayList<>());
networkAclServiceImpl.validateSourceCidrList(networkAclItemVoMock);
}
@Test(expected = ServerApiException.class)
public void validateSourceCidrListTestInvalidCidrs() {
ArrayList<String> cidrsInvalid = new ArrayList<>();
cidrsInvalid.add("256.0.0.0./32");
Mockito.when(networkAclItemVoMock.getSourceCidrList()).thenReturn(cidrsInvalid);
networkAclServiceImpl.validateSourceCidrList(networkAclItemVoMock);
}
@Test
public void validateSourceCidrListTestValidCidrs() {
ArrayList<String> cidrsInvalid = new ArrayList<>();
cidrsInvalid.add("192.168.12.0/24");
Mockito.when(networkAclItemVoMock.getSourceCidrList()).thenReturn(cidrsInvalid);
networkAclServiceImpl.validateSourceCidrList(networkAclItemVoMock);
}
@Test
public void validateProtocolTestProtocolIsNullOrBlank() {
Mockito.doNothing().when(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn(null);
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn(" ");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateProtocolTestProtocolIsNumericValueLessThanZero() {
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("-1");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateProtocolTestProtocolIsNumericValueMoreThan255() {
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("256");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
}
@Test
public void validateProtocolTestProtocolIsNumericValidValue() {
Mockito.doNothing().when(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("255");
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(null);
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.verify(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateProtocolTestProtocolIsStringInvalid() {
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("invalid");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
}
@Test
public void validateProtocolTestProtocolIsStringValid() {
Mockito.doNothing().when(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("tcp");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("all");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("udp");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.verify(networkAclServiceImpl, Mockito.times(3)).validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateProtocolTestProtocolNotIcmpWithIcmpConfigurations() {
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("tcp");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
}
@Test
public void validateProtocolTestProtocolNotIcmpWithSourcePorts() {
Mockito.doNothing().when(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("tcp");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.verify(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void validateProtocolTestProtocolIcmpWithIcmpConfigurations() {
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(1);
Mockito.when(networkAclItemVoMock.getSourcePortStart()).thenReturn(null);
Mockito.when(networkAclItemVoMock.getSourcePortEnd()).thenReturn(null);
Mockito.doNothing().when(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
Mockito.when(networkAclItemVoMock.getProtocol()).thenReturn("icmp");
networkAclServiceImpl.validateProtocol(networkAclItemVoMock);
Mockito.verify(networkAclServiceImpl).validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void validateIcmpTypeAndCodeTestIcmpTypeNull() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(null);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateIcmpTypeAndCodeTestIcmpTypeInvalid() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(256);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void validateIcmpTypeAndCodeTestIcmpTypeNegativeOne() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(-1);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(null);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void validateIcmpTypeAndCodeTestIcmpTypeNegativeOneAndIcmpCodeNegativeOne() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(-1);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(-1);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateIcmpTypeAndCodeTestIcmpTypeValidAndIcmpCodeInvalid() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(255);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(17);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void validateIcmpTypeAndCodeTestIcmpTypeValidAndIcmpCodeValid() {
Mockito.when(networkAclItemVoMock.getIcmpType()).thenReturn(255);
Mockito.when(networkAclItemVoMock.getIcmpCode()).thenReturn(1);
networkAclServiceImpl.validateIcmpTypeAndCode(networkAclItemVoMock);
}
@Test
public void updateNetworkACLItemTest() throws ResourceUnavailableException {
Mockito.when(networkAclItemVoMock.getAclId()).thenReturn(networkAclMockId);
Mockito.doReturn(networkAclItemVoMock).when(networkAclServiceImpl).validateNetworkAclRuleIdAndRetrieveIt(updateNetworkACLItemCmdMock);
Mockito.doReturn(networkAclMock).when(networkAclManagerMock).getNetworkACL(networkAclMockId);
Mockito.doNothing().when(networkAclServiceImpl).validateNetworkAcl(Mockito.eq(networkAclMock));
Mockito.doNothing().when(networkAclServiceImpl).transferDataToNetworkAclRulePojo(Mockito.eq(updateNetworkACLItemCmdMock), Mockito.eq(networkAclItemVoMock), Mockito.eq(networkAclMock));
Mockito.doNothing().when(networkAclServiceImpl).validateNetworkACLItem(networkAclItemVoMock);
Mockito.doReturn(networkAclItemVoMock).when(networkAclManagerMock).updateNetworkACLItem(networkAclItemVoMock);
networkAclServiceImpl.updateNetworkACLItem(updateNetworkACLItemCmdMock);
InOrder inOrder = Mockito.inOrder(networkAclServiceImpl, networkAclManagerMock);
inOrder.verify(networkAclServiceImpl).validateNetworkAclRuleIdAndRetrieveIt(updateNetworkACLItemCmdMock);
inOrder.verify(networkAclManagerMock).getNetworkACL(networkAclMockId);
inOrder.verify(networkAclServiceImpl).validateNetworkAcl(networkAclMock);
inOrder.verify(networkAclServiceImpl).transferDataToNetworkAclRulePojo(Mockito.eq(updateNetworkACLItemCmdMock), Mockito.eq(networkAclItemVoMock), Mockito.eq(networkAclMock));
inOrder.verify(networkAclServiceImpl).validateNetworkACLItem(networkAclItemVoMock);
inOrder.verify(networkAclManagerMock).updateNetworkACLItem(networkAclItemVoMock);
}
@Test(expected = InvalidParameterValueException.class)
public void validateNetworkAclRuleIdAndRetrieveItTestNetworkAclNotFound() {
Mockito.doReturn(null).when(networkAclItemDaoMock).findById(Mockito.anyLong());
networkAclServiceImpl.validateNetworkAclRuleIdAndRetrieveIt(updateNetworkACLItemCmdMock);
}
@Test
public void validateNetworkAclRuleIdAndRetrieveItTestNetworkAclFound() {
Mockito.doReturn(networkAclItemVoMock).when(networkAclItemDaoMock).findById(Mockito.anyLong());
NetworkACLItemVO returnedNetworkAclItemVo = networkAclServiceImpl.validateNetworkAclRuleIdAndRetrieveIt(updateNetworkACLItemCmdMock);
Assert.assertNotEquals(networkAclItemVoMock, returnedNetworkAclItemVo);
Mockito.verify(networkAclItemVoMock).clone();
}
@Test(expected = InvalidParameterValueException.class)
public void transferDataToNetworkAclRulePojoTestNumberOfAcltoBeUpdatedAlreadyInUse() {
int aclNumberToUpdate = 1;
Mockito.when(updateNetworkACLItemCmdMock.getNumber()).thenReturn(aclNumberToUpdate);
Mockito.when(networkAclMock.getId()).thenReturn(networkAclMockId);
Mockito.when(networkAclItemVoMock.getId()).thenReturn(100L);
NetworkACLItemVO otherNetworkAclItemVoMock = Mockito.mock(NetworkACLItemVO.class);
Mockito.when(otherNetworkAclItemVoMock.getId()).thenReturn(101L);
Mockito.doReturn(otherNetworkAclItemVoMock).when(networkAclItemDaoMock).findByAclAndNumber(networkAclMockId, aclNumberToUpdate);
networkAclServiceImpl.transferDataToNetworkAclRulePojo(updateNetworkACLItemCmdMock, networkAclItemVoMock, networkAclMock);
}
@Test
public void transferDataToNetworkAclRulePojoTestPartialUpgradeAllValuesNull() {
Mockito.when(updateNetworkACLItemCmdMock.isPartialUpgrade()).thenReturn(true);
Mockito.when(updateNetworkACLItemCmdMock.getNumber()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortStart()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortEnd()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourceCidrList()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getProtocol()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getIcmpCode()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getIcmpType()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getAction()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getTrafficType()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getCustomId()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getReason()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.isDisplay()).thenReturn(false);
Mockito.when(networkAclItemVoMock.isDisplay()).thenReturn(false);
networkAclServiceImpl.transferDataToNetworkAclRulePojo(updateNetworkACLItemCmdMock, networkAclItemVoMock, networkAclMock);
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setNumber(Mockito.anyInt());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setSourcePortStart(Mockito.anyInt());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setSourcePortEnd(Mockito.anyInt());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setSourceCidrList(Mockito.anyListOf(String.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setProtocol(Mockito.anyString());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setIcmpCode(Mockito.anyInt());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setIcmpType(Mockito.anyInt());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setAction(Mockito.any(Action.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setTrafficType(Mockito.any(TrafficType.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setUuid(Mockito.anyString());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setReason(Mockito.anyString());
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setDisplay(Mockito.anyBoolean());
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).validateAndCreateNetworkAclRuleAction(Mockito.anyString());
}
@Test
public void transferDataToNetworkAclRulePojoTestNotPartialUpgradeAllValuesNull() {
Mockito.when(updateNetworkACLItemCmdMock.isPartialUpgrade()).thenReturn(false);
Mockito.when(updateNetworkACLItemCmdMock.getNumber()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortStart()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortEnd()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getSourceCidrList()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getProtocol()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getIcmpCode()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getIcmpType()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getAction()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getTrafficType()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getCustomId()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.getReason()).thenReturn(null);
Mockito.when(updateNetworkACLItemCmdMock.isDisplay()).thenReturn(false);
Mockito.when(networkAclItemVoMock.isDisplay()).thenReturn(false);
networkAclServiceImpl.transferDataToNetworkAclRulePojo(updateNetworkACLItemCmdMock, networkAclItemVoMock, networkAclMock);
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setNumber(nullable(Integer.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setSourcePortStart(nullable(Integer.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setSourcePortEnd(nullable(Integer.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setSourceCidrList(nullable(List.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setProtocol(nullable(String.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setIcmpCode(nullable(Integer.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setIcmpType(nullable(Integer.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setAction(nullable(Action.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setTrafficType(nullable(TrafficType.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(0)).setUuid(nullable(String.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setReason(nullable(String.class));
Mockito.verify(networkAclItemVoMock, Mockito.times(1)).setDisplay(nullable(Boolean.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).validateAndCreateNetworkAclRuleAction(nullable(String.class));
}
@Test
public void transferDataToNetworkAclRulePojoTestAllValuesWithUpdateData() {
Mockito.when(updateNetworkACLItemCmdMock.getNumber()).thenReturn(1);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortStart()).thenReturn(23);
Mockito.when(updateNetworkACLItemCmdMock.getSourcePortEnd()).thenReturn(24);
ArrayList<String> cidrsList = new ArrayList<>();
cidrsList.add("192.168.6.0/24");
Mockito.when(updateNetworkACLItemCmdMock.getSourceCidrList()).thenReturn(cidrsList);
Mockito.when(updateNetworkACLItemCmdMock.getProtocol()).thenReturn("all");
Mockito.when(updateNetworkACLItemCmdMock.getIcmpCode()).thenReturn(5);
Mockito.when(updateNetworkACLItemCmdMock.getIcmpType()).thenReturn(6);
Mockito.when(updateNetworkACLItemCmdMock.getAction()).thenReturn("deny");
Mockito.when(updateNetworkACLItemCmdMock.getTrafficType()).thenReturn(TrafficType.Egress);
Mockito.when(updateNetworkACLItemCmdMock.getCustomId()).thenReturn("customUuid");
Mockito.when(updateNetworkACLItemCmdMock.getReason()).thenReturn("reason");
Mockito.when(updateNetworkACLItemCmdMock.isDisplay()).thenReturn(true);
Mockito.when(networkAclItemVoMock.isDisplay()).thenReturn(false);
networkAclServiceImpl.transferDataToNetworkAclRulePojo(updateNetworkACLItemCmdMock, networkAclItemVoMock, networkAclMock);
Mockito.verify(networkAclItemVoMock).setNumber(1);
Mockito.verify(networkAclItemVoMock).setSourcePortStart(23);
Mockito.verify(networkAclItemVoMock).setSourcePortEnd(24);
Mockito.verify(networkAclItemVoMock).setSourceCidrList(cidrsList);
Mockito.verify(networkAclItemVoMock).setProtocol("all");
Mockito.verify(networkAclItemVoMock).setIcmpCode(5);
Mockito.verify(networkAclItemVoMock).setIcmpType(6);
Mockito.verify(networkAclItemVoMock).setAction(Action.Deny);
Mockito.verify(networkAclItemVoMock).setTrafficType(TrafficType.Egress);
Mockito.verify(networkAclItemVoMock).setUuid("customUuid");
Mockito.verify(networkAclItemVoMock).setReason("reason");
Mockito.verify(networkAclItemVoMock).setDisplay(true);
Mockito.verify(networkAclServiceImpl).validateAndCreateNetworkAclRuleAction("deny");
}
@Test
@PrepareForTest(CallContext.class)
public void updateNetworkACLTestParametersNotNull() {
String name = "name";
String description = "desc";
String customId = "customId";
Mockito.when(updateNetworkACLListCmdMock.getName()).thenReturn(name);
Mockito.when(updateNetworkACLListCmdMock.getDescription()).thenReturn(description);
Mockito.when(updateNetworkACLListCmdMock.getCustomId()).thenReturn(customId);
Mockito.when(updateNetworkACLListCmdMock.getId()).thenReturn(networkAclListId);
Mockito.when(updateNetworkACLListCmdMock.getDisplay()).thenReturn(false);
networkAclServiceImpl.updateNetworkACL(updateNetworkACLListCmdMock);
InOrder inOrder = Mockito.inOrder(networkAclDaoMock, entityManagerMock, entityManagerMock, accountManagerMock, networkACLVOMock);
inOrder.verify(networkAclDaoMock).findById(networkAclListId);
inOrder.verify(entityManagerMock).findById(Mockito.eq(Vpc.class), Mockito.anyLong());
inOrder.verify(accountManagerMock).checkAccess(Mockito.any(Account.class), Mockito.isNull(AccessType.class), Mockito.eq(true), nullable(Vpc.class));
inOrder.verify(networkACLVOMock).setName(name);
inOrder.verify(networkACLVOMock).setDescription(description);
inOrder.verify(networkACLVOMock).setUuid(customId);
inOrder.verify(networkACLVOMock).setDisplay(false);
inOrder.verify(networkAclDaoMock).update(networkAclListId, networkACLVOMock);
inOrder.verify(networkAclDaoMock).findById(networkAclListId);
}
@Test(expected = InvalidParameterValueException.class)
public void moveNetworkAclRuleToNewPositionTestBothPreviousAndNextAclRuleIdsNull() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(null, null);
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
}
@Test(expected = InvalidParameterValueException.class)
public void moveNetworkAclRuleToNewPositionTestBothPreviousAndNextAclRuleIdsEmpty() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand("", "");
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
}
@Test(expected = InvalidParameterValueException.class)
public void moveNetworkAclRuleToNewPositionTestBothPreviousAndNextAclRuleIdsBlank() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(" ", " ");
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
}
private void configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(String nextAclRuleUuid, String previousAclRuleUuid) {
Mockito.when(moveNetworkAclItemCmdMock.getNextAclRuleUuid()).thenReturn(nextAclRuleUuid);
Mockito.when(moveNetworkAclItemCmdMock.getPreviousAclRuleUuid()).thenReturn(previousAclRuleUuid);
}
@Test(expected = InvalidParameterValueException.class)
public void moveNetworkAclRuleToNewPositionTestAclRuleBeingMovedNotFound() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(nextAclRuleUuid, previousAclRuleUuid);
Mockito.doReturn(null).when(networkAclItemDaoMock).findByUuid(uuidAclRuleBeingMoved);
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
}
@Test
public void moveNetworkAclRuleToNewPositionTestMoveRuleToTop() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(nextAclRuleUuid, previousAclRuleUuid);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findByUuid(uuidAclRuleBeingMoved);
Mockito.doReturn(null).when(networkAclServiceImpl).retrieveAndValidateAclRule(previousAclRuleUuid);
Mockito.doReturn(nextAclRuleMock).when(networkAclServiceImpl).retrieveAndValidateAclRule(nextAclRuleUuid);
Mockito.doNothing().when(networkAclServiceImpl).validateMoveAclRulesData(aclRuleBeingMovedMock, null, nextAclRuleMock);
configureMoveMethodsToDoNothing();
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).moveRuleToTheTop(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleToTheBottom(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleBetweenAclRules(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class), Mockito.eq(previousAclRuleMock),
Mockito.eq(nextAclRuleMock));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).validateAclConsistency(Mockito.any(MoveNetworkAclItemCmd.class), Mockito.any(NetworkACLVO.class),
Mockito.anyListOf(NetworkACLItemVO.class));
}
@Test
public void moveNetworkAclRuleToNewPositionTestMoveRuleToBottom() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(nextAclRuleUuid, previousAclRuleUuid);
Mockito.doNothing().when(networkAclServiceImpl).validateMoveAclRulesData(aclRuleBeingMovedMock, previousAclRuleMock, null);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findByUuid(uuidAclRuleBeingMoved);
Mockito.doReturn(previousAclRuleMock).when(networkAclServiceImpl).retrieveAndValidateAclRule(previousAclRuleUuid);
Mockito.doReturn(null).when(networkAclServiceImpl).retrieveAndValidateAclRule(nextAclRuleUuid);
configureMoveMethodsToDoNothing();
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleToTheTop(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).moveRuleToTheBottom(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleBetweenAclRules(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class), Mockito.eq(previousAclRuleMock),
Mockito.eq(nextAclRuleMock));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).validateAclConsistency(Mockito.any(MoveNetworkAclItemCmd.class), Mockito.any(NetworkACLVO.class),
Mockito.anyListOf(NetworkACLItemVO.class));
}
@Test
public void moveNetworkAclRuleToNewPositionTestMoveBetweenAclRules() {
configureNextAndPreviousAclRuleUuidsForMoveAclRuleCommand(nextAclRuleUuid, previousAclRuleUuid);
Mockito.doNothing().when(networkAclServiceImpl).validateMoveAclRulesData(aclRuleBeingMovedMock, previousAclRuleMock, nextAclRuleMock);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findByUuid(uuidAclRuleBeingMoved);
Mockito.doReturn(previousAclRuleMock).when(networkAclServiceImpl).retrieveAndValidateAclRule(previousAclRuleUuid);
Mockito.doReturn(nextAclRuleMock).when(networkAclServiceImpl).retrieveAndValidateAclRule(nextAclRuleUuid);
configureMoveMethodsToDoNothing();
networkAclServiceImpl.moveNetworkAclRuleToNewPosition(moveNetworkAclItemCmdMock);
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleToTheTop(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).moveRuleToTheBottom(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).moveRuleBetweenAclRules(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class), Mockito.eq(previousAclRuleMock),
Mockito.eq(nextAclRuleMock));
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).validateAclConsistency(Mockito.any(MoveNetworkAclItemCmd.class), Mockito.any(NetworkACLVO.class),
Mockito.anyListOf(NetworkACLItemVO.class));
}
private void configureMoveMethodsToDoNothing() {
Mockito.doReturn(networkACLVOMock).when(networkAclDaoMock).acquireInLockTable(Mockito.anyLong());
Mockito.doReturn(true).when(networkAclDaoMock).releaseFromLockTable(Mockito.anyLong());
Mockito.doNothing().when(networkAclServiceImpl).validateAclConsistency(Mockito.any(MoveNetworkAclItemCmd.class), Mockito.any(NetworkACLVO.class), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.doReturn(new ArrayList<>()).when(networkAclServiceImpl).getAllAclRulesSortedByNumber(networkAclMockId);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).moveRuleToTheTop(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).moveRuleToTheBottom(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class));
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).moveRuleBetweenAclRules(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyListOf(NetworkACLItemVO.class),
Mockito.eq(previousAclRuleMock), Mockito.eq(nextAclRuleMock));
}
@Test
public void retrieveAndValidateAclRuleTestUuidNull() {
NetworkACLItemVO networkACLItemVOReceived = networkAclServiceImpl.retrieveAndValidateAclRule(null);
Assert.assertNull(networkACLItemVOReceived);
}
@Test
public void retrieveAndValidateAclRuleTestUuidEmpty() {
NetworkACLItemVO networkACLItemVOReceived = networkAclServiceImpl.retrieveAndValidateAclRule(StringUtils.EMPTY);
Assert.assertNull(networkACLItemVOReceived);
}
@Test
public void retrieveAndValidateAclRuleTestUuidBlank() {
NetworkACLItemVO networkACLItemVOReceived = networkAclServiceImpl.retrieveAndValidateAclRule(" ");
Assert.assertNull(networkACLItemVOReceived);
}
@Test(expected = InvalidParameterValueException.class)
public void retrieveAndValidateAclRuleTestAclRuleNotFound() {
Mockito.doReturn(null).when(networkAclItemDaoMock).findByUuid(nextAclRuleUuid);
networkAclServiceImpl.retrieveAndValidateAclRule(nextAclRuleUuid);
}
@Test
public void retrieveAndValidateAclRuleTestAclRuleFound() {
Mockito.doReturn(nextAclRuleMock).when(networkAclItemDaoMock).findByUuid(nextAclRuleUuid);
NetworkACLItemVO networkACLItemVOReceived = networkAclServiceImpl.retrieveAndValidateAclRule(nextAclRuleUuid);
Assert.assertEquals(nextAclRuleMock, networkACLItemVOReceived);
}
@Test(expected = InvalidParameterValueException.class)
public void validateMoveAclRulesDataTestInvalidPreviousAndNextAclRules() {
networkAclServiceImpl.validateMoveAclRulesData(aclRuleBeingMovedMock, null, null);
}
@Test(expected = InvalidParameterValueException.class)
public void validateMoveAclRulesDataTestPreviousRuleWithDifferentAclId() {
Mockito.when(previousAclRuleMock.getAclId()).thenReturn(99L);
networkAclServiceImpl.validateMoveAclRulesData(aclRuleBeingMovedMock, previousAclRuleMock, null);
}
@Test(expected = InvalidParameterValueException.class)
public void validateMoveAclRulesDataTestNextRuleWithDifferentAclId() {
Mockito.when(nextAclRuleMock.getAclId()).thenReturn(99L);
networkAclServiceImpl.validateMoveAclRulesData(aclRuleBeingMovedMock, null, nextAclRuleMock);
}
@Test
@PrepareForTest(CallContext.class)
public void updateNetworkACLTestParametersWithNullValues() {
Mockito.when(updateNetworkACLListCmdMock.getName()).thenReturn(null);
Mockito.when(updateNetworkACLListCmdMock.getDescription()).thenReturn(null);
Mockito.when(updateNetworkACLListCmdMock.getCustomId()).thenReturn(null);
Mockito.when(updateNetworkACLListCmdMock.getId()).thenReturn(networkAclListId);
Mockito.when(updateNetworkACLListCmdMock.getDisplay()).thenReturn(null);
networkAclServiceImpl.updateNetworkACL(updateNetworkACLListCmdMock);
InOrder inOrder = Mockito.inOrder(networkAclDaoMock, entityManagerMock, accountManagerMock, networkACLVOMock);
inOrder.verify(networkAclDaoMock).findById(networkAclListId);
inOrder.verify(entityManagerMock).findById(eq(Vpc.class), Mockito.anyLong());
inOrder.verify(accountManagerMock).checkAccess(any(Account.class), isNull(), eq(true), nullable(Vpc.class));
Mockito.verify(networkACLVOMock, Mockito.times(0)).setName(null);
inOrder.verify(networkACLVOMock, Mockito.times(0)).setDescription(null);
inOrder.verify(networkACLVOMock, Mockito.times(0)).setUuid(null);
inOrder.verify(networkACLVOMock, Mockito.times(0)).setDisplay(false);
inOrder.verify(networkAclDaoMock).update(networkAclListId, networkACLVOMock);
inOrder.verify(networkAclDaoMock).findById(networkAclListId);
}
@Test
public void validateMoveAclRulesDataTestSuccesfullExecution() {
Mockito.when(nextAclRuleMock.getAclId()).thenReturn(networkAclMockId);
Mockito.when(previousAclRuleMock.getAclId()).thenReturn(networkAclMockId);
Mockito.doReturn(networkAclMock).when(networkAclDaoMock).findById(networkAclMockId);
Mockito.doReturn(Mockito.mock(Vpc.class)).when(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
CallContext callContextMock = Mockito.mock(CallContext.class);
Mockito.doReturn(Mockito.mock(Account.class)).when(callContextMock).getCallingAccount();
PowerMockito.mockStatic(CallContext.class);
PowerMockito.when(CallContext.current()).thenReturn(callContextMock);
Mockito.doNothing().when(accountManagerMock).checkAccess(Mockito.any(Account.class), Mockito.isNull(AccessType.class), Mockito.eq(true), Mockito.any(Vpc.class));
networkAclServiceImpl.validateMoveAclRulesData(aclRuleBeingMovedMock, previousAclRuleMock, nextAclRuleMock);
Mockito.verify(networkAclDaoMock).findById(networkAclMockId);
Mockito.verify(entityManagerMock).findById(Vpc.class, networkMockVpcMockId);
Mockito.verify(accountManagerMock).checkAccess(Mockito.any(Account.class), Mockito.isNull(AccessType.class), Mockito.eq(true), Mockito.any(Vpc.class));
}
@Test
public void getAllAclRulesSortedByNumberTest() {
List<NetworkACLItemVO> networkAclItemVos = new ArrayList<>();
NetworkACLItemVO networkACLItemVO1 = new NetworkACLItemVO();
networkACLItemVO1.setNumber(1);
NetworkACLItemVO networkACLItemVO2 = new NetworkACLItemVO();
networkACLItemVO2.setNumber(2);
NetworkACLItemVO networkACLItemVO3 = new NetworkACLItemVO();
networkACLItemVO3.setNumber(3);
NetworkACLItemVO networkACLItemVO4 = new NetworkACLItemVO();
networkACLItemVO4.setNumber(4);
networkAclItemVos.add(networkACLItemVO1);
networkAclItemVos.add(networkACLItemVO2);
networkAclItemVos.add(networkACLItemVO3);
networkAclItemVos.add(networkACLItemVO4);
Collections.shuffle(networkAclItemVos);
Mockito.doReturn(networkAclItemVos).when(networkAclItemDaoMock).listByACL(networkAclMockId);
List<NetworkACLItemVO> allAclRulesSortedByNumber = networkAclServiceImpl.getAllAclRulesSortedByNumber(networkAclMockId);
Assert.assertEquals(networkAclItemVos.size(), allAclRulesSortedByNumber.size());
Assert.assertEquals(networkACLItemVO1, networkAclItemVos.get(0));
Assert.assertEquals(networkACLItemVO2, networkAclItemVos.get(1));
Assert.assertEquals(networkACLItemVO3, networkAclItemVos.get(2));
Assert.assertEquals(networkACLItemVO4, networkAclItemVos.get(3));
}
@Test
public void moveRuleToTheTopTest() {
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.eq(aclRuleBeingMovedMock), Mockito.anyInt(),
Mockito.anyListOf(NetworkACLItemVO.class), Mockito.anyInt());
networkAclServiceImpl.moveRuleToTheTop(aclRuleBeingMovedMock, new ArrayList<>());
Mockito.verify(networkAclServiceImpl).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.eq(aclRuleBeingMovedMock), Mockito.eq(1), Mockito.anyListOf(NetworkACLItemVO.class),
Mockito.eq(0));
}
@Test
public void moveRuleToTheBottomTest() {
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
NetworkACLItemVO networkACLItemVO1 = new NetworkACLItemVO();
networkACLItemVO1.setNumber(100);
allAclRules.add(networkACLItemVO1);
Mockito.when(aclRuleBeingMovedMock.getId()).thenReturn(99l);
Mockito.doNothing().when(networkAclItemDaoMock).updateNumberFieldNetworkItem(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findById(99l);
networkAclServiceImpl.moveRuleToTheBottom(aclRuleBeingMovedMock, allAclRules);
Mockito.verify(aclRuleBeingMovedMock).setNumber(101);
Mockito.verify(networkAclItemDaoMock).updateNumberFieldNetworkItem(99l, 101);
Mockito.verify(networkAclItemDaoMock).findById(99l);
}
@Test(expected = InvalidParameterValueException.class)
public void moveRuleBetweenAclRulesTestThereIsSpaceBetweenPreviousRuleAndNextRuleToAccomodateTheNewRuleWithOtherruleColliding() {
Mockito.when(previousAclRuleMock.getNumber()).thenReturn(10);
Mockito.when(nextAclRuleMock.getNumber()).thenReturn(15);
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
NetworkACLItemVO networkACLItemVO1 = new NetworkACLItemVO();
networkACLItemVO1.setNumber(11);
allAclRules.add(previousAclRuleMock);
allAclRules.add(networkACLItemVO1);
allAclRules.add(nextAclRuleMock);
networkAclServiceImpl.moveRuleBetweenAclRules(aclRuleBeingMovedMock, allAclRules, previousAclRuleMock, nextAclRuleMock);
}
@Test
public void moveRuleBetweenAclRulesTestThereIsSpaceBetweenPreviousRuleAndNextRuleToAccomodateTheNewRule() {
Mockito.when(previousAclRuleMock.getNumber()).thenReturn(10);
Mockito.when(nextAclRuleMock.getNumber()).thenReturn(11);
Mockito.when(aclRuleBeingMovedMock.getNumber()).thenReturn(50);
Mockito.when(aclRuleBeingMovedMock.getId()).thenReturn(1l);
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
NetworkACLItemVO networkACLItemVO12 = new NetworkACLItemVO();
networkACLItemVO12.setNumber(12);
NetworkACLItemVO networkACLItemVO13 = new NetworkACLItemVO();
networkACLItemVO13.setNumber(13);
NetworkACLItemVO networkACLItemVO14 = new NetworkACLItemVO();
networkACLItemVO14.setNumber(14);
allAclRules.add(previousAclRuleMock);
allAclRules.add(nextAclRuleMock);
allAclRules.add(networkACLItemVO12);
allAclRules.add(networkACLItemVO13);
allAclRules.add(networkACLItemVO14);
allAclRules.add(aclRuleBeingMovedMock);
Mockito.doNothing().when(networkAclItemDaoMock).updateNumberFieldNetworkItem(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findById(1l);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.any(NetworkACLItemVO.class), Mockito.anyInt(),
Mockito.anyListOf(NetworkACLItemVO.class), Mockito.anyInt());
networkAclServiceImpl.moveRuleBetweenAclRules(aclRuleBeingMovedMock, allAclRules, previousAclRuleMock, nextAclRuleMock);
Mockito.verify(networkAclItemDaoMock, times(0)).updateNumberFieldNetworkItem(aclRuleBeingMovedMock.getId(), 11);
Mockito.verify(networkAclItemDaoMock, times(0)).findById(1l);
Mockito.verify(networkAclServiceImpl, Mockito.times(1)).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.any(NetworkACLItemVO.class), Mockito.eq(11),
Mockito.anyListOf(NetworkACLItemVO.class), Mockito.eq(1));
}
@Test
public void moveRuleBetweenAclRulesTestThereIsNoSpaceBetweenPreviousRuleAndNextRuleToAccomodateTheNewRule() {
Mockito.when(previousAclRuleMock.getNumber()).thenReturn(10);
Mockito.when(nextAclRuleMock.getNumber()).thenReturn(15);
Mockito.when(aclRuleBeingMovedMock.getNumber()).thenReturn(50);
Mockito.when(aclRuleBeingMovedMock.getId()).thenReturn(1l);
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
allAclRules.add(previousAclRuleMock);
allAclRules.add(nextAclRuleMock);
allAclRules.add(aclRuleBeingMovedMock);
Mockito.doNothing().when(networkAclItemDaoMock).updateNumberFieldNetworkItem(Mockito.anyLong(), Mockito.anyInt());
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclItemDaoMock).findById(1l);
Mockito.doReturn(aclRuleBeingMovedMock).when(networkAclServiceImpl).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.any(NetworkACLItemVO.class), Mockito.anyInt(),
Mockito.anyListOf(NetworkACLItemVO.class), Mockito.anyInt());
networkAclServiceImpl.moveRuleBetweenAclRules(aclRuleBeingMovedMock, allAclRules, previousAclRuleMock, nextAclRuleMock);
Mockito.verify(networkAclItemDaoMock).updateNumberFieldNetworkItem(aclRuleBeingMovedMock.getId(), 11);
Mockito.verify(networkAclItemDaoMock).findById(1l);
Mockito.verify(networkAclServiceImpl, Mockito.times(0)).updateAclRuleToNewPositionAndExecuteShiftIfNecessary(Mockito.any(NetworkACLItemVO.class), Mockito.anyInt(),
Mockito.anyListOf(NetworkACLItemVO.class), Mockito.anyInt());
}
@Test
public void updateAclRuleToNewPositionAndExecuteShiftIfNecessaryTest() {
Mockito.when(previousAclRuleMock.getNumber()).thenReturn(10);
Mockito.when(previousAclRuleMock.getId()).thenReturn(50l);
Mockito.when(nextAclRuleMock.getNumber()).thenReturn(11);
Mockito.when(nextAclRuleMock.getId()).thenReturn(50l);
Mockito.when(aclRuleBeingMovedMock.getNumber()).thenReturn(50);
Mockito.when(aclRuleBeingMovedMock.getId()).thenReturn(1l);
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
NetworkACLItemVO networkACLItemVO12 = new NetworkACLItemVO();
networkACLItemVO12.setNumber(12);
networkACLItemVO12.id = 12;
NetworkACLItemVO networkACLItemVO13 = new NetworkACLItemVO();
networkACLItemVO13.id = 13;
networkACLItemVO13.setNumber(13);
NetworkACLItemVO networkACLItemVO14 = new NetworkACLItemVO();
networkACLItemVO14.setNumber(14);
networkACLItemVO14.id = 14;
allAclRules.add(previousAclRuleMock);
allAclRules.add(nextAclRuleMock);
allAclRules.add(networkACLItemVO12);
allAclRules.add(networkACLItemVO13);
allAclRules.add(networkACLItemVO14);
allAclRules.add(aclRuleBeingMovedMock);
Mockito.doNothing().when(networkAclItemDaoMock).updateNumberFieldNetworkItem(Mockito.anyLong(), Mockito.anyInt());
Map<Long, NetworkACLItemVO> updatedItems = new HashMap<>();
Mockito.doAnswer((Answer<Void>) invocation -> {
Long id = (Long)invocation.getArguments()[0];
int position = (int)invocation.getArguments()[1];
NetworkACLItemVO item = new NetworkACLItemVO();
item.setNumber(position);
updatedItems.put(id, item);
return null;
}).when(networkAclItemDaoMock).updateNumberFieldNetworkItem(Mockito.anyLong(), Mockito.anyInt());
Mockito.doAnswer((Answer<NetworkACLItemVO>) invocation -> {
Long id = (Long)invocation.getArguments()[0];
return updatedItems.get(id);
}).when(networkAclItemDaoMock).findById(Mockito.anyLong());
NetworkACLItem result = networkAclServiceImpl.updateAclRuleToNewPositionAndExecuteShiftIfNecessary(aclRuleBeingMovedMock, 11, allAclRules, 1);
Assert.assertNotNull(result);
Assert.assertEquals(11, result.getNumber());
Assert.assertEquals(11, updatedItems.get(aclRuleBeingMovedMock.getId()).getNumber());
Assert.assertEquals(12, updatedItems.get(nextAclRuleMock.getId()).getNumber());
Mockito.verify(networkAclItemDaoMock).updateNumberFieldNetworkItem(1l, 11);
Mockito.verify(networkAclItemDaoMock).updateNumberFieldNetworkItem(50l, 12);
Assert.assertEquals(networkACLItemVO12.getNumber() + 1, updatedItems.get(networkACLItemVO12.getId()).getNumber());
Assert.assertEquals(networkACLItemVO13.getNumber() + 1, updatedItems.get(networkACLItemVO13.getId()).getNumber());
Assert.assertEquals(networkACLItemVO14.getNumber() + 1, updatedItems.get(networkACLItemVO14.getId()).getNumber());
}
@Test
public void validateAclConsistencyTestRuleListEmpty() {
networkAclServiceImpl.validateAclConsistency(moveNetworkAclItemCmdMock, networkACLVOMock, new ArrayList<>());
Mockito.verify(moveNetworkAclItemCmdMock, Mockito.times(0)).getAclConsistencyHash();
}
@Test
public void validateAclConsistencyTestRuleListNull() {
networkAclServiceImpl.validateAclConsistency(moveNetworkAclItemCmdMock, networkACLVOMock, null);
Mockito.verify(moveNetworkAclItemCmdMock, Mockito.times(0)).getAclConsistencyHash();
}
@Test
public void validateAclConsistencyTestAclConsistencyHashIsNull() {
Mockito.doReturn(null).when(moveNetworkAclItemCmdMock).getAclConsistencyHash();
validateAclConsistencyTestAclConsistencyHashBlank();
}
@Test
public void validateAclConsistencyTestAclConsistencyHashIsEmpty() {
Mockito.doReturn("").when(moveNetworkAclItemCmdMock).getAclConsistencyHash();
validateAclConsistencyTestAclConsistencyHashBlank();
}
@Test
public void validateAclConsistencyTestAclConsistencyHashIsBlank() {
Mockito.doReturn(" ").when(moveNetworkAclItemCmdMock).getAclConsistencyHash();
validateAclConsistencyTestAclConsistencyHashBlank();
}
private void validateAclConsistencyTestAclConsistencyHashBlank() {
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
allAclRules.add(networkAclItemVoMock);
networkAclServiceImpl.validateAclConsistency(moveNetworkAclItemCmdMock, networkACLVOMock, allAclRules);
Mockito.verify(moveNetworkAclItemCmdMock, Mockito.times(1)).getAclConsistencyHash();
Mockito.verify(callContextMock, Mockito.times(1)).getCallingAccount();
Mockito.verify(callContextMock, Mockito.times(1)).getCallingUser();
}
@Test(expected = InvalidParameterValueException.class)
public void validateAclConsistencyTestAclConsistencyHashIsNotEqualsToDatabaseHash() {
Mockito.doReturn("differentHash").when(moveNetworkAclItemCmdMock).getAclConsistencyHash();
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
allAclRules.add(networkAclItemVoMock);
networkAclServiceImpl.validateAclConsistency(moveNetworkAclItemCmdMock, networkACLVOMock, allAclRules);
}
@Test
public void validateAclConsistencyTest() {
Mockito.doReturn("eac527fe45c77232ef06d9c7eb8abd94").when(moveNetworkAclItemCmdMock).getAclConsistencyHash();
ArrayList<NetworkACLItemVO> allAclRules = new ArrayList<>();
allAclRules.add(networkAclItemVoMock);
Mockito.doReturn("someUuid").when(networkAclItemVoMock).getUuid();
networkAclServiceImpl.validateAclConsistency(moveNetworkAclItemCmdMock, networkACLVOMock, allAclRules);
Mockito.verify(moveNetworkAclItemCmdMock, Mockito.times(1)).getAclConsistencyHash();
}
}