Full <> clean-up
[netvirt.git] / openstack / net-virt / src / test / java / org / opendaylight / ovsdb / openstack / netvirt / impl / SecurityServicesImplTest.java
index db40bfb2daf9ec66251bb6c64db46163d2d4c5cb..b0628218a19699c640911323eaa86836de67ee4e 100644 (file)
@@ -9,57 +9,60 @@ package org.opendaylight.ovsdb.openstack.netvirt.impl;
 
 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);
     }
 
@@ -68,19 +71,40 @@ public class SecurityServicesImplTest {
      */
     @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);
     }
 }