From e4728109555604fa205e53fccf9c095325b1d0d9 Mon Sep 17 00:00:00 2001 From: Ace Date: Thu, 28 Sep 2017 12:29:41 +0530 Subject: [PATCH] Adding unit test coverage for devicemgt-core DeviceManagement module --- .../device/mgt/core/TestDeviceManager.java | 8 +- .../mgt/core/common/TestDataHolder.java | 10 + .../DeviceManagementProviderServiceTest.java | 179 ++++++++++++++---- .../repository/conf/cdm-config.xml | 4 +- 4 files changed, 155 insertions(+), 46 deletions(-) diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java index a1a17b47e38..c81b4e4eb3b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManager.java @@ -50,22 +50,22 @@ public class TestDeviceManager implements DeviceManager { @Override public boolean modifyEnrollment(Device device) throws DeviceManagementException { - return false; + return true; } @Override public boolean disenrollDevice(DeviceIdentifier deviceId) throws DeviceManagementException { - return false; + return true; } @Override public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { - return false; + return true; } @Override public boolean isActive(DeviceIdentifier deviceId) throws DeviceManagementException { - return false; + return true; } @Override diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java index 180fae6b1bd..c1ec7b0d98f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/TestDataHolder.java @@ -52,6 +52,16 @@ public class TestDataHolder { return device; } + public static Device generateDummyDeviceData(String deviceIdentifier, String deviceType, + EnrolmentInfo enrolmentInfo) { + Device device = new Device(); + device.setEnrolmentInfo(enrolmentInfo); + device.setDescription("Test Description"); + device.setDeviceIdentifier(deviceIdentifier); + device.setType(deviceType); + return device; + } + public static List generateDummyDeviceData(List deviceIds) { List devices = new ArrayList<>(); for (DeviceIdentifier deviceId : deviceIds) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java index a48ce1d3a7d..35202dace27 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceTest.java @@ -18,64 +18,163 @@ package org.wso2.carbon.device.mgt.core.service; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.testng.Assert; -import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.common.Device; +import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; -import org.wso2.carbon.device.mgt.common.FeatureManager; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.core.TestDeviceManagementService; +import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl; import org.wso2.carbon.device.mgt.core.common.BaseDeviceManagementTest; +import org.wso2.carbon.device.mgt.core.common.TestDataHolder; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; +import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; +import org.wso2.carbon.device.mgt.core.internal.DeviceManagementServiceComponent; +import org.wso2.carbon.registry.core.config.RegistryContext; +import org.wso2.carbon.registry.core.exceptions.RegistryException; +import org.wso2.carbon.registry.core.internal.RegistryDataHolder; +import org.wso2.carbon.registry.core.jdbc.realm.InMemoryRealmService; +import org.wso2.carbon.registry.core.service.RegistryService; +import org.wso2.carbon.user.core.service.RealmService; +import org.wso2.carbon.utils.multitenancy.MultitenantConstants; -public class DeviceManagementProviderServiceTest { +import java.io.InputStream; +import java.lang.reflect.Method; +import java.util.Date; + +public class DeviceManagementProviderServiceTest extends BaseDeviceManagementTest { private static final Log log = LogFactory.getLog(DeviceManagementProviderServiceTest.class); private DeviceManagementProviderService providerService; + private static final String DEVICE_TYPE = "RANDOM_DEVICE_TYPE"; - private static final String NON_EXISTENT_DEVICE_TYPE = "Test"; - + DeviceManagementProviderService deviceMgtService; + private Method setProvisioningConfig; + private Method setOperationMonitoringConfig; + private Method setDeviceStatusTaskPluginConfig; @BeforeClass public void init() throws Exception { - this.providerService = new DeviceManagementProviderServiceImpl(); + DeviceConfigurationManager.getInstance().initConfig(); + log.info("Initializing"); + + deviceMgtService = new DeviceManagementProviderServiceImpl(); + DeviceManagementServiceComponent.notifyStartupListeners(); + DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService); + DeviceManagementDataHolder.getInstance().setRegistryService(getRegistryService()); + DeviceManagementDataHolder.getInstance().setDeviceAccessAuthorizationService(new DeviceAccessAuthorizationServiceImpl()); + DeviceManagementDataHolder.getInstance().setGroupManagementProviderService(new GroupManagementProviderServiceImpl()); + DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(null); + deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)); + + } + + private RegistryService getRegistryService() throws RegistryException { + RealmService realmService = new InMemoryRealmService(); + RegistryDataHolder.getInstance().setRealmService(realmService); + DeviceManagementDataHolder.getInstance().setRealmService(realmService); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("carbon-home/repository/conf/registry.xml"); + RegistryContext context = RegistryContext.getBaseInstance(is, realmService); + context.setSetup(true); + return context.getEmbeddedRegistryService(); + } + + @Test + public void testNullDeviceEnrollment() { + try { + boolean enrollmentStatus = deviceMgtService.enrollDevice(null); + } catch (DeviceManagementException e) { + Assert.assertTrue(true); + } } -// @Test -// public void testEnrollment() { -// try { -// DeviceManagementPluginRepository deviceManagementPluginRepository = new DeviceManagementPluginRepository(); -// TestDeviceManagementService testDeviceManagementService = -// new TestDeviceManagementService(TestDataHolder.TEST_DEVICE_TYPE); -// deviceManagementPluginRepository.addDeviceManagementProvider(testDeviceManagementService); -// -// deviceManagementProviderService = new DeviceManagementProviderServiceImpl(); -// DeviceManagerUtil.registerDeviceType(TestDataHolder.TEST_DEVICE_TYPE); -// -// Device device = TestDataHolder.generateDummyDeviceData(TestDataHolder.TEST_DEVICE_TYPE); -// boolean isEnrolled = deviceManagementProviderService.enrollDevice(device); -// -// Assert.assertEquals(isEnrolled, true, "Enrolment fail"); -// if (isEnrolled) { -// TestDataHolder.initialTestDevice = device; -// } -// -// } catch (DeviceManagementException e) { -// String msg = "Error occurred while adding device type '" + TestDataHolder.TEST_DEVICE_TYPE + "'"; -// log.error(msg, e); -// Assert.fail(msg, e); -// } finally { -// DeviceManagementDAOFactory.closeConnection(); -// } -// } + @Test + public void testSuccessfullDeviceEnrollment() { + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + try { + boolean enrollmentStatus = deviceMgtService.enrollDevice(device); + Assert.assertTrue(enrollmentStatus); + } catch (DeviceManagementException e) { + String msg = "Error Occured while enrolling device"; + Assert.fail(msg, e); + } + } @Test - public void testGetFeatureManager() { + public void testNonExistentDeviceType() { + Device device = TestDataHolder.generateDummyDeviceData("abc"); + try { + boolean enrollmentStatus = deviceMgtService.enrollDevice(device); + Assert.assertFalse(enrollmentStatus); + } catch (DeviceManagementException e) { + String msg = "Error Occured while enrolling device"; + Assert.fail(msg, e); + } + } + + + @Test(dependsOnMethods = {"testSuccessfullDeviceEnrollment"}) + public void testReEnrollmentofSameDeviceUnderSameUser() { + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + + try { + boolean enrollment = deviceMgtService.enrollDevice(device); + + Assert.assertTrue(enrollment); + } catch (DeviceManagementException e) { + String msg = "Error Occured while enrolling device"; + Assert.fail(msg, e); + } + } + + @Test(dependsOnMethods = {"testReEnrollmentofSameDeviceUnderSameUser"}) + public void testReEnrollmentofSameDeviceWithOtherUser() { + + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(); + enrolmentInfo.setDateOfEnrolment(new Date().getTime()); + enrolmentInfo.setDateOfLastUpdate(new Date().getTime()); + enrolmentInfo.setOwner("user1"); + enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD); + enrolmentInfo.setStatus(EnrolmentInfo.Status.CREATED); + + Device alternateDevice = TestDataHolder.generateDummyDeviceData("12345", DEVICE_TYPE, + enrolmentInfo); + try { - FeatureManager featureManager = providerService.getFeatureManager(NON_EXISTENT_DEVICE_TYPE); - Assert.assertNull(featureManager, "Feature manager retrieved is null, which is expected as the " + - "input device type provided is non existent"); + Device retrievedDevice1 = deviceMgtService.getDevice(new DeviceIdentifier("12345", DEVICE_TYPE)); + + deviceMgtService.enrollDevice(alternateDevice); + Device retrievedDevice2 = deviceMgtService.getDevice(new DeviceIdentifier(alternateDevice + .getDeviceIdentifier(), alternateDevice.getType())); + + log.info(retrievedDevice1.getEnrolmentInfo().getOwner()); + log.info(retrievedDevice2.getEnrolmentInfo().getOwner()); + + Assert.assertFalse(retrievedDevice1.getEnrolmentInfo().getOwner().equalsIgnoreCase + (retrievedDevice2.getEnrolmentInfo().getOwner())); + } catch (DeviceManagementException e) { + String msg = "Error Occured while enrolling device"; + Assert.fail(msg, e); + } + } + + + @Test(dependsOnMethods = {"testReEnrollmentofSameDeviceWithOtherUser"}) + public void testDisenrollment() { + Device device = TestDataHolder.generateDummyDeviceData(DEVICE_TYPE); + + try { + boolean disenrollmentStatus = deviceMgtService.disenrollDevice(new DeviceIdentifier + (device + .getDeviceIdentifier(), + device.getType())); + log.info(disenrollmentStatus); + + Assert.assertTrue(disenrollmentStatus); } catch (DeviceManagementException e) { - String msg = "Error occurred while retrieving feature manager associated with device type '" + - NON_EXISTENT_DEVICE_TYPE + "'"; - log.error(msg, e); + String msg = "Error Occured while enrolling device"; Assert.fail(msg, e); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/carbon-home/repository/conf/cdm-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/carbon-home/repository/conf/cdm-config.xml index 58ed4e61670..9097a645cb4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/carbon-home/repository/conf/cdm-config.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/carbon-home/repository/conf/cdm-config.xml @@ -76,7 +76,7 @@ device caching for upto configured expiry-time in seconds. In clustered setup all worker nodes can enable the device-cache to improve performance. --> - true + false 600