Adding additional test cases for devicemgt core

revert-70aa11f8
Ace 7 years ago
parent 4e7e4a3d31
commit 530de81ac1

@ -18,6 +18,8 @@
*/ */
package org.wso2.carbon.device.mgt.core.dao.impl; package org.wso2.carbon.device.mgt.core.dao.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.device.mgt.common.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOException;
import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory;
@ -32,6 +34,8 @@ import java.util.List;
public class EnrollmentDAOImpl implements EnrollmentDAO { public class EnrollmentDAOImpl implements EnrollmentDAO {
private static final Log log = LogFactory.getLog(EnrollmentDAOImpl.class);
@Override @Override
public int addEnrollment(int deviceId, EnrolmentInfo enrolmentInfo, public int addEnrollment(int deviceId, EnrolmentInfo enrolmentInfo,
int tenantId) throws DeviceManagementDAOException { int tenantId) throws DeviceManagementDAOException {
@ -201,11 +205,36 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
return true; return true;
} }
private int getCountOfDevicesOfOwner(String owner, int tenantID) throws DeviceManagementDAOException {
Connection conn;
PreparedStatement stmt = null;
ResultSet rs = null;
int count = 0;
try {
conn = this.getConnection();
String checkQuery = "SELECT COUNT(ID) AS COUNT FROM DM_ENROLMENT WHERE OWNER = ? AND TENANT_ID = ?";
stmt = conn.prepareStatement(checkQuery);
stmt.setString(1, owner);
stmt.setInt(2, tenantID);
rs = stmt.executeQuery();
if(rs.next()){
count = rs.getInt("COUNT");
}
} catch (SQLException e) {
throw new DeviceManagementDAOException("Error occurred while trying to get device " +
"count of Owner : "+owner, e);
} finally {
DeviceManagementDAOUtil.cleanupResources(stmt, rs);
}
return count;
}
@Override @Override
public boolean setStatus(String currentOwner, EnrolmentInfo.Status status, public boolean setStatus(String currentOwner, EnrolmentInfo.Status status,
int tenantId) throws DeviceManagementDAOException { int tenantId) throws DeviceManagementDAOException {
Connection conn; Connection conn;
PreparedStatement stmt = null; PreparedStatement stmt = null;
if(getCountOfDevicesOfOwner(currentOwner, tenantId) > 0){
try { try {
conn = this.getConnection(); conn = this.getConnection();
String sql = "UPDATE DM_ENROLMENT SET STATUS = ? WHERE OWNER = ? AND TENANT_ID = ?"; String sql = "UPDATE DM_ENROLMENT SET STATUS = ? WHERE OWNER = ? AND TENANT_ID = ?";
@ -220,6 +249,9 @@ public class EnrollmentDAOImpl implements EnrollmentDAO {
DeviceManagementDAOUtil.cleanupResources(stmt, null); DeviceManagementDAOUtil.cleanupResources(stmt, null);
} }
return true; return true;
} else {
return false;
}
} }
@Override @Override

@ -17,6 +17,7 @@ package org.wso2.carbon.device.mgt.core.service;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.mockito.Mockito;
import org.testng.Assert; import org.testng.Assert;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@ -45,10 +46,12 @@ import org.wso2.carbon.registry.core.exceptions.RegistryException;
import org.wso2.carbon.registry.core.internal.RegistryDataHolder; import org.wso2.carbon.registry.core.internal.RegistryDataHolder;
import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService; import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService;
import org.wso2.carbon.registry.core.service.RegistryService; import org.wso2.carbon.registry.core.service.RegistryService;
import org.wso2.carbon.user.api.UserStoreException;
import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.user.core.service.RealmService;
import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
@ -176,14 +179,45 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
public void testDisenrollment() throws DeviceManagementException { public void testDisenrollment() throws DeviceManagementException {
Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(DEVICE_ID, DEVICE_TYPE)); Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(DEVICE_ID, DEVICE_TYPE));
boolean disenrollmentStatus = deviceMgtService.disenrollDevice(new DeviceIdentifier boolean disenrollmentStatus = deviceMgtService.disenrollDevice(new DeviceIdentifier
(device (device.getDeviceIdentifier(), device.getType()));
.getDeviceIdentifier(),
device.getType()));
log.info(disenrollmentStatus); log.info(disenrollmentStatus);
Assert.assertTrue(disenrollmentStatus); Assert.assertTrue(disenrollmentStatus);
} }
@Test(dependsOnMethods = {"testReEnrollmentofSameDeviceWithOtherUser"}, expectedExceptions =
DeviceManagementException.class)
public void testDisenrollmentWithNullDeviceID() throws DeviceManagementException {
deviceMgtService.disenrollDevice(null);
}
@Test(dependsOnMethods = {"testReEnrollmentofSameDeviceWithOtherUser"})
public void testDisenrollmentWithNonExistentDT() throws DeviceManagementException {
Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(DEVICE_ID,
"NON_EXISTENT_DT"));
boolean result = deviceMgtService.disenrollDevice(new DeviceIdentifier(
device.getDeviceIdentifier(), device.getType()));
Assert.assertTrue(!result);
}
@Test(dependsOnMethods = {"testReEnrollmentofSameDeviceWithOtherUser"})
public void testDisenrollmentWithNonExistentDevice() throws DeviceManagementException {
Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(ALTERNATE_DEVICE_ID,
DEVICE_TYPE));
boolean result = deviceMgtService.disenrollDevice(new DeviceIdentifier(
device.getDeviceIdentifier(), device.getType()));
Assert.assertTrue(!result);
}
@Test(dependsOnMethods = {"testDisenrollment"})
public void testDisenrollAlreadyDisEnrolledDevice() throws DeviceManagementException {
Device device = TestDataHolder.generateDummyDeviceData(new DeviceIdentifier(DEVICE_ID,
DEVICE_TYPE));
boolean result = deviceMgtService.disenrollDevice(new DeviceIdentifier(
device.getDeviceIdentifier(), device.getType()));
Assert.assertTrue(result);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetDeviceCount() throws DeviceManagementException { public void testGetDeviceCount() throws DeviceManagementException {
int count = deviceMgtService.getDeviceCount(); int count = deviceMgtService.getDeviceCount();
@ -272,6 +306,35 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
Assert.assertTrue(devices.size() > 0); Assert.assertTrue(devices.size() > 0);
} }
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testGetAllDevicesOfRoleFailureFlow() throws DeviceManagementException, UserStoreException, NoSuchFieldException, IllegalAccessException {
int tenantID = -1234;
RealmService mockRealmService = Mockito.mock(RealmService.class, Mockito.CALLS_REAL_METHODS);
Mockito.doThrow(new UserStoreException("Mocked Exception when obtaining Tenant Realm"))
.when(mockRealmService).getTenantUserRealm(tenantID);
RealmService currentRealm = DeviceManagementDataHolder.getInstance().getRealmService();
DeviceManagementDataHolder.getInstance().setRealmService(mockRealmService);
try {
deviceMgtService.getAllDevicesOfRole("admin");
} finally {
DeviceManagementDataHolder.getInstance().setRealmService(currentRealm);
}
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetAllDevicesOfRoleWithNonExistentRole() throws DeviceManagementException {
List<Device> devices = deviceMgtService.getAllDevicesOfRole("non-existent-role");
Assert.assertTrue(devices.size() == 0);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testGetAllDevicesOfRoleWithNullArgs() throws DeviceManagementException {
deviceMgtService.getAllDevicesOfRole(null);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testDeviceByOwner() throws DeviceManagementException { public void testDeviceByOwner() throws DeviceManagementException {
Device device = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID, Device device = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID,
@ -279,11 +342,47 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
Assert.assertTrue(device != null); Assert.assertTrue(device != null);
} }
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testDeviceByOwnerAndNonExistentDeviceID() throws DeviceManagementException {
String nonExistentDeviceID = "4455";
Device device = deviceMgtService.getDevice(new DeviceIdentifier(nonExistentDeviceID,
DEVICE_TYPE), "admin", true);
Assert.assertTrue(device == null);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testDeviceByOwnerWithNullDeviceID() throws DeviceManagementException {
deviceMgtService.getDevice(null, "admin", true);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testDeviceByDate() throws DeviceManagementException, TransactionManagementException, DeviceDetailsMgtDAOException { public void testDeviceByDate() throws DeviceManagementException, TransactionManagementException, DeviceDetailsMgtDAOException {
Device initialDevice = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID, Device initialDevice = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID,
DEVICE_TYPE)); DEVICE_TYPE));
addDeviceInformation(initialDevice);
Device device = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID,
DEVICE_TYPE), yesterday());
Assert.assertTrue(device != null);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testDeviceByDateWithNonExistentDevice() throws DeviceManagementException,
TransactionManagementException, DeviceDetailsMgtDAOException {
Device device = deviceMgtService.getDevice(new DeviceIdentifier(ALTERNATE_DEVICE_ID,
DEVICE_TYPE), yesterday());
Assert.assertTrue(device == null);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testDeviceByDateWithNullDeviceID() throws DeviceManagementException {
deviceMgtService.getDevice(null, yesterday());
}
private void addDeviceInformation(Device initialDevice) throws TransactionManagementException, DeviceDetailsMgtDAOException {
DeviceManagementDAOFactory.beginTransaction(); DeviceManagementDAOFactory.beginTransaction();
//Device details table will be reffered when looking for last updated time //Device details table will be reffered when looking for last updated time
@ -292,10 +391,6 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
.generateDummyDeviceInfo()); .generateDummyDeviceInfo());
DeviceManagementDAOFactory.closeConnection(); DeviceManagementDAOFactory.closeConnection();
Device device = deviceMgtService.getDevice(new DeviceIdentifier(DEVICE_ID,
DEVICE_TYPE), yesterday());
Assert.assertTrue(device != null);
} }
@Test(dependsOnMethods = {"testDeviceByDate"}) @Test(dependsOnMethods = {"testDeviceByDate"})
@ -320,10 +415,18 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetAllDevicesPaginated() throws DeviceManagementException { public void testGetAllDevicesPaginated() throws DeviceManagementException {
PaginationRequest request = new PaginationRequest(0, 100); PaginationRequest request = new PaginationRequest(0, 100);
request.setOwnerRole("admin");
PaginationResult result = deviceMgtService.getAllDevices(request); PaginationResult result = deviceMgtService.getAllDevices(request);
Assert.assertTrue(result.getRecordsTotal() > 0); Assert.assertTrue(result.getRecordsTotal() > 0);
} }
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testGetAllDevicesWithNullRequest() throws DeviceManagementException {
PaginationRequest request = null;
deviceMgtService.getAllDevices(request);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetAllDevicesByName() throws DeviceManagementException { public void testGetAllDevicesByName() throws DeviceManagementException {
PaginationRequest request = new PaginationRequest(0, 100); PaginationRequest request = new PaginationRequest(0, 100);
@ -392,8 +495,15 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
Assert.assertTrue(false); Assert.assertTrue(false);
} }
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testGetDeviesOfUser() throws DeviceManagementException { public void testGetDeviesOfUser() throws DeviceManagementException {
String username = null;
deviceMgtService.getDevicesOfUser(username);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetDeviesOfUserWhileUserNull() throws DeviceManagementException {
List<Device> devices = deviceMgtService.getDevicesOfUser("admin"); List<Device> devices = deviceMgtService.getDevicesOfUser("admin");
Assert.assertTrue(!devices.isEmpty()); Assert.assertTrue(!devices.isEmpty());
} }
@ -419,6 +529,13 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
Assert.assertTrue(result.getRecordsTotal() > 0); Assert.assertTrue(result.getRecordsTotal() > 0);
} }
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}, expectedExceptions =
DeviceManagementException.class)
public void testGetDeviesOfUserWhileNullOwnerPaginated() throws DeviceManagementException {
PaginationRequest request = null;
deviceMgtService.getDevicesOfUser(request, true);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetDeviesByOwnership() throws DeviceManagementException { public void testGetDeviesByOwnership() throws DeviceManagementException {
PaginationRequest request = new PaginationRequest(0, 100); PaginationRequest request = new PaginationRequest(0, 100);
@ -435,6 +552,18 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
Assert.assertTrue(result.getRecordsTotal() > 0); Assert.assertTrue(result.getRecordsTotal() > 0);
} }
@Test(dependsOnMethods = {"testReEnrollmentofSameDeviceUnderSameUser"})
public void testUpdateDevicesStatus() throws DeviceManagementException {
boolean status = deviceMgtService.setStatus("user1", EnrolmentInfo.Status.REMOVED);
Assert.assertTrue(status);
}
@Test(dependsOnMethods = {"testReEnrollmentofSameDeviceUnderSameUser"})
public void testUpdateDevicesStatusOfNonExistingUser() throws DeviceManagementException {
boolean status = deviceMgtService.setStatus("random-user", EnrolmentInfo.Status.REMOVED);
Assert.assertFalse(status);
}
@Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"}) @Test(dependsOnMethods = {"testSuccessfulDeviceEnrollment"})
public void testGetDeviesOfUserAndDeviceType() throws DeviceManagementException { public void testGetDeviesOfUserAndDeviceType() throws DeviceManagementException {
List<Device> devices = deviceMgtService.getDevicesOfUser("admin", DEVICE_TYPE, true); List<Device> devices = deviceMgtService.getDevicesOfUser("admin", DEVICE_TYPE, true);
@ -451,7 +580,6 @@ public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTes
props.setProperty("password", "!@#$$$%"); props.setProperty("password", "!@#$$$%");
EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props); EmailMetaInfo metaInfo = new EmailMetaInfo(recipient, props);
deviceMgtService.sendRegistrationEmail(metaInfo); deviceMgtService.sendRegistrationEmail(metaInfo);
Assert.assertTrue(true); Assert.assertTrue(true);
} }

Loading…
Cancel
Save