import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.lang.reflect.Field;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-import org.opendaylight.neutron.spi.INeutronPortCRUD;
-import org.opendaylight.neutron.spi.NeutronPort;
-import org.opendaylight.neutron.spi.NeutronSecurityGroup;
-import org.opendaylight.ovsdb.lib.notation.Column;
-import org.opendaylight.ovsdb.lib.schema.GenericTableSchema;
-import org.opendaylight.ovsdb.openstack.netvirt.api.Constants;
-import org.opendaylight.ovsdb.schema.openvswitch.Interface;
+import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronPort;
+import org.opendaylight.ovsdb.openstack.netvirt.translator.NeutronSecurityGroup;
+import org.opendaylight.ovsdb.openstack.netvirt.translator.crud.INeutronPortCRUD;
+import org.opendaylight.ovsdb.openstack.netvirt.api.Southbound;
+import org.opendaylight.ovsdb.utils.servicehelper.ServiceHelper;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
+
+import org.osgi.framework.ServiceReference;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
/**
- * Unit test for class SecurityServicesImpl
+ * Unit test for {@link SecurityServicesImpl}
*/
-@RunWith(MockitoJUnitRunner.class)
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(ServiceHelper.class)
public class SecurityServicesImplTest {
- @Mock private Interface intf;
- @Mock private NeutronPort neutronPort;
-
@InjectMocks private SecurityServicesImpl securityServicesImpl;
- @InjectMocks private INeutronPortCRUD neutronPortCache = mock(INeutronPortCRUD.class);
- private List<NeutronSecurityGroup> securityGroups = new ArrayList<NeutronSecurityGroup>();
+ @Mock private INeutronPortCRUD neutronPortCache;
+ @Mock private Southbound southbound;
+
+ @Mock private NeutronSecurityGroup neutronSecurityGroup;
+
+ private static final String NEUTRON_PORT_ID = "neutronID";
+ private static final String DEVICE_OWNER = "compute";
@Before
public void setUp(){
- Map<String, String> externalIds =new HashMap<String, String>();
- externalIds.put(Constants.EXTERNAL_ID_INTERFACE_ID, "mapValue");
- Column<GenericTableSchema, Map<String, String>> columnMock = mock(Column.class);
-
- securityGroups.add(mock(NeutronSecurityGroup.class));
+ NeutronPort neutronPort = mock(NeutronPort.class);
- // configure interface
- when(intf.getExternalIdsColumn()).thenReturn(columnMock);
- when(columnMock.getData()).thenReturn(externalIds);
+ List<NeutronSecurityGroup> securityGroups = new ArrayList<>();
+ securityGroups.add(neutronSecurityGroup);
- // configure neutronPort
when(neutronPort.getSecurityGroups()).thenReturn(securityGroups);
+ when(neutronPort.getDeviceOwner()).thenReturn(DEVICE_OWNER);
+
+ when(southbound.getInterfaceExternalIdsValue(any(OvsdbTerminationPointAugmentation.class), anyString())).thenReturn(NEUTRON_PORT_ID);
when(neutronPortCache.getPort(anyString())).thenReturn(neutronPort);
}
*/
@Test
public void testIsPortSecurityReady(){
- // configure neutronPort
- when(neutronPort.getDeviceOwner()).thenReturn("deviceOwner");
-
- //test
- assertTrue("Error, did not return expected boolean for isPortSecurityReady", securityServicesImpl.isPortSecurityReady(intf));
+ assertTrue("Error, did not return expected boolean for isPortSecurityReady", securityServicesImpl.isPortSecurityReady(mock(OvsdbTerminationPointAugmentation.class)));
}
/**
- * Test method {@link SecurityServicesImpl#getSecurityGroupInPort(Interface)}
+ * Test method {@link SecurityServicesImpl#getSecurityGroupInPortList(Interface)}
*/
@Test
public void testSecurityGroupInPort(){
- // test
- assertEquals("Error, did not return the good neutronSecurityGroup of securityGroups", securityGroups.toArray()[0], securityServicesImpl.getSecurityGroupInPort(intf));
+ assertEquals("Error, did not return the good neutronSecurityGroup of securityGroups",
+ neutronSecurityGroup, securityServicesImpl.getSecurityGroupInPortList(mock(OvsdbTerminationPointAugmentation.class)).get(0));
+ }
+
+ @Test
+ public void testSetDependencies() throws Exception {
+ Southbound southbound = mock(Southbound.class);
+
+ PowerMockito.mockStatic(ServiceHelper.class);
+ PowerMockito.when(ServiceHelper.getGlobalInstance(Southbound.class, securityServicesImpl)).thenReturn(southbound);
+
+ securityServicesImpl.setDependencies(mock(ServiceReference.class));
+
+ assertEquals("Error, did not return the correct object", getField("southbound"), southbound);
+ }
+
+ @Test
+ public void testSetDependenciesObject() throws Exception{
+ INeutronPortCRUD neutronPortCache = mock(INeutronPortCRUD.class);
+ securityServicesImpl.setDependencies(neutronPortCache);
+ assertEquals("Error, did not return the correct object", getField("neutronPortCache"), neutronPortCache);
+ }
+
+ private Object getField(String fieldName) throws Exception {
+ Field field = SecurityServicesImpl.class.getDeclaredField(fieldName);
+ field.setAccessible(true);
+ return field.get(securityServicesImpl);
}
}