diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementTests.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementTests.java index 9547ea6ccab..676631bc6df 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementTests.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/OperationManagementTests.java @@ -19,6 +19,7 @@ package org.wso2.carbon.device.mgt.core.operation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import org.wso2.carbon.device.mgt.common.Device; @@ -35,22 +36,21 @@ 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.device.mgt.core.operation.mgt.CommandOperation; -import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagementServiceProvider; -import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl; +import org.wso2.carbon.device.mgt.core.operation.mgt.*; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; 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.InMemoryEmbeddedRegistryService; 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; import java.io.InputStream; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Date; import java.util.List; public class OperationManagementTests extends BaseDeviceManagementTest { @@ -59,9 +59,12 @@ public class OperationManagementTests extends BaseDeviceManagementTest { private static final String DEVICE_TYPE = "OP_TEST_TYPE"; private static final String DEVICE_ID_PREFIX = "OP-TEST-DEVICE-ID-"; private static final String COMMAND_OPERATON_CODE = "COMMAND-TEST"; + private static final String POLICY_OPERATION_CODE = "POLICY-TEST"; + private static final String CONFIG_OPERATION_CODE = "CONFIG-TEST"; + private static final String PROFILE_OPERATION_CODE = "PROFILE-TEST"; + private static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; private List deviceIds = new ArrayList<>(); - private DeviceManagementProviderService deviceMgtService; private OperationManager operationMgtService; @BeforeClass @@ -74,23 +77,22 @@ public class OperationManagementTests extends BaseDeviceManagementTest { deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE)); } List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds); - this.deviceMgtService = new DeviceManagementProviderServiceImpl(); + DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl(); DeviceManagementServiceComponent.notifyStartupListeners(); DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService); DeviceManagementDataHolder.getInstance().setRegistryService(getRegistryService()); DeviceManagementDataHolder.getInstance().setDeviceAccessAuthorizationService(new DeviceAccessAuthorizationServiceImpl()); - this.deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, + deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)); for (Device device : devices) { - this.deviceMgtService.enrollDevice(device); + deviceMgtService.enrollDevice(device); } - List returnedDevices = this.deviceMgtService.getAllDevices(DEVICE_TYPE); + List returnedDevices = deviceMgtService.getAllDevices(DEVICE_TYPE); for (Device device : returnedDevices) { if (!device.getDeviceIdentifier().startsWith(DEVICE_ID_PREFIX)) { throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!"); } } - this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE); } @@ -105,9 +107,41 @@ public class OperationManagementTests extends BaseDeviceManagementTest { @Test public void addCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - CommandOperation operation = new CommandOperation(); - operation.setType(Operation.Type.PROFILE); - operation.setCode(COMMAND_OPERATON_CODE); - this.operationMgtService.addOperation(operation, this.deviceIds); + this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + this.deviceIds); + } + + @Test(dependsOnMethods = "addCommandOperation") + public void addPolicyOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + this.operationMgtService.addOperation(getOperation(new PolicyOperation(), Operation.Type.POLICY, PROFILE_OPERATION_CODE), + this.deviceIds); + } + + @Test(dependsOnMethods = "addPolicyOperation") + public void addConfigOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + this.operationMgtService.addOperation(getOperation(new ConfigOperation(), Operation.Type.CONFIG, CONFIG_OPERATION_CODE), + this.deviceIds); + } + + @Test(dependsOnMethods = "addConfigOperation") + public void addProfileOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + this.operationMgtService.addOperation(getOperation(new ProfileOperation(), Operation.Type.PROFILE, PROFILE_OPERATION_CODE), + this.deviceIds); + } + + private Operation getOperation(Operation operation, Operation.Type type, String code) { + String date = new SimpleDateFormat(DATE_FORMAT_NOW).format(new Date()); + operation.setCreatedTimeStamp(date); + operation.setType(type); + operation.setCode(code); + return operation; + } + + @Test(dependsOnMethods = "addProfileOperation") + public void verifyCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + for (DeviceIdentifier deviceIdentifier : deviceIds) { + List operations = this.operationMgtService.getPendingOperations(deviceIdentifier); + Assert.assertEquals(operations.size(), 4, "The pending operations should be 4, but found only " + operations.size()); + } } }