/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.renderer.vpp.policy.acl;
import java.util.List;
import java.util.stream.Collectors;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.groupbasedpolicy.renderer.vpp.policy.PolicyContext;
import org.opendaylight.groupbasedpolicy.renderer.vpp.util.MountedDataBrokerProvider;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import com.google.common.base.Optional;
public class AccessListUtilTest extends TestResources {
private PolicyContext ctx;
private MountedDataBrokerProvider mountedDataProviderMock;
private DataBroker mountPointDataBroker;
@Before
public void init() {
ctx = super.createPolicyContext();
mountedDataProviderMock = Mockito.mock(MountedDataBrokerProvider.class);
mountPointDataBroker = Mockito.mock(DataBroker.class);
Mockito.when(mountedDataProviderMock.getDataBrokerForMountPoint(Mockito.any(InstanceIdentifier.class)))
.thenReturn(Optional.of(mountPointDataBroker));
}
@Test
public void resolveAclsOnInterfaceTest() {
// TODO add more checking
AclManager aclManager = new AclManager(mountedDataProviderMock);
List<AccessListWrapper> acls =
aclManager.resolveAclsOnInterface(rendererEndpoint(l2AddrEp2).build().getKey(), ctx);
Assert.assertEquals(2, acls.size());
Assert.assertEquals(2, acls.stream().map(AccessListWrapper::getDirection).collect(Collectors.toSet()).size());
acls.stream().forEach(ace -> {
// allow peer + deny rest of tenant net + permit external
if (ace instanceof IngressAccessListWrapper) {
Assert.assertEquals(3, ace.readRules().size());
} else if (ace instanceof EgressAccessListWrapper) {
Assert.assertEquals(3, ace.readRules().size());
}
});
}
}