diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml index 11909fd5cf0..51d8f9babea 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.annotations/pom.xml @@ -22,13 +22,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.annotations - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - API Management Annotations WSO2 Carbon - API Management Custom Annotation Module diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml index a865012b983..49a00f49e86 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.api/pom.xml @@ -21,12 +21,12 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT org.wso2.carbon.apimgt.application.extension.api war WSO2 Carbon - API Application Management API diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml index 0acbc4c1545..b9a88577b45 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.application.extension/pom.xml @@ -22,12 +22,12 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT org.wso2.carbon.apimgt.application.extension bundle WSO2 Carbon - API Application Management diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml index fc0ec29d868..729a51c7af9 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.handlers/pom.xml @@ -21,13 +21,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.handlers - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - API Security Handler Component WSO2 Carbon - API Management Security Handler Module diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml index c24a5c99834..ef774699e8b 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.client/pom.xml @@ -13,13 +13,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.client - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - API Management Integration Client WSO2 Carbon - API Management Integration Client diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml index bea9e5c4143..671a40050fd 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.integration.generated.client/pom.xml @@ -13,13 +13,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.generated.client - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - API Management Integration Generated Client WSO2 Carbon - API Management Integration Client diff --git a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml index 4cda0dd7f85..34fef116f51 100644 --- a/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml +++ b/components/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher/pom.xml @@ -22,13 +22,13 @@ apimgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.webapp.publisher - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - API Management Webapp Publisher WSO2 Carbon - API Management Webapp Publisher diff --git a/components/apimgt-extensions/pom.xml b/components/apimgt-extensions/pom.xml index 400800865df..2c8ce4aede9 100644 --- a/components/apimgt-extensions/pom.xml +++ b/components/apimgt-extensions/pom.xml @@ -22,13 +22,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 apimgt-extensions - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - API Management Extensions Component http://wso2.org diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml index ee25617ca58..56f628685c2 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.api/pom.xml @@ -22,7 +22,7 @@ certificate-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml index 8418325fc31..b3180772e70 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api/pom.xml @@ -22,7 +22,7 @@ certificate-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml index 3c58b3cbc57..072b20fe968 100644 --- a/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml +++ b/components/certificate-mgt/org.wso2.carbon.certificate.mgt.core/pom.xml @@ -21,13 +21,13 @@ org.wso2.carbon.devicemgt certificate-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.certificate.mgt.core - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Certificate Management Core WSO2 Carbon - Certificate Management Core diff --git a/components/certificate-mgt/pom.xml b/components/certificate-mgt/pom.xml index 292fe9377b6..369f3056dfb 100644 --- a/components/certificate-mgt/pom.xml +++ b/components/certificate-mgt/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt certificate-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Certificate Management Component http://wso2.org diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml index 14449a334d4..c6f5201f17e 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml index 422acd97aa1..a06e2d7c3e3 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.pull.notification/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml index d59dc7e8def..487f6b34dd7 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml index 1f937335c4a..1af98f3d775 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml index a5044b07052..d35ac2aadb6 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml index 4169e020874..e96779f6fa9 100644 --- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml +++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp/pom.xml @@ -22,7 +22,7 @@ device-mgt-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt-extensions/pom.xml b/components/device-mgt-extensions/pom.xml index adc13946e9f..7e9bdf81d5a 100644 --- a/components/device-mgt-extensions/pom.xml +++ b/components/device-mgt-extensions/pom.xml @@ -22,7 +22,7 @@ carbon-devicemgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml index d0c2b0f3c81..cf5ad43962d 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard/pom.xml @@ -3,7 +3,7 @@ org.wso2.carbon.devicemgt device-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml index ba0b71c3a47..90ae5ec5686 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml index d9e99f508c4..8f19946f316 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.api/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml index 97af171482b..358640533cb 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.common/pom.xml @@ -21,7 +21,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml index 0ca691f2d4e..add0e87d77c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml @@ -229,10 +229,7 @@ org.powermock powermock-module-testng - - - org.powermock - powermock-api-mockito + test org.wso2.carbon diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceImpl.java index f5f209d61fb..10699b2f4d4 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceImpl.java @@ -20,11 +20,10 @@ package org.wso2.carbon.device.mgt.core.authorization; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.context.CarbonContext; -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.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationService; import org.wso2.carbon.device.mgt.common.authorization.DeviceAuthorizationResult; @@ -36,11 +35,9 @@ import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.core.permission.mgt.PermissionUtils; import org.wso2.carbon.user.api.UserRealm; import org.wso2.carbon.user.api.UserStoreException; - -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; + /** * Implementation of DeviceAccessAuthorization service. @@ -233,7 +230,7 @@ public class DeviceAccessAuthorizationServiceImpl implements DeviceAccessAuthori return userRealm.getAuthorizationManager() .isUserAuthorized(removeTenantDomain(username), PermissionUtils.getAbsolutePermissionPath(CDM_ADMIN_PERMISSION), - PermissionMethod.UI_EXECUTE); + CarbonConstants.UI_PERMISSION_ACTION); } return false; } @@ -265,22 +262,6 @@ public class DeviceAccessAuthorizationServiceImpl implements DeviceAccessAuthori return PermissionUtils.putPermission(permission); } - private Map getOwnershipOfDevices(List devices) { - Map ownershipData = new HashMap<>(); - EnrolmentInfo enrolmentInfo; - String owner; - for (Device device : devices) { - enrolmentInfo = device.getEnrolmentInfo(); - if (enrolmentInfo != null) { - owner = enrolmentInfo.getOwner(); - if (owner != null && !owner.isEmpty()) { - ownershipData.put(device.getDeviceIdentifier(), owner); - } - } - } - return ownershipData; - } - public static final class PermissionMethod { public static final String READ = "read"; public static final String WRITE = "write"; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceConfigurationManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceConfigurationManager.java index 51b6b63f2eb..47b6caa11f5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceConfigurationManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/config/DeviceConfigurationManager.java @@ -57,9 +57,9 @@ public class DeviceConfigurationManager { return deviceConfigManager; } - public synchronized void initConfig() throws DeviceManagementException { + public synchronized void initConfig(String configLocation) throws DeviceManagementException { try { - File deviceMgtConfig = new File(DeviceConfigurationManager.DEVICE_MGT_CONFIG_PATH); + File deviceMgtConfig = new File(configLocation); Document doc = DeviceManagerUtil.convertToDocument(deviceMgtConfig); /* Un-marshaling Device Management configuration */ @@ -72,15 +72,8 @@ public class DeviceConfigurationManager { } } - private static Schema getSchema() throws DeviceManagementException { - try { - File deviceManagementSchemaConfig = new File(DeviceConfigurationManager.DEVICE_MGT_CONFIG_SCHEMA_PATH); - SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - return factory.newSchema(deviceManagementSchemaConfig); - } catch (SAXException e) { - throw new DeviceManagementException("Error occurred while initializing the schema of " + - "device-mgt-config.xml", e); - } + public void initConfig() throws DeviceManagementException { + this.initConfig(DEVICE_MGT_CONFIG_PATH); } public DeviceManagementConfig getDeviceManagementConfig() { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java index 772c5268e59..ccb69a1e0be 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/OperationManagerImpl.java @@ -141,7 +141,7 @@ public class OperationManagerImpl implements OperationManager { org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation operationDto = OperationDAOUtil.convertOperation(operation); int operationId = this.lookupOperationDAO(operation).addOperation(operationDto); - boolean isScheduledOperation = this.isTaskScheduledOperation(operation, deviceIds); + boolean isScheduledOperation = this.isTaskScheduledOperation(operation); boolean isNotRepeated = false; boolean isScheduled = false; @@ -344,18 +344,22 @@ public class OperationManagerImpl implements OperationManager { PaginationResult paginationResult = null; List operations = new ArrayList<>(); String owner = request.getOwner(); + try { + if (!DeviceManagerUtil.isDeviceExists(deviceId)) { + throw new OperationManagementException("Device not found for given device " + + "Identifier:" + deviceId.getId() + " and given type : " + + deviceId.getType()); + } + } catch (DeviceManagementException e) { + throw new OperationManagementException("Error while checking the existence of the device identifier - " + + deviceId.getId() + " of the device type - " + deviceId.getType(), e); + } if (!isActionAuthorized(deviceId)) { throw new OperationManagementException("User '" + getUser() + "' is not authorized to access the '" + deviceId.getType() + "' device, which carries the identifier '" + deviceId.getId() + "' of owner '" + owner + "'"); } - EnrolmentInfo enrolmentInfo = this.getEnrolmentInfo(deviceId, owner); - if (enrolmentInfo == null) { - throw new OperationManagementException("Device not found for given device " + - "Identifier:" + deviceId.getId() + " and given type" + - deviceId.getType()); - } int enrolmentId = enrolmentInfo.getId(); try { OperationManagementDAOFactory.openConnection(); @@ -530,9 +534,8 @@ public class OperationManagerImpl implements OperationManager { try { int enrolmentId = enrolmentInfo.getId(); OperationManagementDAOFactory.beginTransaction(); - boolean isUpdated = false; if (operation.getStatus() != null) { - isUpdated = operationDAO.updateOperationStatus(enrolmentId, operationId, + operationDAO.updateOperationStatus(enrolmentId, operationId, org.wso2.carbon.device.mgt.core.dto.operation.mgt. Operation.Status.valueOf(operation.getStatus(). toString())); @@ -806,25 +809,6 @@ public class OperationManagerImpl implements OperationManager { } } - private OperationDAO lookupOperationDAO(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation operation) { - - if (operation instanceof org.wso2.carbon.device.mgt.core.dto.operation.mgt.CommandOperation || - operation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.COMMAND)) { - return commandOperationDAO; - } else if (operation instanceof org.wso2.carbon.device.mgt.core.dto.operation.mgt.ProfileOperation || - operation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.PROFILE)) { - return profileOperationDAO; - } else if (operation instanceof org.wso2.carbon.device.mgt.core.dto.operation.mgt.ConfigOperation || - operation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.CONFIG)) { - return configOperationDAO; - } else if (operation instanceof org.wso2.carbon.device.mgt.core.dto.operation.mgt.PolicyOperation || - operation.getType().equals(org.wso2.carbon.device.mgt.core.dto.operation.mgt.Operation.Type.POLICY)) { - return policyOperationDAO; - } else { - return operationDAO; - } - } - private String getUser() { return CarbonContext.getThreadLocalCarbonContext().getUsername(); } @@ -867,26 +851,6 @@ public class OperationManagerImpl implements OperationManager { return isUserAuthorized; } - private int getEnrolmentByStatus(DeviceIdentifier deviceId, - EnrolmentInfo.Status status) throws OperationManagementException { - int enrolmentId; - try { - DeviceManagementDAOFactory.openConnection(); - int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId(); - enrolmentId = deviceDAO.getEnrolmentByStatus(deviceId, status, tenantId); - } catch (DeviceManagementDAOException e) { - throw new OperationManagementException("Error occurred while retrieving metadata of '" + - deviceId.getType() + "' device carrying the identifier '" + - deviceId.getId() + "'", e); - } catch (SQLException e) { - throw new OperationManagementException( - "Error occurred while opening a connection to the data source", e); - } finally { - DeviceManagementDAOFactory.closeConnection(); - } - return enrolmentId; - } - private EnrolmentInfo getEnrolmentInfo(DeviceIdentifier deviceId, String owner) throws OperationManagementException { EnrolmentInfo enrolmentInfo = null; try { @@ -959,39 +923,15 @@ public class OperationManagerImpl implements OperationManager { return updateStatus; } - private boolean isTaskScheduledOperation(Operation operation, List deviceIds) { + private boolean isTaskScheduledOperation(Operation operation) { DeviceManagementProviderService deviceManagementProviderService = DeviceManagementDataHolder.getInstance(). getDeviceManagementProvider(); - List monitoringOperations = deviceManagementProviderService.getMonitoringOperationList(deviceType);//Get task list from each device type - for (MonitoringOperation op : monitoringOperations) { if (operation.getCode().equals(op.getTaskName())) { return true; } } - -// for(String dti : taskOperation){ -// if (dti.equals(deviceType)) { -// monitoringOperations = deviceTypeSpecificTasks.get(dti); -// -// } -// } -// -// for(DeviceIdentifier deviceIdentifier : deviceIds){ -// String deviceType = deviceIdentifier.getType(); -// -// -// -// } - -// TaskConfiguration taskConfiguration = DeviceConfigurationManager.getInstance().getDeviceManagementConfig(). -// getTaskConfiguration(); -// for (TaskConfiguration.Operation op : taskConfiguration.getOperations()) { -// if (operation.getCode().equals(op.getOperationName())) { -// return true; -// } -// } return false; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java index 052a9aeccba..a2aefc111fc 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/operation/mgt/dao/impl/ConfigOperationDAOImpl.java @@ -118,6 +118,8 @@ public class ConfigOperationDAOImpl extends GenericOperationDAOImpl { bais = new ByteArrayInputStream(operationDetails); ois = new ObjectInputStream(bais); configOperation = (ConfigOperation) ois.readObject(); + configOperation.setId(rs.getInt("OPERATION_ID")); + configOperation.setEnabled(rs.getBoolean("ENABLED")); } } catch (IOException e) { throw new OperationManagementDAOException("IO Error occurred while de serialize the policy operation " + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java index fe77b941805..ff278493f9f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderService.java @@ -481,8 +481,6 @@ public interface DeviceManagementProviderService { */ PlatformConfiguration getConfiguration(String deviceType) throws DeviceManagementException; - void updateDeviceEnrolmentInfo(Device device, EnrolmentInfo.Status active) throws DeviceManagementException; - /** * This method is used to check whether the device is enrolled with the give user. * diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java index 4cc02ee6801..4c1454015b6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/service/DeviceManagementProviderServiceImpl.java @@ -1891,41 +1891,6 @@ public class DeviceManagementProviderServiceImpl implements DeviceManagementProv return result; } - @Override - public void updateDeviceEnrolmentInfo(Device device, EnrolmentInfo.Status status) throws DeviceManagementException { - try { - if (device == null || status == null) { - String msg = "Received incomplete data for updateDeviceEnrolmentInfo"; - log.error(msg); - throw new DeviceManagementException(msg); - } - if (log.isDebugEnabled()) { - log.debug("Updating enrolment for device: " + device.getId() + " of type '" + device.getType() + "'"); - } - DeviceManagementDAOFactory.beginTransaction(); - device.getEnrolmentInfo().setDateOfLastUpdate(new Date().getTime()); - device.getEnrolmentInfo().setStatus(status); - deviceDAO.updateDevice(device, this.getTenantId()); - DeviceManagementDAOFactory.commitTransaction(); - } catch (DeviceManagementDAOException e) { - DeviceManagementDAOFactory.rollbackTransaction(); - String msg = "Error occurred while updating device enrolment status for " + device.getDeviceIdentifier() + - " of type " + device.getType(); - log.error(msg, e); - throw new DeviceManagementException(msg, e); - } catch (TransactionManagementException e) { - String msg = "Error occurred while initiating transaction"; - log.error(msg, e); - throw new DeviceManagementException(msg, e); - } catch (Exception e) { - String msg = "Error occurred in updateDeviceEnrolmentInfo"; - log.error(msg, e); - throw new DeviceManagementException(msg, e); - } finally { - DeviceManagementDAOFactory.closeConnection(); - } - } - @Override public void registerDeviceManagementService(DeviceManagementService deviceManagementService) { if (log.isDebugEnabled()) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java index 19ab94ca8a6..bfb48267621 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/main/java/org/wso2/carbon/device/mgt/core/util/DeviceManagerUtil.java @@ -474,6 +474,13 @@ public final class DeviceManagerUtil { return true; } + public static boolean isDeviceExists(DeviceIdentifier deviceIdentifier) throws DeviceManagementException { + Device device = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().getDevice(deviceIdentifier, + false); + return !(device == null || device.getDeviceIdentifier() == null || + device.getDeviceIdentifier().isEmpty() || device.getEnrolmentInfo() == null); + } + private static CacheManager getCacheManager() { return Caching.getCacheManagerFactory().getCacheManager(DeviceManagementConstants.DM_CACHE_MANAGER); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java index fca34667aa0..f83100b442a 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/TestDeviceManagementService.java @@ -31,10 +31,18 @@ public class TestDeviceManagementService implements DeviceManagementService { private String providerType; private String tenantDomain; + private String operationCode; + + public TestDeviceManagementService(String deviceType, String tenantDomain, String operationCode) { + providerType = deviceType; + this.tenantDomain = tenantDomain; + this.operationCode = operationCode; + } public TestDeviceManagementService(String deviceType, String tenantDomain) { providerType = deviceType; this.tenantDomain = tenantDomain; + this.operationCode = "default"; } @Override @@ -48,12 +56,10 @@ public class TestDeviceManagementService implements DeviceManagementService { taskConfig.setEnabled(true); taskConfig.setFrequency(3000); List monitoringOperations = new ArrayList<>(); - for (int i = 0; i < 5; i++) { - MonitoringOperation monitoringOperation = new MonitoringOperation(); - monitoringOperation.setTaskName("OPERATION-" + i); - monitoringOperation.setRecurrentTimes(i); - monitoringOperations.add(monitoringOperation); - } + MonitoringOperation monitoringOperation = new MonitoringOperation(); + monitoringOperation.setTaskName(operationCode); + monitoringOperation.setRecurrentTimes(2); + monitoringOperations.add(monitoringOperation); taskConfig.setMonitoringOperation(monitoringOperations); return taskConfig; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceTest.java new file mode 100644 index 00000000000..0d47d369cd4 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/authorization/DeviceAccessAuthorizationServiceTest.java @@ -0,0 +1,356 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.core.authorization; + +import org.apache.commons.dbcp.BasicDataSource; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.mockito.Mockito; +import org.testng.Assert; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; +import org.wso2.carbon.CarbonConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; +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.DeviceNotFoundException; +import org.wso2.carbon.device.mgt.common.EnrolmentInfo; +import org.wso2.carbon.device.mgt.common.authorization.DeviceAccessAuthorizationException; +import org.wso2.carbon.device.mgt.common.authorization.DeviceAuthorizationResult; +import org.wso2.carbon.device.mgt.common.group.mgt.GroupManagementException; +import org.wso2.carbon.device.mgt.common.group.mgt.RoleDoesNotExistException; +import org.wso2.carbon.device.mgt.common.permission.mgt.PermissionManagementException; +import org.wso2.carbon.device.mgt.core.TestDeviceManagementService; +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.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; +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.api.UserStoreException; +import org.wso2.carbon.user.api.UserStoreManager; +import org.wso2.carbon.user.api.Permission; +import org.wso2.carbon.user.core.service.RealmService; +import org.wso2.carbon.user.core.tenant.JDBCTenantManager; +import org.wso2.carbon.utils.multitenancy.MultitenantConstants; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.Map; +import java.util.List; +import java.util.HashMap; +import java.util.Arrays; + +/** + * Unit tests for DeviceAccessAuthorizationServiceTest + */ +public class DeviceAccessAuthorizationServiceTest { + private static final Log log = LogFactory.getLog(DeviceAccessAuthorizationServiceTest.class); + private static final String DEVICE_TYPE = "AUTH_SERVICE_TEST_TYPE"; + private static final int NO_OF_DEVICES = 5; + private static final String ADMIN_USER = "admin"; + private static final String NON_ADMIN_ALLOWED_USER = "nonAdmin"; + private static final String NORMAL_USER = "normal"; + private static final String ADMIN_ROLE = "adminRole"; + private static final String NON_ADMIN_ROLE = "nonAdminRole"; + private static final String DEFAULT_GROUP = "defaultGroup"; + private static final String DEVICE_ID_PREFIX = "AUTH-SERVICE-TEST-DEVICE-ID-"; + private static final String USER_CLAIM_EMAIL_ADDRESS = "http://wso2.org/claims/emailaddress"; + private static final String USER_CLAIM_FIRST_NAME = "http://wso2.org/claims/givenname"; + private static final String USER_CLAIM_LAST_NAME = "http://wso2.org/claims/lastname"; + private static final String ADMIN_PERMISSION = "/permission/admin"; + private static final String NON_ADMIN_PERMISSION = "/permission/admin/manage/device-mgt/devices/owning-device/view"; + private static final String FIRST_NAME = "firstName"; + private static final String LAST_NAME = "lastName"; + private static final String EMAIL = "email"; + private static final String PASSWORD = "password"; + private DeviceAccessAuthorizationServiceImpl deviceAccessAuthorizationService; + private List deviceIds = new ArrayList<>(); + private List groupDeviceIds = new ArrayList<>(); + private Map defaultUserClaims; + + @BeforeClass + public void init() throws Exception { + DeviceConfigurationManager.getInstance().initConfig(); + log.info("Initializing test environment to test DeviceAccessAuthorization Class"); + for (int i = 0; i < NO_OF_DEVICES; i++) { + deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE)); + } + List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds); + DeviceManagementProviderService deviceMgtService = new DeviceManagementProviderServiceImpl(); + DeviceManagementServiceComponent.notifyStartupListeners(); + DeviceManagementDataHolder.getInstance().setDeviceManagementProvider(deviceMgtService); + DeviceManagementDataHolder.getInstance().setRegistryService(getRegistryService()); + DeviceManagementDataHolder.getInstance().setGroupManagementProviderService(new + GroupManagementProviderServiceImpl()); + DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(null); + deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)); + for (Device device : devices) { + deviceMgtService.enrollDevice(device); + } + 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!"); + } + } + deviceAccessAuthorizationService = Mockito.mock(DeviceAccessAuthorizationServiceImpl.class, + Mockito.CALLS_REAL_METHODS); + defaultUserClaims = buildDefaultUserClaims(FIRST_NAME, LAST_NAME, EMAIL); + initializeTestEnvironment(); + //Starting tenant flow + PrivilegedCarbonContext.startTenantFlow(); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true); + } + + private RegistryService getRegistryService() throws RegistryException, UserStoreException { + RealmService realmService = new InMemoryRealmService(); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + BasicDataSource dataSource = new BasicDataSource(); + String connectionUrl = "jdbc:h2:./target/databasetest/CARBON_TEST"; + dataSource.setUrl(connectionUrl); + dataSource.setDriverClassName("org.h2.Driver"); + JDBCTenantManager jdbcTenantManager = new JDBCTenantManager(dataSource, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + realmService.setTenantManager(jdbcTenantManager); + 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(); + } + + private void initializeTestEnvironment() throws UserStoreException, GroupManagementException, + RoleDoesNotExistException, DeviceNotFoundException { + //creating UI permission + Permission adminPermission = new Permission(ADMIN_PERMISSION, CarbonConstants.UI_PERMISSION_ACTION); + Permission deviceViewPermission = new Permission(NON_ADMIN_PERMISSION, CarbonConstants.UI_PERMISSION_ACTION); + UserStoreManager userStoreManager = DeviceManagementDataHolder.getInstance().getRealmService() + .getTenantUserRealm(MultitenantConstants.SUPER_TENANT_ID).getUserStoreManager(); + //Adding a non Admin User + userStoreManager.addUser(NON_ADMIN_ALLOWED_USER, PASSWORD, null, defaultUserClaims, null); + //Adding a normal user + userStoreManager.addUser(NORMAL_USER, PASSWORD, null, defaultUserClaims, null); + //Adding role with permission to Admin user + userStoreManager.addRole(ADMIN_ROLE, new String[]{ADMIN_USER}, new Permission[]{adminPermission}); + //Adding role with permission to non Admin user + userStoreManager.addRole(NON_ADMIN_ROLE, new String[]{NON_ADMIN_ALLOWED_USER}, + new Permission[]{deviceViewPermission}); + //Creating default group + GroupManagementProviderService groupManagementProviderService = DeviceManagementDataHolder.getInstance() + .getGroupManagementProviderService(); + groupManagementProviderService.createDefaultGroup(DEFAULT_GROUP); + int groupId = groupManagementProviderService.getGroup(DEFAULT_GROUP).getGroupId(); + //Sharing group with admin and non admin roles + groupManagementProviderService.manageGroupSharing(groupId, new ArrayList<>(Arrays.asList(ADMIN_ROLE, + NON_ADMIN_ROLE))); + //Adding first 2 devices to the group + groupDeviceIds.add(deviceIds.get(0)); + groupDeviceIds.add(deviceIds.get(1)); + groupManagementProviderService.addDevices(groupId, groupDeviceIds); + } + + private Map buildDefaultUserClaims(String firstName, String lastName, String emailAddress) { + Map defaultUserClaims = new HashMap<>(); + defaultUserClaims.put(USER_CLAIM_FIRST_NAME, firstName); + defaultUserClaims.put(USER_CLAIM_LAST_NAME, lastName); + defaultUserClaims.put(USER_CLAIM_EMAIL_ADDRESS, emailAddress); + if (log.isDebugEnabled()) { + log.debug("Default claim map is created for new user: " + defaultUserClaims.toString()); + } + return defaultUserClaims; + } + + //Admin User test cases + @Test(description = "Check authorization giving a device identifier and username") + public void userAuthDevIdUserName() throws Exception { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + for (DeviceIdentifier deviceId : deviceIds) { + Assert.assertTrue(deviceAccessAuthorizationService.isUserAuthorized(deviceId, ADMIN_USER), + "Device access authorization for admin user failed"); + } + } + + @Test(description = "Authorization for multiple device identifiers and username") + public void userAuthDevIdUserNameResult() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds, ADMIN_USER); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 5, + "Expected 5 authorized devices for admin user"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 0, + "Expected 0 un-authorized devices for admin user"); + } + + @Test(description = "Authorization by device identifier") + public void userAuthDevId() throws Exception { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + for (DeviceIdentifier deviceId : deviceIds) { + Assert.assertTrue(deviceAccessAuthorizationService.isUserAuthorized(deviceId), + "Authorize user from device identifier failed"); + } + } + + @Test(description = "Authorization by multiple device identifiers") + public void userAuthDevIdResult() throws Exception { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 5, + "Expected 5 authorized devices for admin user"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 0, + "Expected 0 un-authorized devices for admin user"); + } + + @Test(description = "Check current user is a device administrator") + public void isDevAdminAdminUser() throws DeviceAccessAuthorizationException, UserStoreException, + PermissionManagementException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + Assert.assertTrue(deviceAccessAuthorizationService.isDeviceAdminUser(), + "Admin user failed to authorize as admin"); + } + + //Non admin user tests + @Test(description = "Check authorization by device identifier and permission Allowed test case") + public void userAuthDevIdPermission() throws DeviceAccessAuthorizationException, UserStoreException, + PermissionManagementException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + Assert.assertTrue(deviceAccessAuthorizationService.isUserAuthorized(deviceIds.get(0), + new String[]{NON_ADMIN_PERMISSION}), "Non admin user with permissions attempt to access failed"); + } + + @Test(description = "Check authorization by device identifier and permission Not-allowed test case") + public void userAuthFalseDevIdPermission() throws DeviceAccessAuthorizationException, UserStoreException, + PermissionManagementException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + Assert.assertFalse(deviceAccessAuthorizationService.isUserAuthorized(deviceIds.get(3), + new String[]{NON_ADMIN_PERMISSION}), "Non admin user accessing not allowed device authorized"); + } + + @Test(description = "Authorization by giving a device identifier, username and permission Allowed test case") + public void userAuthDevIdUserNamePermission() throws DeviceAccessAuthorizationException, UserStoreException, + PermissionManagementException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + Assert.assertTrue(deviceAccessAuthorizationService.isUserAuthorized(deviceIds.get(0), NON_ADMIN_ALLOWED_USER, + new String[]{NON_ADMIN_PERMISSION}), "Non admin user with permissions attempt to access failed"); + } + + @Test(description = "Authorization by giving a device identifier, username and permission Not-allowed test case") + public void userAuthFalseDevIdUserNamePermission() throws DeviceAccessAuthorizationException, UserStoreException, + PermissionManagementException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + Assert.assertFalse(deviceAccessAuthorizationService.isUserAuthorized(deviceIds.get(3), NON_ADMIN_ALLOWED_USER, + new String[]{NON_ADMIN_PERMISSION}), "Non admin user accessing not allowed device authorized"); + } + + @Test(description = "Authorization by giving device identifiers and permission") + public void userAuthDevIdPermissionResult() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds, new String[]{NON_ADMIN_PERMISSION}); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 2, + "Non admin user authentication to 2 devices in a shared group failed"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 3, + "Non admin user authentication to 3 devices in a non-shared group failed"); + } + + @Test(description = "Authorization by giving device identifiers, username and permission") + public void userAuthDevIdUserNamePermissionResult() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds, NON_ADMIN_ALLOWED_USER, new String[]{NON_ADMIN_PERMISSION}); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 2, + "Non admin user authentication to 2 devices in a shared group failed"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 3, + "Non admin user authentication to 3 devices in a non-shared group failed"); + } + + @Test(description = "Authorization for device admin called by normal user") + public void isDevAdminNormalUser() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NORMAL_USER); + Assert.assertFalse(deviceAccessAuthorizationService.isDeviceAdminUser(), "Normal user allowed as admin user"); + } + + //Check branches of isUserAuthorized + @Test(description = "Checking branch - user is device owner") + public void nonAdminDeviceOwner() throws DeviceAccessAuthorizationException, DeviceManagementException { + + //Creating a temporary device + Device device = new Device(); + EnrolmentInfo enrolmentInfo = new EnrolmentInfo(NON_ADMIN_ALLOWED_USER, EnrolmentInfo.OwnerShip.BYOD, null); + device.setEnrolmentInfo(enrolmentInfo); + device.setName("temp"); + device.setType(DEVICE_TYPE); + device.setDeviceIdentifier("1234"); + DeviceManagementDataHolder.getInstance().getDeviceManagementProvider().enrollDevice(device); + + //temporary device identifier + DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); + deviceIdentifier.setType(DEVICE_TYPE); + deviceIdentifier.setId("1234"); + + List tempList = new ArrayList<>(); + tempList.add(deviceIdentifier); + + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(tempList, NON_ADMIN_ALLOWED_USER, new String[]{NON_ADMIN_PERMISSION}); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 1, + "Non admin device owner failed to access device"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 0, + "Non admin device owner failed to access device"); + } + + @Test(description = "Check authorization without giving permissions") + public void userAuthWithoutPermissions() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds, NON_ADMIN_ALLOWED_USER, null); + Assert.assertEquals(deviceAuthorizationResult.getAuthorizedDevices().size(), 0, + "Non admin user try authentication without permission failed"); + Assert.assertEquals(deviceAuthorizationResult.getUnauthorizedDevices().size(), 5, + "Non admin user try authentication without permission failed"); + } + + //check Exception cases + @Test(description = "check a null username in isUserAuthorized method") + public void callUserAuthWithoutUsername() throws DeviceAccessAuthorizationException { + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(NON_ADMIN_ALLOWED_USER); + DeviceAuthorizationResult deviceAuthorizationResult = deviceAccessAuthorizationService. + isUserAuthorized(deviceIds, "", new String[]{NON_ADMIN_PERMISSION}); + Assert.assertEquals(deviceAuthorizationResult, null, + "Not null result for empty username in isUserAuthorized method"); + } + + @AfterClass + public void clearAll() { + PrivilegedCarbonContext.endTenantFlow(); + } + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java index e22cd0ac627..e5c21cdcd84 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/common/BaseDeviceManagementTest.java @@ -22,7 +22,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tomcat.jdbc.pool.PoolProperties; import org.testng.Assert; -import org.testng.annotations.AfterSuite; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeSuite; import org.w3c.dom.Document; @@ -30,17 +29,31 @@ import org.wso2.carbon.base.MultitenantConstants; import org.wso2.carbon.context.PrivilegedCarbonContext; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.core.TestUtils; +import org.wso2.carbon.device.mgt.core.authorization.DeviceAccessAuthorizationServiceImpl; +import org.wso2.carbon.device.mgt.core.config.DeviceConfigurationManager; import org.wso2.carbon.device.mgt.core.dao.DeviceManagementDAOFactory; import org.wso2.carbon.device.mgt.core.dao.GroupManagementDAOFactory; +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.notification.mgt.dao.NotificationManagementDAOFactory; import org.wso2.carbon.device.mgt.core.operation.mgt.dao.OperationManagementDAOFactory; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; +import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; import org.wso2.carbon.device.mgt.core.util.DeviceManagerUtil; +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 javax.sql.DataSource; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.File; +import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; @@ -56,6 +69,7 @@ public abstract class BaseDeviceManagementTest { this.initDataSource(); this.initSQLScript(); this.initializeCarbonContext(); + this.initServices(); } protected void initDataSource() throws Exception { @@ -66,6 +80,27 @@ public abstract class BaseDeviceManagementTest { NotificationManagementDAOFactory.init(dataSource); } + private void initServices() throws DeviceManagementException, RegistryException { + DeviceConfigurationManager.getInstance().initConfig(); + DeviceManagementProviderService 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); + } + + 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(); + } + @BeforeClass public abstract void init() throws Exception; 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 3107e0448bc..6ee4c3af37c 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 @@ -25,6 +25,7 @@ import org.wso2.carbon.context.PrivilegedCarbonContext; 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.EnrolmentInfo; import org.wso2.carbon.device.mgt.common.InvalidDeviceException; import org.wso2.carbon.device.mgt.common.PaginationRequest; import org.wso2.carbon.device.mgt.common.PaginationResult; @@ -36,38 +37,28 @@ import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy; import org.wso2.carbon.device.mgt.core.DeviceManagementConstants; 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.device.mgt.core.operation.mgt.CommandOperation; import org.wso2.carbon.device.mgt.core.operation.mgt.ConfigOperation; import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl; import org.wso2.carbon.device.mgt.core.operation.mgt.PolicyOperation; import org.wso2.carbon.device.mgt.core.operation.mgt.ProfileOperation; import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; -import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderServiceImpl; -import org.wso2.carbon.device.mgt.core.service.GroupManagementProviderServiceImpl; -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; -import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; /** * This is the testcase which covers the methods from {@link OperationManager} */ -public class OperationManagementTests { +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-"; @@ -79,26 +70,22 @@ public class OperationManagementTests { private static final int NO_OF_DEVICES = 5; private static final String ADMIN_USER = "admin"; private static final String NON_ADMIN_USER = "test"; + private static final String INVALID_DEVICE = "ThisIsInvalid"; private List deviceIds = new ArrayList<>(); private OperationManager operationMgtService; + private DeviceManagementProviderService deviceMgmtProvider; private Activity commandActivity; private long commandActivityBeforeUpdatedTimestamp; @BeforeClass public void init() throws Exception { - DeviceConfigurationManager.getInstance().initConfig(); for (int i = 0; i < NO_OF_DEVICES; i++) { deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE)); } List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds); - DeviceManagementProviderService 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); + DeviceManagementProviderService deviceMgtService = DeviceManagementDataHolder.getInstance(). + getDeviceManagementProvider(); deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, MultitenantConstants.SUPER_TENANT_DOMAIN_NAME)); for (Device device : devices) { @@ -110,39 +97,65 @@ public class OperationManagementTests { throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!"); } } + this.deviceMgmtProvider = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider(); NotificationStrategy notificationStrategy = new TestNotificationStrategy(); this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE, notificationStrategy); } - 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 addCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - this.commandActivity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + public void addCommandOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + this.commandActivity = this.operationMgtService.addOperation( + getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), this.deviceIds); validateOperationResponse(this.commandActivity, ActivityStatus.Status.PENDING); } + @Test + public void addCommandOperationInvalidDeviceIds() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + startTenantFlowAsNonAdmin(); + try { + ArrayList invalidDevices = new ArrayList<>(); + for (int i = 0; i < 3; i++) { + invalidDevices.add(new DeviceIdentifier(INVALID_DEVICE + i, DEVICE_TYPE)); + } + invalidDevices.addAll(this.deviceIds); + Activity activity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), + Operation.Type.COMMAND, COMMAND_OPERATON_CODE), invalidDevices); + Assert.assertEquals(activity.getActivityStatus().size(), invalidDevices.size(), + "The operation response for add operation only have - " + activity.getActivityStatus().size()); + for (int i = 0; i < activity.getActivityStatus().size(); i++) { + ActivityStatus status = activity.getActivityStatus().get(i); + if (i < 3) { + Assert.assertEquals(status.getStatus(), ActivityStatus.Status.INVALID); + } else { + Assert.assertEquals(status.getStatus(), ActivityStatus.Status.UNAUTHORIZED); + } + } + } finally { + PrivilegedCarbonContext.endTenantFlow(); + } + } + + @Test(expectedExceptions = InvalidDeviceException.class) - public void addEmptyDevicesCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + public void addEmptyDevicesCommandOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, + COMMAND_OPERATON_CODE), new ArrayList<>()); } @Test(expectedExceptions = InvalidDeviceException.class) - public void addNonInitializedDevicesCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + public void addNonInitializedDevicesCommandOperation() throws DeviceManagementException, + OperationManagementException, + InvalidDeviceException { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(); List deviceIdentifiers = new ArrayList<>(); deviceIdentifiers.add(deviceIdentifier); - this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, + COMMAND_OPERATON_CODE), deviceIdentifiers); } @@ -150,7 +163,8 @@ public class OperationManagementTests { public void addNonAdminUserDevicesCommandOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { startTenantFlowAsNonAdmin(); - Activity activity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + Activity activity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), + Operation.Type.COMMAND, COMMAND_OPERATON_CODE), deviceIds); PrivilegedCarbonContext.endTenantFlow(); validateOperationResponse(activity, ActivityStatus.Status.UNAUTHORIZED); @@ -163,27 +177,33 @@ public class OperationManagementTests { } @Test(dependsOnMethods = "addCommandOperation") - public void addPolicyOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - Activity activity = this.operationMgtService.addOperation(getOperation(new PolicyOperation(), Operation.Type.POLICY, POLICY_OPERATION_CODE), + public void addPolicyOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + Activity activity = this.operationMgtService.addOperation(getOperation(new PolicyOperation(), + Operation.Type.POLICY, POLICY_OPERATION_CODE), this.deviceIds); validateOperationResponse(activity, ActivityStatus.Status.PENDING); } @Test(dependsOnMethods = "addPolicyOperation") - public void addConfigOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - Activity activity = this.operationMgtService.addOperation(getOperation(new ConfigOperation(), Operation.Type.CONFIG, CONFIG_OPERATION_CODE), + public void addConfigOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + Activity activity = this.operationMgtService.addOperation(getOperation(new ConfigOperation(), + Operation.Type.CONFIG, CONFIG_OPERATION_CODE), this.deviceIds); validateOperationResponse(activity, ActivityStatus.Status.PENDING); } @Test(dependsOnMethods = "addConfigOperation") - public void addProfileOperation() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { - Activity activity = this.operationMgtService.addOperation(getOperation(new ProfileOperation(), Operation.Type.PROFILE, PROFILE_OPERATION_CODE), + public void addProfileOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { + Activity activity = this.operationMgtService.addOperation(getOperation(new ProfileOperation(), + Operation.Type.PROFILE, PROFILE_OPERATION_CODE), this.deviceIds); validateOperationResponse(activity, ActivityStatus.Status.PENDING); } - private Operation getOperation(Operation operation, Operation.Type type, String code) { + static 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); @@ -192,8 +212,8 @@ public class OperationManagementTests { } private void validateOperationResponse(Activity activity, ActivityStatus.Status expectedStatus) { - Assert.assertEquals(activity.getActivityStatus().size(), NO_OF_DEVICES, "The operation reponse for add operation only have - " + - activity.getActivityStatus().size()); + Assert.assertEquals(activity.getActivityStatus().size(), NO_OF_DEVICES, "The operation response for add " + + "operation only have - " + activity.getActivityStatus().size()); for (ActivityStatus status : activity.getActivityStatus()) { Assert.assertEquals(status.getStatus(), expectedStatus); } @@ -208,7 +228,8 @@ public class OperationManagementTests { } @Test(dependsOnMethods = "addProfileOperation", expectedExceptions = OperationManagementException.class) - public void getOperationsAsNonAdmin() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + public void getOperationsAsNonAdmin() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { try { startTenantFlowAsNonAdmin(); for (DeviceIdentifier deviceIdentifier : deviceIds) { @@ -220,15 +241,18 @@ public class OperationManagementTests { } @Test(dependsOnMethods = "getOperations") - public void getPendingOperations() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + public void getPendingOperations() 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()); + Assert.assertEquals(operations.size(), 4, "The pending operations should be 4, but found only " + + operations.size()); } } @Test(dependsOnMethods = "getOperations", expectedExceptions = OperationManagementException.class) - public void getPendingOperationsAsNonAdmin() throws DeviceManagementException, OperationManagementException, InvalidDeviceException { + public void getPendingOperationsAsNonAdmin() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException { try { startTenantFlowAsNonAdmin(); for (DeviceIdentifier deviceIdentifier : deviceIds) { @@ -328,17 +352,30 @@ public class OperationManagementTests { Assert.assertTrue(operation.getType().equals(Operation.Type.POLICY)); } + @Test(dependsOnMethods = "updateOperation", expectedExceptions = OperationManagementException.class) + public void getNextPendingOperationAsNonAdmin() throws OperationManagementException { + startTenantFlowAsNonAdmin(); + try { + DeviceIdentifier deviceIdentifier = this.deviceIds.get(0); + this.operationMgtService.getNextPendingOperation(deviceIdentifier); + } finally { + PrivilegedCarbonContext.endTenantFlow(); + } + } + @Test(dependsOnMethods = "getNextPendingOperation") public void getOperationByDeviceAndOperationId() throws OperationManagementException { DeviceIdentifier deviceIdentifier = this.deviceIds.get(0); - String operationId = this.commandActivity.getActivityId(). - replace(DeviceManagementConstants.OperationAttributes.ACTIVITY, ""); Operation operation = this.operationMgtService.getOperationByDeviceAndOperationId(deviceIdentifier, - Integer.parseInt(operationId)); + getOperationId(this.commandActivity.getActivityId())); Assert.assertTrue(operation.getStatus().equals(Operation.Status.COMPLETED)); Assert.assertTrue(operation.getType().equals(Operation.Type.COMMAND)); } + private int getOperationId(String activityId) { + return Integer.parseInt(activityId.replace(DeviceManagementConstants.OperationAttributes.ACTIVITY, "")); + } + @Test(dependsOnMethods = "getNextPendingOperation", expectedExceptions = OperationManagementException.class) public void getOperationByDeviceAndOperationIdNonAdmin() throws OperationManagementException { startTenantFlowAsNonAdmin(); @@ -356,12 +393,14 @@ public class OperationManagementTests { @Test(dependsOnMethods = "getOperationByDeviceAndOperationId") public void getOperationsByDeviceAndStatus() throws OperationManagementException, DeviceManagementException { DeviceIdentifier deviceIdentifier = this.deviceIds.get(0); - List operation = this.operationMgtService.getOperationsByDeviceAndStatus(deviceIdentifier, Operation.Status.PENDING); + List operation = this.operationMgtService.getOperationsByDeviceAndStatus(deviceIdentifier, + Operation.Status.PENDING); Assert.assertEquals(operation.size(), 3); } @Test(dependsOnMethods = "getOperationByDeviceAndOperationId", expectedExceptions = OperationManagementException.class) - public void getOperationsByDeviceAndStatusByNonAdmin() throws OperationManagementException, DeviceManagementException { + public void getOperationsByDeviceAndStatusByNonAdmin() throws OperationManagementException, + DeviceManagementException { startTenantFlowAsNonAdmin(); try { DeviceIdentifier deviceIdentifier = this.deviceIds.get(0); @@ -438,4 +477,180 @@ public class OperationManagementTests { Assert.assertTrue(this.operationMgtService.getNotificationStrategy() != null); } + @Test(dependsOnMethods = {"getOperationByActivityIdAndDevice", "getOperationByActivityIdAndDeviceAsNonAdmin"}) + public void getOperationForInactiveDevice() throws DeviceManagementException, OperationManagementException { + boolean disEnrolled = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider(). + disenrollDevice(deviceIds.get(0)); + Assert.assertTrue(disEnrolled); + List operations = this.operationMgtService.getOperations(deviceIds.get(0)); + Assert.assertTrue(operations == null); + } + + @Test(dependsOnMethods = "getOperationForInactiveDevice", expectedExceptions = OperationManagementException.class) + public void getPaginatedOperationDeviceForInvalidDevice() throws DeviceManagementException, + OperationManagementException { + PrivilegedCarbonContext.startTenantFlow(); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID, true); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setUsername(ADMIN_USER); + try { + PaginationRequest request = new PaginationRequest(1, 2); + request.setDeviceType(DEVICE_TYPE); + request.setOwner(ADMIN_USER); + PaginationResult result = this.operationMgtService.getOperations + (new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE), request); + Assert.assertEquals(result.getRecordsFiltered(), 4); + Assert.assertEquals(result.getData().size(), 2); + Assert.assertEquals(result.getRecordsTotal(), 4); + } finally { + PrivilegedCarbonContext.endTenantFlow(); + } + } + + @Test(dependsOnMethods = "getOperationForInactiveDevice", expectedExceptions = OperationManagementException.class) + public void getPendingOperationDeviceForInvalidDevice() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getPendingOperations(new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE)); + } + + @Test(dependsOnMethods = "getPendingOperationDeviceForInvalidDevice", + expectedExceptions = OperationManagementException.class) + public void getNextPendingOperationDeviceForInvalidDevice() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getNextPendingOperation(new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE)); + } + + @Test(dependsOnMethods = "getNextPendingOperationDeviceForInvalidDevice", + expectedExceptions = OperationManagementException.class) + public void getUpdateOperationForInvalidDevice() throws DeviceManagementException, OperationManagementException { + this.operationMgtService.updateOperation(new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE), + getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE)); + } + + @Test(dependsOnMethods = "getUpdateOperationForInvalidDevice", + expectedExceptions = OperationManagementException.class) + public void getOperationByDeviceAndOperationIdInvalidDevice() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getOperationByDeviceAndOperationId(new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE), + getOperationId(this.commandActivity.getActivityId())); + } + + @Test(dependsOnMethods = "getOperationByDeviceAndOperationIdInvalidDevice", + expectedExceptions = OperationManagementException.class) + public void getOperationsByDeviceAndStatusInvalidDevice() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getOperationsByDeviceAndStatus(new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE), + Operation.Status.PENDING); + } + + @Test(dependsOnMethods = "getOperationsByDeviceAndStatusInvalidDevice", + expectedExceptions = OperationManagementException.class) + public void getOperationsInvalidOperationId() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getOperation(123445); + } + + @Test(dependsOnMethods = "getOperationsInvalidOperationId", expectedExceptions = IllegalArgumentException.class) + public void getOperationsByActivityIdInvalidActivityId() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getOperationByActivityId(DeviceManagementConstants.OperationAttributes.ACTIVITY + 0); + } + + @Test(dependsOnMethods = "getOperationsByActivityIdInvalidActivityId", + expectedExceptions = IllegalArgumentException.class) + public void getOperationByActivityIdAndDeviceInvalidActivityId() throws DeviceManagementException, + OperationManagementException { + this.operationMgtService.getOperationByActivityIdAndDevice( + DeviceManagementConstants.OperationAttributes.ACTIVITY + 0, + new DeviceIdentifier(INVALID_DEVICE, DEVICE_TYPE)); + } + + @Test(dependsOnMethods = "getOperationByActivityIdAndDeviceInvalidActivityId") + public void getPendingOperationsInactiveEnrollment() throws DeviceManagementException, + OperationManagementException { + changeStatus(EnrolmentInfo.Status.INACTIVE); + List operations = this.operationMgtService.getPendingOperations(this.deviceIds.get(1)); + Assert.assertTrue(operations != null); + Assert.assertEquals(operations.size(), 4); + changeStatus(EnrolmentInfo.Status.ACTIVE); + } + + private void changeStatus(EnrolmentInfo.Status status) throws DeviceManagementException, + OperationManagementException { + Device device = this.deviceMgmtProvider.getDevice(this.deviceIds.get(1)); + Assert.assertTrue(device != null); + Assert.assertEquals(device.getType(), DEVICE_TYPE); + Assert.assertTrue(device.getEnrolmentInfo() != null); + device.getEnrolmentInfo().setStatus(status); + boolean modified = this.deviceMgmtProvider.changeDeviceStatus(this.deviceIds.get(1), status); + Assert.assertTrue(modified); + device = this.deviceMgmtProvider.getDevice(this.deviceIds.get(1)); + Assert.assertEquals(device.getEnrolmentInfo().getStatus(), status); + } + + @Test(dependsOnMethods = "getPendingOperationsInactiveEnrollment") + public void getNextPendingOperationInactiveEnrollment() throws DeviceManagementException, + OperationManagementException { + changeStatus(EnrolmentInfo.Status.INACTIVE); + Operation operation = this.operationMgtService.getNextPendingOperation(this.deviceIds.get(1)); + Assert.assertTrue(operation != null); + changeStatus(EnrolmentInfo.Status.ACTIVE); + } + + @Test(dependsOnMethods = "getNextPendingOperationInactiveEnrollment") + public void getNextPendingOperationForAllOperations() throws DeviceManagementException, + OperationManagementException { + for (int i = 0; i < 4; i++) { + Operation operation = this.operationMgtService.getNextPendingOperation(this.deviceIds.get(1)); + operation.setStatus(Operation.Status.COMPLETED); + this.operationMgtService.updateOperation(deviceIds.get(1), operation); + } + Assert.assertTrue(this.operationMgtService.getNextPendingOperation(this.deviceIds.get(1)) == null); + } + + @Test(dependsOnMethods = "getNextPendingOperationForAllOperations") + public void getOperationByDeviceAndOperationIdForAllOperations() throws DeviceManagementException, + OperationManagementException { + for (int i = 1; i <= 4; i++) { + Operation operation = this.operationMgtService.getOperationByDeviceAndOperationId(this.deviceIds.get(1), i); + Assert.assertEquals(operation.getStatus(), Operation.Status.COMPLETED); + } + } + + @Test(dependsOnMethods = "getOperationByDeviceAndOperationIdForAllOperations") + public void getOperationForAllOperations() throws DeviceManagementException, + OperationManagementException { + for (int i = 1; i <= 4; i++) { + Operation operation = this.operationMgtService.getOperation(i); + Assert.assertTrue(operation != null); + } + } + + @Test(dependsOnMethods = "getOperationForAllOperations") + public void addCustomPolicyOperation() throws OperationManagementException, InvalidDeviceException { + this.addCustomOperation(Operation.Type.POLICY, DeviceManagementConstants.AuthorizationSkippedOperationCodes. + POLICY_OPERATION_CODE); + } + + @Test(dependsOnMethods = "getOperationForAllOperations") + public void addCustomMonitorOperation() throws OperationManagementException, InvalidDeviceException { + this.addCustomOperation(Operation.Type.COMMAND, DeviceManagementConstants.AuthorizationSkippedOperationCodes. + MONITOR_OPERATION_CODE); + } + + @Test(dependsOnMethods = "getOperationForAllOperations") + public void addCustomPolicyRevokeOperation() throws OperationManagementException, InvalidDeviceException { + this.addCustomOperation(Operation.Type.POLICY, DeviceManagementConstants.AuthorizationSkippedOperationCodes. + POLICY_REVOKE_OPERATION_CODE); + } + + private void addCustomOperation(Operation.Type type, String operationCode) throws OperationManagementException, InvalidDeviceException { + Operation operation = new Operation(); + operation.setCode(operationCode); + operation.setType(type); + Activity activity = this.operationMgtService.addOperation(operation, Collections.singletonList(this.deviceIds.get(2))); + Assert.assertEquals(activity.getActivityStatus().size(), 1); + for (ActivityStatus status : activity.getActivityStatus()) { + Assert.assertEquals(status.getStatus(), ActivityStatus.Status.PENDING); + } + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/ScheduledTaskOperationTests.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/ScheduledTaskOperationTests.java new file mode 100644 index 00000000000..269563b3a80 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/ScheduledTaskOperationTests.java @@ -0,0 +1,117 @@ +/* +* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. +* WSO2 Inc. licenses this file to you under the Apache License, +* Version 2.0 (the "License"); you may not use this file except +* in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +* +*/ +package org.wso2.carbon.device.mgt.core.operation; + +import org.mockito.Mockito; +import org.testng.Assert; +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.InvalidDeviceException; +import org.wso2.carbon.device.mgt.common.operation.mgt.Activity; +import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; +import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; +import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; +import org.wso2.carbon.device.mgt.core.TestDeviceManagementService; +import org.wso2.carbon.device.mgt.core.TestTaskServiceImpl; +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.operation.mgt.CommandOperation; +import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl; +import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService; +import org.wso2.carbon.device.mgt.core.task.DeviceTaskManagerService; +import org.wso2.carbon.device.mgt.core.task.impl.DeviceTaskManagerServiceImpl; +import org.wso2.carbon.ntask.core.internal.TasksDSComponent; +import org.wso2.carbon.ntask.core.service.TaskService; +import org.wso2.carbon.ntask.core.service.impl.TaskServiceImpl; +import org.wso2.carbon.utils.multitenancy.MultitenantConstants; + +import java.io.File; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; + +import static org.wso2.carbon.device.mgt.core.operation.OperationManagementTests.getOperation; + +/** + * This class tests the tasks based operations of {@link OperationManager} + */ +public class ScheduledTaskOperationTests extends BaseDeviceManagementTest { + private static final String DEVICE_TYPE = "OP_SCHEDULE_TEST_TYPE"; + private static final String DEVICE_ID_PREFIX = "OP-SCHEDULED_TEST-DEVICE-ID-"; + private static final String COMMAND_OPERATON_CODE = "COMMAND-TEST"; + private static final int NO_OF_DEVICES = 5; + private static final String DS_TASK_COMPONENT_FIELD = "taskService"; + private static final String CDM_CONFIG_LOCATION = "src" + File.separator + "test" + File.separator + "resources" + + File.separator + "config" + File.separator + "operation" + File.separator + "cdm-config.xml"; + + private List deviceIds = new ArrayList<>(); + private OperationManager operationMgtService; + + @BeforeClass + public void init() throws Exception { + for (int i = 0; i < NO_OF_DEVICES; i++) { + deviceIds.add(new DeviceIdentifier(DEVICE_ID_PREFIX + i, DEVICE_TYPE)); + } + List devices = TestDataHolder.generateDummyDeviceData(this.deviceIds); + DeviceManagementProviderService deviceMgtService = DeviceManagementDataHolder.getInstance().getDeviceManagementProvider(); + initTaskService(); + deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME, COMMAND_OPERATON_CODE)); + for (Device device : devices) { + deviceMgtService.enrollDevice(device); + } + 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!"); + } + } + DeviceConfigurationManager.getInstance().initConfig(CDM_CONFIG_LOCATION); + TestNotificationStrategy notificationStrategy = new TestNotificationStrategy(); + this.operationMgtService = new OperationManagerImpl(DEVICE_TYPE, notificationStrategy); + } + + + private void initTaskService() throws NoSuchFieldException, IllegalAccessException { + TaskService taskService = new TestTaskServiceImpl(); + DeviceManagementDataHolder.getInstance().setTaskService(taskService); + DeviceTaskManagerService deviceTaskManager = new DeviceTaskManagerServiceImpl(); + DeviceManagementDataHolder.getInstance().setDeviceTaskManagerService(deviceTaskManager); + Field taskServiceField = TasksDSComponent.class.getDeclaredField(DS_TASK_COMPONENT_FIELD); + taskServiceField.setAccessible(true); + taskServiceField.set(null, Mockito.mock(TaskServiceImpl.class, Mockito.RETURNS_MOCKS)); + + } + + @Test + public void addCommandOperation() throws DeviceManagementException, OperationManagementException, + InvalidDeviceException, NoSuchFieldException { + Activity activity = this.operationMgtService.addOperation(getOperation(new CommandOperation(), Operation.Type.COMMAND, COMMAND_OPERATON_CODE), + this.deviceIds); + Assert.assertEquals(activity.getActivityStatus(), null); + Assert.assertEquals(activity.getType(), Activity.Type.COMMAND); + } + + + +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/TestNotificationStrategy.java b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/TestNotificationStrategy.java index 28afa2da1fa..c10fc0372f5 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/TestNotificationStrategy.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/java/org/wso2/carbon/device/mgt/core/operation/TestNotificationStrategy.java @@ -22,7 +22,14 @@ import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationExecutionFailedException; +import java.util.HashMap; + public class TestNotificationStrategy implements NotificationStrategy { + private PushNotificationConfig pushNotificationConfig; + + public TestNotificationStrategy(){ + this.pushNotificationConfig = new PushNotificationConfig("TEST", true, new HashMap<>()); + } @Override public void init() { @@ -46,6 +53,6 @@ public class TestNotificationStrategy implements NotificationStrategy { @Override public PushNotificationConfig getConfig() { - return null; + return pushNotificationConfig; } } 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 9c0dac543da..d2425c4cdde 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 @@ -24,13 +24,7 @@ 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.EnrolmentInfo; -import org.wso2.carbon.device.mgt.common.InvalidDeviceException; import org.wso2.carbon.device.mgt.common.TransactionManagementException; -import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo; -import org.wso2.carbon.device.mgt.common.operation.mgt.Operation; -import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManagementException; -import org.wso2.carbon.device.mgt.common.operation.mgt.OperationManager; -import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy; 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; @@ -42,9 +36,6 @@ import org.wso2.carbon.device.mgt.core.device.details.mgt.dao.DeviceDetailsMgtDA import org.wso2.carbon.device.mgt.core.dto.DeviceType; 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.TestNotificationStrategy; -import org.wso2.carbon.device.mgt.core.operation.mgt.CommandOperation; -import org.wso2.carbon.device.mgt.core.operation.mgt.OperationManagerImpl; import org.wso2.carbon.registry.core.config.RegistryContext; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.wso2.carbon.registry.core.internal.RegistryDataHolder; @@ -54,12 +45,6 @@ import org.wso2.carbon.user.core.service.RealmService; import org.wso2.carbon.utils.multitenancy.MultitenantConstants; import java.io.InputStream; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/operation/cdm-config.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/operation/cdm-config.xml new file mode 100644 index 00000000000..d4e1acb1397 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/config/operation/cdm-config.xml @@ -0,0 +1,96 @@ + + + + + + + + jdbc/DM_DS + + + + + 2 + 2000 + 2000 + true + + org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.FCMBasedPushNotificationProvider + + org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.MQTTBasedPushNotificationProvider + org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.HTTPBasedPushNotificationProvider + org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.XMPPBasedPushNotificationProvider + + + + false + + + https://localhost:9443 + admin + admin + + + org.wso2.carbon.policy.mgt + true + 60000 + 5 + 8 + 20 + + + + Simple + + + + 20 + 20 + 20 + 20 + 20 + 20 + + + + true + + + + false + 600 + + 10000 + + + false + 86400 + + + false + false + + BYOD,COPE + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml index b77715ab91b..3e27f034453 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/src/test/resources/testng.xml @@ -42,9 +42,11 @@ + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml index 53d6ed8633c..5b5b4703542 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml @@ -96,6 +96,12 @@ org.wso2.carbon.governance org.wso2.carbon.governance.registry.extensions test + + + jaxen + jaxen + + org.wso2.carbon.registry @@ -106,6 +112,14 @@ org.slf4j jcl-over-slf4j + + org.slf4j + slf4j-api + + + org.slf4j + log4j-over-slf4j + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java index b0c4f8312ee..1f1ee0d8683 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java @@ -130,6 +130,17 @@ public class DeviceTypeManager implements DeviceManager { //Check whether device dao definition exist. String tableName = deviceTypeConfiguration.getDeviceDetails().getTableId(); if (tableName != null && !tableName.isEmpty()) { + DataSource dataSource = deviceTypeConfiguration.getDataSource(); + if (dataSource == null) { + throw new DeviceTypeDeployerPayloadException("Could not find the datasource related with the " + + "table id " + tableName + " for the device type " + deviceType); + } + TableConfig tableConfig = dataSource.getTableConfig(); + + if (tableConfig == null) { + throw new DeviceTypeDeployerPayloadException("Could not find the table config with the " + + "table id " + tableName + " for the device type " + deviceType); + } List tables = deviceTypeConfiguration.getDataSource().getTableConfig().getTable(); Table deviceDefinitionTable = null; for (Table table : tables) { @@ -189,6 +200,9 @@ public class DeviceTypeManager implements DeviceManager { @Override public boolean saveConfiguration(PlatformConfiguration tenantConfiguration) throws DeviceManagementException { + if (tenantConfiguration == null) { + throw new DeviceManagementException("Platform configuration is null. Cannot save the configuration"); + } try { if (log.isDebugEnabled()) { log.debug("Persisting " + deviceType + " configurations in Registry"); @@ -246,6 +260,9 @@ public class DeviceTypeManager implements DeviceManager { @Override public boolean enrollDevice(Device device) throws DeviceManagementException { + if (device == null) { + throw new DeviceManagementException("Device is null. Cannot enroll the device."); + } if (propertiesExist) { boolean status = false; boolean isEnrolled = this.isEnrolled( @@ -313,6 +330,9 @@ public class DeviceTypeManager implements DeviceManager { @Override public boolean isEnrolled(DeviceIdentifier deviceId) throws DeviceManagementException { + if (deviceId == null) { + throw new DeviceManagementException("Cannot check the enrollment status of a null device"); + } if (propertiesExist) { boolean isEnrolled = false; try { @@ -347,6 +367,9 @@ public class DeviceTypeManager implements DeviceManager { @Override public Device getDevice(DeviceIdentifier deviceId) throws DeviceManagementException { + if (deviceId == null) { + throw new DeviceManagementException("Cannot get the device. DeviceIdentifier is null"); + } if (propertiesExist) { Device device; try { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java index d8f77a64a63..ab11f39de0f 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java @@ -41,17 +41,26 @@ public class DeviceDAODefinition { public DeviceDAODefinition(Table table) { + if (table == null) { + throw new DeviceTypeDeployerPayloadException("Table is null. Cannot create DeviceDAODefinition"); + } deviceTableName = table.getName(); primarykey = table.getPrimaryKey(); - List attributes = table.getAttributes().getAttribute(); + if (deviceTableName == null || deviceTableName.isEmpty()) { throw new DeviceTypeDeployerPayloadException("Missing deviceTableName"); } if (primarykey == null || primarykey.isEmpty()) { - throw new DeviceTypeDeployerPayloadException("Missing primaryKey "); + throw new DeviceTypeDeployerPayloadException("Missing primaryKey for the table " + deviceTableName); } + if (table.getAttributes() == null) { + throw new DeviceTypeDeployerPayloadException("Table " + deviceTableName + " attributes are not specified. " + + "Cannot created DeviceDAODefinition"); + } + + List attributes = table.getAttributes().getAttribute(); if (attributes == null || attributes.size() == 0) { throw new DeviceTypeDeployerPayloadException("Missing Attributes "); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOImpl.java index e705661daa0..755cb0397b3 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceTypePluginDAOImpl.java @@ -44,7 +44,6 @@ public class DeviceTypePluginDAOImpl implements PluginDAO { private String selectDBQueryForGetDevice; private String createDBqueryForAddDevice; private String updateDBQueryForUpdateDevice; - private String deleteDBQueryToRemoveDevicd; private String selectDBQueryToGetAllDevice; public DeviceTypePluginDAOImpl(DeviceDAODefinition deviceDAODefinition, @@ -158,33 +157,6 @@ public class DeviceTypePluginDAOImpl implements PluginDAO { return status; } - public boolean deleteDevice(String deviceId) throws DeviceTypeMgtPluginException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = deviceTypeDAOHandler.getConnection(); - stmt = conn.prepareStatement(deleteDBQueryToRemoveDevicd); - stmt.setString(1, deviceId); - int rows = stmt.executeUpdate(); - if (rows > 0) { - status = true; - if (log.isDebugEnabled()) { - log.debug("device " + deviceId + " data has deleted from the " + - deviceDAODefinition.getDeviceTableName() + " table."); - } - } - } catch (SQLException e) { - String msg = - "Error occurred while deleting " + deviceDAODefinition.getDeviceTableName() + " device " + deviceId; - log.error(msg, e); - throw new DeviceTypeMgtPluginException(msg, e); - } finally { - DeviceTypeUtils.cleanupResources(stmt, null); - } - return status; - } - public List getAllDevices() throws DeviceTypeMgtPluginException { Connection conn; PreparedStatement stmt = null; @@ -264,10 +236,6 @@ public class DeviceTypePluginDAOImpl implements PluginDAO { updateDBQueryForUpdateDevice = "UPDATE " + deviceDAODefinition.getDeviceTableName() + " SET " + getDeviceTableColumnNamesForUpdateQuery() + " WHERE " + deviceDAODefinition.getPrimaryKey() + " = ?"; - deleteDBQueryToRemoveDevicd = - "DELETE FROM " + deviceDAODefinition.getDeviceTableName() + " WHERE " + deviceDAODefinition - .getPrimaryKey() + " = ?"; - selectDBQueryToGetAllDevice = "SELECT " + getDeviceTableColumnNames() + "," + deviceDAODefinition.getPrimaryKey() + " FROM " + deviceDAODefinition.getDeviceTableName(); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PluginDAO.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PluginDAO.java index 2ffd37f8f46..47606fe6a63 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PluginDAO.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PluginDAO.java @@ -30,7 +30,5 @@ public interface PluginDAO { boolean updateDevice(Device device) throws DeviceTypeMgtPluginException; - boolean deleteDevice(String deviceId) throws DeviceTypeMgtPluginException; - List getAllDevices() throws DeviceTypeMgtPluginException; } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java index 227c352a82e..ceedeb74546 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/PropertyBasedPluginDAOImpl.java @@ -158,36 +158,6 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO { } } - public boolean deleteDevice(String deviceId) throws DeviceTypeMgtPluginException { - boolean status = false; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = deviceTypeDAOHandler.getConnection(); - stmt = conn.prepareStatement("DELETE FROM DM_DEVICE_PROPERTIES WHERE DEVICE_TYPE_NAME = ? " + - "AND DEVICE_IDENTIFICATION = ? AND TENANT_ID = ?"); - stmt.setString(1, deviceType); - stmt.setString(2, deviceId); - stmt.setInt(3, PrivilegedCarbonContext.getThreadLocalCarbonContext().getTenantId(true)); - int rows = stmt.executeUpdate(); - if (rows > 0) { - status = true; - if (log.isDebugEnabled()) { - log.debug("device " + deviceId + " data has deleted from the " + - deviceType + " table."); - } - } - } catch (SQLException e) { - String msg = - "Error occurred while deleting " + deviceType + " device " + deviceId; - log.error(msg, e); - throw new DeviceTypeMgtPluginException(msg, e); - } finally { - DeviceTypeUtils.cleanupResources(stmt, null); - } - return status; - } - public List getAllDevices() throws DeviceTypeMgtPluginException { Connection conn; PreparedStatement stmt = null; @@ -220,7 +190,7 @@ public class PropertyBasedPluginDAOImpl implements PluginDAO { log.debug( "All device details have fetched from " + deviceType + " table."); } - return Arrays.asList((Device[])deviceMap.values().toArray()); + return new ArrayList<>(deviceMap.values()); } catch (SQLException e) { String msg = "Error occurred while fetching all " + deviceType + " device data'"; diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java index b25547950e3..87f862277c9 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java @@ -26,20 +26,9 @@ public class DeviceTypeDeployerPayloadException extends RuntimeException { super(msg, nestedEx); } - public DeviceTypeDeployerPayloadException(String message, Throwable cause) { - super(message, cause); - } - public DeviceTypeDeployerPayloadException(String msg) { super(msg); } - public DeviceTypeDeployerPayloadException() { - super(); - } - - public DeviceTypeDeployerPayloadException(Throwable cause) { - super(cause); - } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java index b1548eb65f7..1919e88f429 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java @@ -26,20 +26,4 @@ public class DeviceTypeMgtPluginException extends Exception{ super(msg, nestedEx); } - public DeviceTypeMgtPluginException(String message, Throwable cause) { - super(message, cause); - } - - public DeviceTypeMgtPluginException(String msg) { - super(msg); - } - - public DeviceTypeMgtPluginException() { - super(); - } - - public DeviceTypeMgtPluginException(Throwable cause) { - super(cause); - } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java index 8d69cac776a..3ec819a10be 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java @@ -51,7 +51,7 @@ public class BaseExtensionsTest { @BeforeSuite public void init() throws RegistryException, IOException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("license.rxt"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "license.rxt"); String rxt = null; File carbonHome; if (resourceUrl != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java new file mode 100644 index 00000000000..d2d9060d12e --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.extensions.device.type.template; + +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; +import org.wso2.carbon.device.mgt.extensions.utils.Utils; +import org.xml.sax.SAXException; + +import javax.xml.bind.JAXBException; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; +import java.io.IOException; +import java.net.URL; + +/** + * This class tests the negative scenarios in {@link DeviceTypeManager} initialization; + */ +public class DeviceTypeManagerNegativeTest { + private DeviceTypeConfiguration defectiveDeviceTypeConfiguration1; + private DeviceTypeConfiguration defectiveDeviceTypeConfiguration2; + private DeviceTypeConfiguration androidDeviceTypeConfiguration; + private DeviceTypeConfigIdentifier deviceTypeConfigIdentifier; + private final String DEFECTIVE_DEVICE_TYPE = "defectiveDeviceType"; + private final String TABLE_NAME = "DEFECTIVE_DEVICE"; + + @BeforeTest + public void setup() + throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, + IOException { + ClassLoader classLoader = getClass().getClassLoader(); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype.xml"); + File configurationFile = null; + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + defectiveDeviceTypeConfiguration1 = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + deviceTypeConfigIdentifier = new DeviceTypeConfigIdentifier(DEFECTIVE_DEVICE_TYPE, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype2.xml"); + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + defectiveDeviceTypeConfiguration2 = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + androidDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "datasource but by specifying the table id", expectedExceptions = { DeviceTypeDeployerPayloadException + .class}, expectedExceptionsMessageRegExp = "Could not find the datasource related with the table id " + + TABLE_NAME + " for the device type " + DEFECTIVE_DEVICE_TYPE) + public void testWithoutDataSource() { + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration1); + + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "table config",expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Could not find the table config with the table id " + TABLE_NAME + + " for the device type " + DEFECTIVE_DEVICE_TYPE, + dependsOnMethods = {"testWithoutDataSource"}) + public void testWithoutTableConfig() { + DataSource dataSource = new DataSource(); + defectiveDeviceTypeConfiguration1.setDataSource(dataSource); + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration1); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "correct table as per the device details", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Could not find definition for table: " + TABLE_NAME) + public void testWithoutTable() { + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration2); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without having the " + + "actual datasource", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error while looking up the data source.*") + public void testWithoutProperDataSource() { + new DeviceTypeManager(deviceTypeConfigIdentifier, androidDeviceTypeConfiguration); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without having the " + + "actual datasource", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error while looking up the data source.*") + public void testWithSetupParameters() { + System.setProperty("setup", "true"); + new DeviceTypeManager(deviceTypeConfigIdentifier, androidDeviceTypeConfiguration); + + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java index 2e1b1a52ac8..f90d33bd347 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java @@ -124,7 +124,7 @@ public class DeviceTypeManagerServiceTest { operationMonitoringConfigs.set(rasberrypiDeviceTypeManagerService, new OperationMonitoringTaskConfig()); initialOperationConfig.set(rasberrypiDeviceTypeManagerService, new InitialOperationConfig()); - URL resourceUrl = classLoader.getResource("android.xml"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); File androidConfiguration = null; if (resourceUrl != null) { @@ -132,7 +132,7 @@ public class DeviceTypeManagerServiceTest { } androidDeviceConfiguration = Utils.getDeviceTypeConfiguration(androidConfiguration); - resourceUrl = classLoader.getResource("raspberrypi.xml"); + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "raspberrypi.xml"); File raspberrypiConfiguration = null; if (resourceUrl != null) { raspberrypiConfiguration = new File(resourceUrl.getFile()); @@ -304,13 +304,13 @@ public class DeviceTypeManagerServiceTest { throws RegistryException, IOException, SAXException, ParserConfigurationException, DeviceTypeConfigurationException, JAXBException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("arduino.xml"); - File raspberrypiConfiguration = null; + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "arduino.xml"); + File arduinoConfiguration = null; if (resourceUrl != null) { - raspberrypiConfiguration = new File(resourceUrl.getFile()); + arduinoConfiguration = new File(resourceUrl.getFile()); } - arduinoDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(raspberrypiConfiguration); - arduinoDeviceTypeManagerService = new DeviceTypeManagerService(new - DeviceTypeConfigIdentifier("arduino", "carbon.super"), arduinoDeviceTypeConfiguration); + arduinoDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(arduinoConfiguration); + arduinoDeviceTypeManagerService = new DeviceTypeManagerService( + new DeviceTypeConfigIdentifier("arduino", "carbon.super"), arduinoDeviceTypeConfiguration); } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java index 137640f5d86..27ebd3f8277 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java @@ -26,12 +26,16 @@ 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.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Properties; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceDAODefinition; import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypeDAOHandler; import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypePluginDAOImpl; import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.DeviceTypePluginDAOManager; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.PluginDAO; +import org.wso2.carbon.device.mgt.extensions.device.type.template.dao.PropertyBasedPluginDAOImpl; import org.wso2.carbon.device.mgt.extensions.utils.Utils; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.xml.sax.SAXException; @@ -47,46 +51,63 @@ import java.net.URL; import java.sql.Connection; import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; /** - * This class tests the {@link DeviceTypeManager} + * This class tests the {@link DeviceTypeManager}. */ public class DeviceTypeManagerTest { private DeviceTypeManager androidDeviceTypeManager; + private DeviceTypeManager customDeviceTypeManager; private DeviceIdentifier nonExistingDeviceIdentifier; private Device sampleDevice1; private Device sampleDevice2; + private Device customDevice; private String androidDeviceType; + private String customDeviceType = "customDeviceType"; + private Field datasourceField; + private Field currentConnection; + private Field deviceTypePluginDAOField; + private Field deviceTypeDAOHandlerField; + private String[] customDeviceTypeProperties = {"custom_property", "custom_property2"}; + private final String SQL_FOLDER = "sql-files" + File.separator; @BeforeTest(description = "Mocking the classes for testing") public void setup() throws NoSuchFieldException, IllegalAccessException, IOException, SQLException, SAXException, ParserConfigurationException, DeviceTypeConfigurationException, JAXBException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("android_h2.sql"); + URL resourceUrl = classLoader.getResource(SQL_FOLDER + "android_h2.sql"); androidDeviceType = "android"; File androidDatabaseScript = null; javax.sql.DataSource dataSource = null; - File carbonHome = new File("src/test/resources/carbon-home"); + File androidConfiguration = null; if (resourceUrl != null) { androidDatabaseScript = new File(resourceUrl.getFile()); } - if (carbonHome.exists()) { - System.setProperty("carbon.home", carbonHome.getAbsolutePath()); - } - resourceUrl = classLoader.getResource("android.xml"); - File androidConfiguration = null; + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); + if (resourceUrl != null) { androidConfiguration = new File(resourceUrl.getFile()); } + datasourceField = DeviceTypeDAOHandler.class.getDeclaredField("dataSource"); + datasourceField.setAccessible(true); + currentConnection = DeviceTypeDAOHandler.class.getDeclaredField("currentConnection"); + currentConnection.setAccessible(true); + deviceTypePluginDAOField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypePluginDAO"); + deviceTypePluginDAOField.setAccessible(true); + deviceTypeDAOHandlerField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypeDAOHandler"); + deviceTypeDAOHandlerField.setAccessible(true); + DeviceTypeConfiguration androidDeviceConfiguration = Utils.getDeviceTypeConfiguration(androidConfiguration); androidDeviceTypeManager = Mockito.mock(DeviceTypeManager.class, Mockito.CALLS_REAL_METHODS); + customDeviceTypeManager = Mockito.mock(DeviceTypeManager.class, Mockito.CALLS_REAL_METHODS); if (androidDatabaseScript != null) { - dataSource = Utils.createDataTables("deviceType", androidDatabaseScript.getAbsolutePath()); + dataSource = Utils.createDataTables("customDeviceType", androidDatabaseScript.getAbsolutePath()); } - DeviceTypePluginDAOManager deviceTypePluginDAOManager = createMockDeviceTypePluginDAOManager(dataSource, + DeviceTypePluginDAOManager deviceTypePluginDAOManager = createandroidDeviceTypePluginDAOManager(dataSource, androidDeviceConfiguration); Field deviceTypePluginDAOManagerField = DeviceTypeManager.class.getDeclaredField("deviceTypePluginDAOManager"); deviceTypePluginDAOManagerField.setAccessible(true); @@ -96,9 +117,16 @@ public class DeviceTypeManagerTest { propertiesExist.setAccessible(true); Field deviceType = DeviceTypeManager.class.getDeclaredField("deviceType"); deviceType.setAccessible(true); + deviceType.set(androidDeviceTypeManager, androidDeviceType); propertiesExist.set(androidDeviceTypeManager, true); - createDevice(); + createAndroidDevice(); + + DeviceTypePluginDAOManager propertyBasedPluginDAOManager = createPluginBasedDeviceTypeManager(); + deviceTypePluginDAOManagerField.set(customDeviceTypeManager, propertyBasedPluginDAOManager); + deviceType.set(customDeviceTypeManager, customDeviceType); + propertiesExist.set(customDeviceTypeManager, true); + createCustomDevice(); } @Test(description = "This test case tests IsEnrolled method of the DeviceTypeManager", @@ -106,10 +134,17 @@ public class DeviceTypeManagerTest { public void testIsEnrolled() throws DeviceManagementException { DeviceIdentifier deviceIdentifier = new DeviceIdentifier(sampleDevice2.getDeviceIdentifier(), sampleDevice2.getType()); - Assert.assertTrue(!androidDeviceTypeManager.isEnrolled(nonExistingDeviceIdentifier), - "Device with " + "NON-Existing ID is not enrolled, but this shows as enrolled"); + DeviceIdentifier nonExistingCustomDeviceIdentifier = new DeviceIdentifier(sampleDevice2.getDeviceIdentifier(), + customDevice.getType()); + + Assert.assertFalse(androidDeviceTypeManager.isEnrolled(nonExistingDeviceIdentifier), + "Device with NON-Existing ID is not enrolled, but this shows as enrolled"); Assert.assertTrue(androidDeviceTypeManager.isEnrolled(deviceIdentifier), "Enrolled device is shown as un-enrolled"); + Assert.assertFalse(customDeviceTypeManager.isEnrolled(nonExistingCustomDeviceIdentifier), + "Custom device type manager returns an non-existing device as enrolled"); + Assert.assertTrue(customDeviceTypeManager.isEnrolled(new DeviceIdentifier(customDeviceType, customDeviceType)) + , "Enrolled device is shown as un-enrolled in custom device type manager"); } @Test(description = "This test case tests the getDevcie method of the DeviceTypeManager", dependsOnMethods = @@ -120,20 +155,37 @@ public class DeviceTypeManagerTest { Assert.assertNull(androidDeviceTypeManager.getDevice(nonExistingDeviceIdentifier), "Non existing sampleDevice was retrieved"); Assert.assertNotNull(androidDeviceTypeManager.getDevice(existingDeviceIdntifier), - "Existing sampleDevice was retrieved"); + "Existing sampleDevice was not retrieved"); + Device customDevice1 = customDeviceTypeManager + .getDevice(new DeviceIdentifier(customDeviceType, customDeviceType)); + Assert.assertEquals(customDevice1.getProperties().size(), 2, + "GetDevice call" + " failed in custom deviceTypeManager"); } @Test(description = "This test case tests the enrollment of the device") public void testEnrollDevice() throws DeviceManagementException { - Assert.assertTrue(androidDeviceTypeManager.enrollDevice(sampleDevice1)); - Assert.assertTrue(!androidDeviceTypeManager.enrollDevice(sampleDevice2)); + Assert.assertTrue(androidDeviceTypeManager.enrollDevice(sampleDevice1), "New android device enrollment failed"); + Assert.assertFalse(androidDeviceTypeManager.enrollDevice(sampleDevice2), + "Modification to existing android " + "device enrollment failed"); + Assert.assertTrue(customDeviceTypeManager.enrollDevice(customDevice), "Custom device type enrollment failed."); + List properties = customDevice.getProperties(); + Device.Property property = new Device.Property(); + property.setName("test"); + property.setValue("test"); + properties.add(property); + customDevice.setProperties(properties); + Assert.assertFalse(customDeviceTypeManager.enrollDevice(customDevice), + "Custom device type re-enrollment " + "failed."); + } @Test(description = "This test case tests the get all devices method of the DeviceTypeManager", dependsOnMethods = {"testEnrollDevice"}) public void testGetAllDevices() throws DeviceManagementException { Assert.assertEquals(androidDeviceTypeManager.getAllDevices().size(), 1, - "All the added devices are not fetched " + "from the database"); + "All the added devices are not fetched from the database"); + Assert.assertEquals(customDeviceTypeManager.getAllDevices().size(), 1, + "All the added devices are not fetched from the database"); } @Test(description = "This test case tests the addition of platform configuration and retrieval of the same") @@ -147,6 +199,7 @@ public class DeviceTypeManagerTest { "Platform Configuration saved and retrieved correctly in " + "DeviceType Manager"); Assert.assertEquals(actualPlatformConfiguration.getType(), androidDeviceType, "Platform Configuration saved and " + "retrieved correctly in DeviceType Manager"); + Assert.assertNull(customDeviceTypeManager.getConfiguration()); } @Test (description = "This test case tests the getDefaultConfiguration method") @@ -169,9 +222,9 @@ public class DeviceTypeManagerTest { } /** - * To create a sample sampleDevice to add to DAO Layer. + * To create sample android devices to add to DAO Layer. */ - private void createDevice() { + private void createAndroidDevice() { nonExistingDeviceIdentifier = new DeviceIdentifier("NON-EXISTING", androidDeviceType); List list = new ArrayList<>(); @@ -190,6 +243,21 @@ public class DeviceTypeManagerTest { sampleDevice2 = new Device("testdevice1", androidDeviceType, "test", "testdevice", null, null, list); } + /** + * To create a sample custom device. + */ + private void createCustomDevice () { + List list = new ArrayList<>(); + for(String customProperty : customDeviceTypeProperties) { + Device.Property property = new Device.Property(); + property.setName(customProperty); + property.setValue(customProperty); + list.add(property); + } + customDevice = new Device(customDeviceType, customDeviceType, customDeviceType, customDeviceType, null, + null, list); + } + /* * To create a mock sampleDevice type plugin dao manager. * @param dataSource DataSource for the DAO layer @@ -198,13 +266,8 @@ public class DeviceTypeManagerTest { * @throws NoSuchFieldException No Such Field Exception * @throws IllegalAccessException Illegal Access Exception */ - private DeviceTypePluginDAOManager createMockDeviceTypePluginDAOManager(javax.sql.DataSource dataSource, + private DeviceTypePluginDAOManager createandroidDeviceTypePluginDAOManager(javax.sql.DataSource dataSource, DeviceTypeConfiguration androidDeviceConfiguration) throws NoSuchFieldException, IllegalAccessException { - Field datasourceField = DeviceTypeDAOHandler.class.getDeclaredField("dataSource"); - datasourceField.setAccessible(true); - Field currentConnection = DeviceTypeDAOHandler.class.getDeclaredField("currentConnection"); - currentConnection.setAccessible(true); - DeviceTypeDAOHandler deviceTypeDAOHandler = Mockito .mock(DeviceTypeDAOHandler.class, Mockito.CALLS_REAL_METHODS); datasourceField.set(deviceTypeDAOHandler, dataSource); @@ -213,13 +276,52 @@ public class DeviceTypeManagerTest { DeviceDAODefinition deviceDAODefinition = Utils.getDeviceDAODefinition(androidDeviceConfiguration); DeviceTypePluginDAOImpl deviceTypePluginDAO = new DeviceTypePluginDAOImpl(deviceDAODefinition, deviceTypeDAOHandler); + DeviceTypePluginDAOManager deviceTypePluginDAOManager = Mockito + .mock(DeviceTypePluginDAOManager.class, Mockito.CALLS_REAL_METHODS); + deviceTypePluginDAOField.set(deviceTypePluginDAOManager, deviceTypePluginDAO); + deviceTypeDAOHandlerField.set(deviceTypePluginDAOManager, deviceTypeDAOHandler); + + return deviceTypePluginDAOManager; + } + + /** + * To create a plugin based device type manager. + * + * @return Plugin based device type manager. + * @throws IOException IO Exception. + * @throws SQLException SQL Exception + * @throws NoSuchFieldException No Such File Exception. + * @throws IllegalAccessException Illegal Access Exception. + */ + private DeviceTypePluginDAOManager createPluginBasedDeviceTypeManager() + throws IOException, SQLException, NoSuchFieldException, IllegalAccessException { + ClassLoader classLoader = getClass().getClassLoader(); + URL resourceUrl = classLoader.getResource(SQL_FOLDER + "h2.sql"); + File cdmDataScript = null; + javax.sql.DataSource dataSource = null; + if (resourceUrl != null) { + cdmDataScript = new File(resourceUrl.getFile()); + } + if (cdmDataScript != null) { + dataSource = Utils.createDataTables(customDeviceType, cdmDataScript.getAbsolutePath()); + } + + DeviceDetails deviceDetails = new DeviceDetails(); + List propertyList = new ArrayList<>(); + propertyList.addAll(Arrays.asList(customDeviceTypeProperties)); + Properties properties = new Properties(); + properties.addProperties(propertyList); + deviceDetails.setProperties(properties); + + DeviceTypeDAOHandler deviceTypeDAOHandler = Mockito + .mock(DeviceTypeDAOHandler.class, Mockito.CALLS_REAL_METHODS); + datasourceField.set(deviceTypeDAOHandler, dataSource); + currentConnection.set(deviceTypeDAOHandler, new ThreadLocal()); + PluginDAO deviceTypePluginDAO = new PropertyBasedPluginDAOImpl(deviceDetails, deviceTypeDAOHandler, + customDeviceType); DeviceTypePluginDAOManager deviceTypePluginDAOManager = Mockito .mock(DeviceTypePluginDAOManager.class, Mockito.CALLS_REAL_METHODS); - Field deviceTypePluginDAOField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypePluginDAO"); - deviceTypePluginDAOField.setAccessible(true); - Field deviceTypeDAOHandlerField = DeviceTypePluginDAOManager.class.getDeclaredField("deviceTypeDAOHandler"); - deviceTypeDAOHandlerField.setAccessible(true); deviceTypePluginDAOField.set(deviceTypePluginDAOManager, deviceTypePluginDAO); deviceTypeDAOHandlerField.set(deviceTypePluginDAOManager, deviceTypeDAOHandler); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java index 461b9d9f720..7c4ff9ec2c6 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java @@ -21,14 +21,10 @@ package org.wso2.carbon.device.mgt.extensions.device.type.template; import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; -import org.wso2.carbon.CarbonConstants; -import org.wso2.carbon.base.MultitenantConstants; -import org.wso2.carbon.context.PrivilegedCarbonContext; -import org.wso2.carbon.context.RegistryType; -import org.wso2.carbon.context.internal.OSGiDataHolder; 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.configuration.mgt.ConfigurationEntry; import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; @@ -36,19 +32,10 @@ import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Feature; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Operation; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.PushNotificationProvider; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; -import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; -import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; import org.wso2.carbon.device.mgt.extensions.utils.Utils; -import org.wso2.carbon.governance.api.util.GovernanceArtifactConfiguration; -import org.wso2.carbon.governance.api.util.GovernanceUtils; -import org.wso2.carbon.registry.core.Registry; import org.wso2.carbon.registry.core.exceptions.RegistryException; -import org.wso2.carbon.registry.core.service.RegistryService; -import org.wso2.carbon.registry.core.session.UserRegistry; -import org.wso2.carbon.utils.FileUtil; import org.xml.sax.SAXException; import javax.xml.bind.JAXBException; @@ -59,8 +46,6 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; -import static org.wso2.carbon.governance.api.util.GovernanceUtils.getGovernanceArtifactConfiguration; - /** * This test case contains the tests for {@link HTTPDeviceTypeManagerService} and {@link DeviceTypeGeneratorServiceImpl} */ @@ -69,7 +54,7 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { private HTTPDeviceTypeManagerService httpDeviceTypeManagerService; private DeviceTypeGeneratorServiceImpl deviceTypeGeneratorService; private String androidSenseDeviceType = "androidsense"; - private String sampleDeviceType = "sample"; + private DeviceManagementService generatedDeviceManagementService; @BeforeTest public void setup() throws RegistryException, IOException, SAXException, ParserConfigurationException, @@ -100,12 +85,63 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { @Test(description = "This test case tests the populate device management service method") public void testPopulateDeviceManagementService() { - DeviceManagementService deviceManagementService = deviceTypeGeneratorService + String sampleDeviceType = "sample"; + generatedDeviceManagementService = deviceTypeGeneratorService .populateDeviceManagementService(sampleDeviceType, deviceTypeMetaDefinition); - Assert.assertEquals(deviceManagementService.getType(), sampleDeviceType, + Assert.assertEquals(generatedDeviceManagementService.getType(), sampleDeviceType, "DeviceTypeGeneration for the " + "sample device type failed"); } + @Test(description = "This test case tests the get configuration of the populated device management service though" + + " DeviceTypeGeneratorService", dependsOnMethods = {"testPopulateDeviceManagementService"}) + public void testGetConfiguration() throws DeviceManagementException, ClassNotFoundException, JAXBException { + PlatformConfiguration platformConfiguration = generatedDeviceManagementService.getDeviceManager() + .getConfiguration(); + Assert.assertNotNull(platformConfiguration, + "Default platform configuration is not added to sample device " + "type from the file system"); + + List configurationEntries = platformConfiguration.getConfiguration(); + Assert.assertNotNull(configurationEntries, + "Platform Configuration entries are not parsed and saved " + "correctly for device type sample"); + Assert.assertEquals(configurationEntries.size(), 1, + "Platform configuration is not saved correctly for " + "device type sample"); + + ConfigurationEntry configurationEntry = configurationEntries.get(0); + + Assert.assertEquals(configurationEntry.getName(), "test", + "Platform Configuration for device type " + "sample is not saved correctly"); + + String contentType = configurationEntry.getContentType(); + Assert.assertEquals(contentType, "String", + "Content type added in default platform configuration is different from the retrieved value"); + + } + + + @Test(description = "This test case tests the negative scenarios when saving the platform configurations", + expectedExceptions = {DeviceManagementException.class}) + public void testSaveConfiguration() throws DeviceManagementException { + httpDeviceTypeManagerService.getDeviceManager().saveConfiguration(null); + } + + @Test(description = "This test case tests the negative scenarios when getting a device", + expectedExceptions = {DeviceManagementException.class}) + public void testGetDevice() throws DeviceManagementException { + httpDeviceTypeManagerService.getDeviceManager().getDevice(null); + } + + @Test(description = "This test case tests the negative scenario when checking whether a device has enrolled", + expectedExceptions = {DeviceManagementException.class}) + public void testIsEnrolled() throws DeviceManagementException { + httpDeviceTypeManagerService.getDeviceManager().isEnrolled(null); + } + + @Test(description = "This test case tests the negative scenario when enrolling a device", + expectedExceptions = {DeviceManagementException.class}) + public void testEnroll() throws DeviceManagementException { + httpDeviceTypeManagerService.getDeviceManager().enrollDevice(null); + } + /** * To create a sample device type meta defintion. * @throws SAXException SAX Exception. @@ -118,7 +154,7 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, IOException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("android_sense.xml"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android_sense.xml"); File androidSenseConfiguration = null; if (resourceUrl != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java new file mode 100644 index 00000000000..a96fb0d7330 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.extensions.device.type.template.dao; + +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Table; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; + +/** + * This class tests the negative scenarios related with {@link DeviceDAODefinition} + */ +public class DeviceDAODefinitionNegativeTest { + private final String DEVICE_TABLE_NAME = "DEVICE_TABLE"; + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the table is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Table is null. Cannot create DeviceDAODefinition") + public void testWhenTableIsNull() { + new DeviceDAODefinition(null); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the table name is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Missing deviceTableName") + public void testWhenTableNameIsNull() { + new DeviceDAODefinition(new Table()); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the primary key is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Missing primaryKey for the table " + DEVICE_TABLE_NAME) + public void testWhenPrimaryKeyIsEmpty() { + Table deviceTable = new Table(); + deviceTable.setName(DEVICE_TABLE_NAME); + deviceTable.setPrimaryKey(""); + new DeviceDAODefinition(deviceTable); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the attributes is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Table " + DEVICE_TABLE_NAME + " attributes are not specified. " + + "Cannot created DeviceDAODefinition") + public void testWhenAttributesIsNull() { + Table deviceTable = new Table(); + deviceTable.setName(DEVICE_TABLE_NAME); + deviceTable.setPrimaryKey("primaryKey"); + new DeviceDAODefinition(deviceTable); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java index 0e6c37cd1b0..d35b8eba93e 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java @@ -21,7 +21,6 @@ package org.wso2.carbon.device.mgt.extensions.utils; import org.h2.jdbcx.JdbcDataSource; import org.w3c.dom.Document; -import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; @@ -56,16 +55,18 @@ import java.util.List; * This class handles the test utility tasks. */ public class Utils { + public static final String DEVICE_TYPE_FOLDER = "device-types" + File.separator; /** * To get the device type configuration based on the configuration file + * * @param configurationFile Relevant configuration file of a device type * @return the DeviceTypeConfiguration object of the relevant Device Type * @throws DeviceTypeConfigurationException DeviceType Configuration Exception - * @throws IOException IO Exception - * @throws SAXException SAX Exception - * @throws ParserConfigurationException Parser Configuration Exception - * @throws JAXBException JAXB Exception + * @throws IOException IO Exception + * @throws SAXException SAX Exception + * @throws ParserConfigurationException Parser Configuration Exception + * @throws JAXBException JAXB Exception */ public static DeviceTypeConfiguration getDeviceTypeConfiguration(File configurationFile) throws DeviceTypeConfigurationException, IOException, SAXException, ParserConfigurationException, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml new file mode 100644 index 00000000000..5c529cdfa94 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml @@ -0,0 +1,28 @@ + + + + + + sample + + test + String + test + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml similarity index 99% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml index 2cc394bde1c..176469c3299 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml @@ -378,4 +378,4 @@ admin - \ No newline at end of file + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_sense.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android_sense.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_sense.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android_sense.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/arduino.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/arduino.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/arduino.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/arduino.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml new file mode 100644 index 00000000000..965b0cebe2f --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml @@ -0,0 +1,45 @@ + + + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml new file mode 100644 index 00000000000..0f1baff1c32 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml @@ -0,0 +1,55 @@ + + + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + + + jdbc/MobileAndroidDM_DS + + +
+
+ + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/license.rxt b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/license.rxt similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/license.rxt rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/license.rxt diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/raspberrypi.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/raspberrypi.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/raspberrypi.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/raspberrypi.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sample.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/sample.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sample.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/sample.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/android_h2.sql similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_h2.sql rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/android_h2.sql diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql new file mode 100644 index 00000000000..686d0a6b3b9 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql @@ -0,0 +1,531 @@ +CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE ( + ID INT AUTO_INCREMENT NOT NULL, + NAME VARCHAR(300) NULL DEFAULT NULL, + DEVICE_TYPE_META VARCHAR(20000) NULL DEFAULT NULL, + LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL, + PROVIDER_TENANT_ID INTEGER DEFAULT 0, + SHARED_WITH_ALL_TENANTS BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_GROUP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + GROUP_NAME VARCHAR(100) DEFAULT NULL, + DESCRIPTION TEXT DEFAULT NULL, + OWNER VARCHAR(45) DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_ROLE_GROUP_MAP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + GROUP_ID INTEGER DEFAULT NULL, + ROLE VARCHAR(45) DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_ROLE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID) + REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE ( + ID INTEGER auto_increment NOT NULL, + DESCRIPTION TEXT DEFAULT NULL, + NAME VARCHAR(100) DEFAULT NULL, + DEVICE_TYPE_ID INT(11) DEFAULT NULL, + DEVICE_IDENTIFICATION VARCHAR(300) DEFAULT NULL, + LAST_UPDATED_TIMESTAMP TIMESTAMP NOT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_DEVICE_DM_DEVICE_TYPE2 FOREIGN KEY (DEVICE_TYPE_ID) + REFERENCES DM_DEVICE_TYPE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT uk_DM_DEVICE UNIQUE (NAME, DEVICE_TYPE_ID, DEVICE_IDENTIFICATION, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_PROPERTIES ( + DEVICE_TYPE_NAME VARCHAR(300) NOT NULL, + DEVICE_IDENTIFICATION VARCHAR(300) NOT NULL, + PROPERTY_NAME VARCHAR(100) DEFAULT 0, + PROPERTY_VALUE VARCHAR(100) DEFAULT NULL, + TENANT_ID VARCHAR(100), + PRIMARY KEY (DEVICE_TYPE_NAME, DEVICE_IDENTIFICATION, PROPERTY_NAME, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_MAP ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER DEFAULT NULL, + GROUP_ID INTEGER DEFAULT NULL, + TENANT_ID INTEGER DEFAULT 0, + PRIMARY KEY (ID), + CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_DEVICE2 FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT fk_DM_DEVICE_GROUP_MAP_DM_GROUP2 FOREIGN KEY (GROUP_ID) + REFERENCES DM_GROUP (ID) ON DELETE CASCADE ON UPDATE CASCADE +); + +CREATE TABLE IF NOT EXISTS DM_OPERATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + TYPE VARCHAR(50) NOT NULL, + CREATED_TIMESTAMP TIMESTAMP NOT NULL, + RECEIVED_TIMESTAMP TIMESTAMP NULL, + OPERATION_CODE VARCHAR(1000) NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_CONFIG_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + OPERATION_CONFIG BLOB DEFAULT NULL, + ENABLED BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_config FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_COMMAND_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED BOOLEAN NOT NULL DEFAULT FALSE, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_command FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED INTEGER NOT NULL DEFAULT 0, + OPERATION_DETAILS BLOB DEFAULT NULL, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_policy FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_PROFILE_OPERATION ( + OPERATION_ID INTEGER NOT NULL, + ENABLED INTEGER NOT NULL DEFAULT 0, + OPERATION_DETAILS BLOB DEFAULT NULL, + PRIMARY KEY (OPERATION_ID), + CONSTRAINT fk_dm_operation_profile FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_ENROLMENT ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + OWNER VARCHAR(50) NOT NULL, + OWNERSHIP VARCHAR(45) DEFAULT NULL, + STATUS VARCHAR(50) NULL, + DATE_OF_ENROLMENT TIMESTAMP DEFAULT NULL, + DATE_OF_LAST_UPDATE TIMESTAMP DEFAULT NULL, + TENANT_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_enrolment FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT uk_dm_device_enrolment UNIQUE (DEVICE_ID, OWNER, OWNERSHIP, TENANT_ID) +); + +CREATE TABLE IF NOT EXISTS DM_ENROLMENT_OP_MAPPING ( + ID INTEGER AUTO_INCREMENT NOT NULL, + ENROLMENT_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + STATUS VARCHAR(50) NULL, + PUSH_NOTIFICATION_STATUS VARCHAR(50) NULL, + CREATED_TIMESTAMP INT NOT NULL, + UPDATED_TIMESTAMP INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_operation_mapping_device FOREIGN KEY (ENROLMENT_ID) REFERENCES + DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_device_operation_mapping_operation FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_OPERATION_RESPONSE ( + ID INTEGER AUTO_INCREMENT NOT NULL, + ENROLMENT_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + EN_OP_MAP_ID INTEGER NOT NULL, + OPERATION_RESPONSE LONGBLOB DEFAULT NULL, + RECEIVED_TIMESTAMP TIMESTAMP NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device_operation_response_enrollment FOREIGN KEY (ENROLMENT_ID) REFERENCES + DM_ENROLMENT (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_device_operation_response_operation FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_en_op_map_response FOREIGN KEY (EN_OP_MAP_ID) REFERENCES + DM_ENROLMENT_OP_MAPPING (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +-- POLICY RELATED TABLES -- + +CREATE TABLE IF NOT EXISTS DM_PROFILE ( + ID INT NOT NULL AUTO_INCREMENT , + PROFILE_NAME VARCHAR(45) NOT NULL , + TENANT_ID INT NOT NULL , + DEVICE_TYPE VARCHAR(300) NOT NULL , + CREATED_TIME DATETIME NOT NULL , + UPDATED_TIME DATETIME NOT NULL , + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + NAME VARCHAR(45) DEFAULT NULL , + DESCRIPTION VARCHAR(1000) NULL, + TENANT_ID INT(11) NOT NULL , + PROFILE_ID INT(11) NOT NULL , + OWNERSHIP_TYPE VARCHAR(45) NULL, + COMPLIANCE VARCHAR(100) NULL, + PRIORITY INT NOT NULL, + ACTIVE INT(2) NOT NULL, + UPDATED INT(1) NULL, + PRIMARY KEY (ID) , + CONSTRAINT FK_DM_PROFILE_DM_POLICY + FOREIGN KEY (PROFILE_ID ) + REFERENCES DM_PROFILE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + DEVICE_ID INT(11) NOT NULL , + ENROLMENT_ID INT(11) NOT NULL, + DEVICE BLOB NOT NULL, + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_POLICY_DEVICE_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT FK_DEVICE_DEVICE_POLICY + FOREIGN KEY (DEVICE_ID ) + REFERENCES DM_DEVICE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_TYPE_POLICY ( + ID INT(11) NOT NULL , + DEVICE_TYPE VARCHAR(300) NOT NULL , + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_DEVICE_TYPE_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_PROFILE_FEATURES ( + ID INT(11) NOT NULL AUTO_INCREMENT, + PROFILE_ID INT(11) NOT NULL, + FEATURE_CODE VARCHAR(100) NOT NULL, + DEVICE_TYPE VARCHAR(300) NOT NULL, + TENANT_ID INT(11) NOT NULL , + CONTENT BLOB NULL DEFAULT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_PROFILE_DM_POLICY_FEATURES + FOREIGN KEY (PROFILE_ID) + REFERENCES DM_PROFILE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_ROLE_POLICY ( + ID INT(11) NOT NULL AUTO_INCREMENT , + ROLE_NAME VARCHAR(45) NOT NULL , + POLICY_ID INT(11) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_ROLE_POLICY_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_USER_POLICY ( + ID INT NOT NULL AUTO_INCREMENT , + POLICY_ID INT NOT NULL , + USERNAME VARCHAR(45) NOT NULL , + PRIMARY KEY (ID) , + CONSTRAINT DM_POLICY_USER_POLICY + FOREIGN KEY (POLICY_ID ) + REFERENCES DM_POLICY (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_POLICY_APPLIED ( + ID INT NOT NULL AUTO_INCREMENT , + DEVICE_ID INT NOT NULL , + ENROLMENT_ID INT(11) NOT NULL, + POLICY_ID INT NOT NULL , + POLICY_CONTENT BLOB NULL , + TENANT_ID INT NOT NULL, + APPLIED TINYINT(1) NULL , + CREATED_TIME TIMESTAMP NULL , + UPDATED_TIME TIMESTAMP NULL , + APPLIED_TIME TIMESTAMP NULL , + PRIMARY KEY (ID) , + CONSTRAINT FK_DM_POLICY_DEVCIE_APPLIED + FOREIGN KEY (DEVICE_ID ) + REFERENCES DM_DEVICE (ID ) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_CRITERIA ( + ID INT NOT NULL AUTO_INCREMENT, + TENANT_ID INT NOT NULL, + NAME VARCHAR(50) NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA ( + ID INT NOT NULL AUTO_INCREMENT, + CRITERIA_ID INT NOT NULL, + POLICY_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_CRITERIA_POLICY_CRITERIA + FOREIGN KEY (CRITERIA_ID) + REFERENCES DM_CRITERIA (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION, + CONSTRAINT FK_POLICY_POLICY_CRITERIA + FOREIGN KEY (POLICY_ID) + REFERENCES DM_POLICY (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CRITERIA_PROPERTIES ( + ID INT NOT NULL AUTO_INCREMENT, + POLICY_CRITERION_ID INT NOT NULL, + PROP_KEY VARCHAR(45) NULL, + PROP_VALUE VARCHAR(100) NULL, + CONTENT BLOB NULL COMMENT 'This is used to ', + PRIMARY KEY (ID), + CONSTRAINT FK_POLICY_CRITERIA_PROPERTIES + FOREIGN KEY (POLICY_CRITERION_ID) + REFERENCES DM_POLICY_CRITERIA (ID) + ON DELETE CASCADE + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_STATUS ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_ID INT NOT NULL, + ENROLMENT_ID INT(11) NOT NULL, + POLICY_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + STATUS INT NULL, + LAST_SUCCESS_TIME TIMESTAMP NULL, + LAST_REQUESTED_TIME TIMESTAMP NULL, + LAST_FAILED_TIME TIMESTAMP NULL, + ATTEMPTS INT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_CHANGE_MGT ( + ID INT NOT NULL AUTO_INCREMENT, + POLICY_ID INT NOT NULL, + DEVICE_TYPE VARCHAR(300) NOT NULL , + TENANT_ID INT(11) NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_POLICY_COMPLIANCE_FEATURES ( + ID INT NOT NULL AUTO_INCREMENT, + COMPLIANCE_STATUS_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + FEATURE_CODE VARCHAR(100) NOT NULL, + STATUS INT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_COMPLIANCE_FEATURES_STATUS + FOREIGN KEY (COMPLIANCE_STATUS_ID) + REFERENCES DM_POLICY_COMPLIANCE_STATUS (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_APPLICATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + NAME VARCHAR(150) NOT NULL, + APP_IDENTIFIER VARCHAR(150) NOT NULL, + PLATFORM VARCHAR(50) DEFAULT NULL, + CATEGORY VARCHAR(50) NULL, + VERSION VARCHAR(50) NULL, + TYPE VARCHAR(50) NULL, + LOCATION_URL VARCHAR(100) DEFAULT NULL, + IMAGE_URL VARCHAR(100) DEFAULT NULL, + APP_PROPERTIES BLOB NULL, + MEMORY_USAGE INTEGER(10) NULL, + IS_ACTIVE BOOLEAN NOT NULL DEFAULT FALSE, + TENANT_ID INTEGER NOT NULL, + PRIMARY KEY (ID) +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_APPLICATION_MAPPING ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + APPLICATION_ID INTEGER NOT NULL, + TENANT_ID INTEGER NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT fk_dm_device FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_application FOREIGN KEY (APPLICATION_ID) REFERENCES + DM_APPLICATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); + +-- POLICY RELATED TABLES FINISHED -- + +-- NOTIFICATION TABLE -- +CREATE TABLE IF NOT EXISTS DM_NOTIFICATION ( + NOTIFICATION_ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INTEGER NOT NULL, + OPERATION_ID INTEGER NOT NULL, + TENANT_ID INTEGER NOT NULL, + STATUS VARCHAR(10) NULL, + DESCRIPTION VARCHAR(1000) NULL, + PRIMARY KEY (NOTIFICATION_ID), + CONSTRAINT fk_dm_device_notification FOREIGN KEY (DEVICE_ID) REFERENCES + DM_DEVICE (ID) ON DELETE NO ACTION ON UPDATE NO ACTION, + CONSTRAINT fk_dm_operation_notification FOREIGN KEY (OPERATION_ID) REFERENCES + DM_OPERATION (ID) ON DELETE NO ACTION ON UPDATE NO ACTION +); +-- NOTIFICATION TABLE END -- + +CREATE TABLE IF NOT EXISTS DM_DEVICE_INFO ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INT NULL, + KEY_FIELD VARCHAR(45) NULL, + VALUE_FIELD VARCHAR(100) NULL, + PRIMARY KEY (ID), + CONSTRAINT DM_DEVICE_INFO_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_LOCATION ( + ID INTEGER AUTO_INCREMENT NOT NULL, + DEVICE_ID INT NULL, + LATITUDE DOUBLE NULL, + LONGITUDE DOUBLE NULL, + STREET1 VARCHAR(255) NULL, + STREET2 VARCHAR(45) NULL, + CITY VARCHAR(45) NULL, + ZIP VARCHAR(10) NULL, + STATE VARCHAR(45) NULL, + COUNTRY VARCHAR(45) NULL, + UPDATE_TIMESTAMP BIGINT(15) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT DM_DEVICE_LOCATION_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +CREATE TABLE IF NOT EXISTS DM_DEVICE_DETAIL ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_ID INT NOT NULL, + DEVICE_MODEL VARCHAR(45) NULL, + VENDOR VARCHAR(45) NULL, + OS_VERSION VARCHAR(45) NULL, + OS_BUILD_DATE VARCHAR(100) NULL, + BATTERY_LEVEL DECIMAL(4) NULL, + INTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL, + INTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL, + EXTERNAL_TOTAL_MEMORY DECIMAL(30,3) NULL, + EXTERNAL_AVAILABLE_MEMORY DECIMAL(30,3) NULL, + CONNECTION_TYPE VARCHAR(50) NULL, + SSID VARCHAR(45) NULL, + CPU_USAGE DECIMAL(5) NULL, + TOTAL_RAM_MEMORY DECIMAL(30,3) NULL, + AVAILABLE_RAM_MEMORY DECIMAL(30,3) NULL, + PLUGGED_IN INT(1) NULL, + UPDATE_TIMESTAMP BIGINT(15) NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_DEVICE_DETAILS_DEVICE + FOREIGN KEY (DEVICE_ID) + REFERENCES DM_DEVICE (ID) + ON DELETE NO ACTION + ON UPDATE NO ACTION +); + +-- POLICY AND DEVICE GROUP MAPPING -- +CREATE TABLE IF NOT EXISTS DM_DEVICE_GROUP_POLICY ( + ID INT NOT NULL AUTO_INCREMENT, + DEVICE_GROUP_ID INT NOT NULL, + POLICY_ID INT NOT NULL, + TENANT_ID INT NOT NULL, + PRIMARY KEY (ID), + CONSTRAINT FK_DM_DEVICE_GROUP_POLICY + FOREIGN KEY (DEVICE_GROUP_ID) + REFERENCES DM_GROUP (ID) + ON DELETE CASCADE + ON UPDATE CASCADE , + CONSTRAINT FK_DM_DEVICE_GROUP_DM_POLICY + FOREIGN KEY (POLICY_ID) + REFERENCES DM_POLICY (ID) + ON DELETE CASCADE + ON UPDATE CASCADE +); +-- END OF POLICY AND DEVICE GROUP MAPPING -- + +-- DASHBOARD RELATED VIEWS -- +CREATE VIEW POLICY_COMPLIANCE_INFO AS +SELECT +DEVICE_INFO.DEVICE_ID, +DEVICE_INFO.DEVICE_IDENTIFICATION, +DEVICE_INFO.PLATFORM, +DEVICE_INFO.OWNERSHIP, +DEVICE_INFO.CONNECTIVITY_STATUS, +IFNULL(DEVICE_WITH_POLICY_INFO.POLICY_ID, -1) AS POLICY_ID, +IFNULL(DEVICE_WITH_POLICY_INFO.IS_COMPLIANT, -1) AS IS_COMPLIANT, +DEVICE_INFO.TENANT_ID +FROM +(SELECT +DM_DEVICE.ID AS DEVICE_ID, +DM_DEVICE.DEVICE_IDENTIFICATION, +DM_DEVICE_TYPE.NAME AS PLATFORM, +DM_ENROLMENT.OWNERSHIP, +DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS, +DM_DEVICE.TENANT_ID +FROM DM_DEVICE, DM_DEVICE_TYPE, DM_ENROLMENT +WHERE DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND DM_DEVICE.ID = DM_ENROLMENT.DEVICE_ID) DEVICE_INFO +LEFT JOIN +(SELECT +DEVICE_ID, +POLICY_ID, +STATUS AS IS_COMPLIANT +FROM DM_POLICY_COMPLIANCE_STATUS) DEVICE_WITH_POLICY_INFO +ON DEVICE_INFO.DEVICE_ID = DEVICE_WITH_POLICY_INFO.DEVICE_ID +ORDER BY DEVICE_INFO.DEVICE_ID; + +CREATE VIEW FEATURE_NON_COMPLIANCE_INFO AS +SELECT +DM_DEVICE.ID AS DEVICE_ID, +DM_DEVICE.DEVICE_IDENTIFICATION, +DM_DEVICE_DETAIL.DEVICE_MODEL, +DM_DEVICE_DETAIL.VENDOR, +DM_DEVICE_DETAIL.OS_VERSION, +DM_ENROLMENT.OWNERSHIP, +DM_ENROLMENT.OWNER, +DM_ENROLMENT.STATUS AS CONNECTIVITY_STATUS, +DM_POLICY_COMPLIANCE_STATUS.POLICY_ID, +DM_DEVICE_TYPE.NAME AS PLATFORM, +DM_POLICY_COMPLIANCE_FEATURES.FEATURE_CODE, +DM_POLICY_COMPLIANCE_FEATURES.STATUS AS IS_COMPLAINT, +DM_DEVICE.TENANT_ID +FROM +DM_POLICY_COMPLIANCE_FEATURES, DM_POLICY_COMPLIANCE_STATUS, DM_ENROLMENT, DM_DEVICE, DM_DEVICE_TYPE, DM_DEVICE_DETAIL +WHERE +DM_POLICY_COMPLIANCE_FEATURES.COMPLIANCE_STATUS_ID = DM_POLICY_COMPLIANCE_STATUS.ID AND +DM_POLICY_COMPLIANCE_STATUS.ENROLMENT_ID = DM_ENROLMENT.ID AND +DM_POLICY_COMPLIANCE_STATUS.DEVICE_ID = DM_DEVICE.ID AND +DM_DEVICE.DEVICE_TYPE_ID = DM_DEVICE_TYPE.ID AND +DM_DEVICE.ID = DM_DEVICE_DETAIL.DEVICE_ID +ORDER BY TENANT_ID, DEVICE_ID; + +-- END OF DASHBOARD RELATED VIEWS -- diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml index bad5807be53..f37097fda10 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml @@ -27,6 +27,8 @@ + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml index 4add72b05a9..6a094e5a846 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.ui/pom.xml @@ -22,7 +22,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml index b4f9f2ff48d..52aa0f88b80 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.url.printer/pom.xml @@ -23,7 +23,7 @@ device-mgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/device-mgt/pom.xml b/components/device-mgt/pom.xml index 7a4819b67b8..b46ea319f6a 100644 --- a/components/device-mgt/pom.xml +++ b/components/device-mgt/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml index f4da29cfb66..54578c77896 100644 --- a/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml +++ b/components/email-sender/org.wso2.carbon.email.sender.core/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt email-sender - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/email-sender/pom.xml b/components/email-sender/pom.xml index d42a6bbf835..1d71323cbb5 100644 --- a/components/email-sender/pom.xml +++ b/components/email-sender/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml index 441008555f3..75afb3309b5 100644 --- a/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.device.mgt.oauth.extensions/pom.xml @@ -22,13 +22,13 @@ org.wso2.carbon.devicemgt identity-extensions - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.oauth.extensions - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - OAuth Extensions http://wso2.org diff --git a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml index 7796f032ad5..38bc34bc0cf 100644 --- a/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.identity.authenticator.backend.oauth/pom.xml @@ -21,7 +21,7 @@ identity-extensions org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT 4.0.0 diff --git a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml index 92fd8421e1d..d4cbf4780ff 100644 --- a/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml +++ b/components/identity-extensions/org.wso2.carbon.identity.jwt.client.extension/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt identity-extensions - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/components/identity-extensions/pom.xml b/components/identity-extensions/pom.xml index 5f559949afe..9089204ee81 100644 --- a/components/identity-extensions/pom.xml +++ b/components/identity-extensions/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml index ac387824574..8ef5b9987b3 100644 --- a/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.complex.policy.decision.point/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.complex.policy.decision.point - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Policy Decision Point WSO2 Carbon - Policy Decision Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml index 93d44acd50d..f724bd95edd 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.decision.point/pom.xml @@ -3,14 +3,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.decision.point - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Policy Decision Point WSO2 Carbon - Policy Decision Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml index f3e8835fadf..83b3483dabc 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.information.point/pom.xml @@ -3,7 +3,7 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml @@ -11,7 +11,7 @@ 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.information.point - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Policy Information Point WSO2 Carbon - Policy Information Point diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml index 4ccdb6d360f..1a2629aa574 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.common/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.mgt.common - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Policy Management Common WSO2 Carbon - Policy Management Common diff --git a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml index ba2f44593cb..f0f112329da 100644 --- a/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml +++ b/components/policy-mgt/org.wso2.carbon.policy.mgt.core/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.policy.mgt.core - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Policy Management Core WSO2 Carbon - Policy Management Core diff --git a/components/policy-mgt/pom.xml b/components/policy-mgt/pom.xml index 9accb9006b6..0f34bf31fc6 100644 --- a/components/policy-mgt/pom.xml +++ b/components/policy-mgt/pom.xml @@ -23,13 +23,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 policy-mgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Policy Management Component http://wso2.org diff --git a/components/test-coverage/pom.xml b/components/test-coverage/pom.xml index 80b05f27773..d5b06418e67 100644 --- a/components/test-coverage/pom.xml +++ b/components/test-coverage/pom.xml @@ -21,7 +21,7 @@ carbon-devicemgt org.wso2.carbon.devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml index a6ab1f42b84..3cfdbb3f482 100644 --- a/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml +++ b/components/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt webapp-authenticator-framework - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.devicemgt org.wso2.carbon.webapp.authenticator.framework - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT bundle WSO2 Carbon - Web Application Authenticator Framework Bundle WSO2 Carbon - Web Application Authenticator Framework Bundle diff --git a/components/webapp-authenticator-framework/pom.xml b/components/webapp-authenticator-framework/pom.xml index b8986a852ed..416798aa08f 100644 --- a/components/webapp-authenticator-framework/pom.xml +++ b/components/webapp-authenticator-framework/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt webapp-authenticator-framework - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Webapp Authenticator Framework http://wso2.org diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml index 3ed7f6cf52a..d1b90b4ae46 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.application.extension.feature/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.application.extension.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - API Management Application Extension Feature http://wso2.org This feature contains an implementation of a api application registration, which takes care of subscription diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml index 05f1314f046..069807949a9 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.handler.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.handler.server.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Management - APIM handler Server Feature http://wso2.org This feature contains the handler for the api authentications diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml index 8db411c066b..936f6424195 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.integration.client.feature/pom.xml @@ -21,13 +21,13 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.integration.client.feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - APIM Integration Client Feature http://wso2.org diff --git a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml index 2917b8e89b4..6013ee713f0 100644 --- a/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml +++ b/features/apimgt-extensions/org.wso2.carbon.apimgt.webapp.publisher.feature/pom.xml @@ -21,14 +21,14 @@ org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.apimgt.webapp.publisher.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - API Management Webapp Publisher Feature http://wso2.org This feature contains an implementation of a Tomcat lifecycle listener, which takes care of publishing diff --git a/features/apimgt-extensions/pom.xml b/features/apimgt-extensions/pom.xml index c5247860706..b045cedf923 100644 --- a/features/apimgt-extensions/pom.xml +++ b/features/apimgt-extensions/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt apimgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - API Management Extensions Feature http://wso2.org diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml index 60e533a774d..1770f627231 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml index 495839216a1..a15a4f1c277 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.cert.admin.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml index 4c7d87698a9..2006387e0f9 100644 --- a/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml +++ b/features/certificate-mgt/org.wso2.carbon.certificate.mgt.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.certificate.mgt.server.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Certificate Management Server Feature http://wso2.org This feature contains the core bundles required for back-end Certificate Management functionality diff --git a/features/certificate-mgt/pom.xml b/features/certificate-mgt/pom.xml index 762024f6bbb..1e1ddb4c4c5 100644 --- a/features/certificate-mgt/pom.xml +++ b/features/certificate-mgt/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt certificate-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Certificate Management Feature http://wso2.org diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml index fb5d66eece6..3886dbf7a42 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.device.type.deployer.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Type Deployer Feature http://wso2.org WSO2 Carbon - Device Type Deployer Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml index 5b37e1f7082..041e279945e 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.fcm.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - FCM Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml index e071f074885..140e3028d05 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.http.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - MQTT Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml index d42c5d09a48..8e361295dc0 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.mqtt.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - MQTT Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - MQTT Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml index f1b7763b295..d31759fc267 100644 --- a/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml +++ b/features/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.push.notification.provider.xmpp.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - XMPP Based Push Notification Provider Feature http://wso2.org WSO2 Carbon - XMPP Based Push Notification Provider Feature diff --git a/features/device-mgt-extensions/pom.xml b/features/device-mgt-extensions/pom.xml index 4cf7e1198cd..ba63b0965a3 100644 --- a/features/device-mgt-extensions/pom.xml +++ b/features/device-mgt-extensions/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml index 97d6cedd2bb..3c6c8610aa4 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.dashboard.feature/pom.xml @@ -3,13 +3,13 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.analytics.dashboard.feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Device Management Dashboard Analytics Feature WSO2 Carbon - Device Management Dashboard Analytics Feature diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml index 7d09ba47692..49c90a3a618 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.analytics.data.publisher.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.analytics.data.publisher.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Management Server Feature http://wso2.org This feature contains bundles related to device analytics data publisher diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml index 413677d2a34..b25a613d42b 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.api.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml index 0550c240c63..cba58e06835 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.extensions.feature/pom.xml @@ -4,14 +4,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.extensions.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Management Extensions Feature http://wso2.org This feature contains common extensions used by key device management functionalities diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml index 8fd2ef5df5f..13950abc328 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml index ba876ae4915..c5b370e626b 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.server.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Management Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml index 2782b9304c1..0a4a5a491a0 100644 --- a/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml +++ b/features/device-mgt/org.wso2.carbon.device.mgt.ui.feature/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt device-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml diff --git a/features/device-mgt/pom.xml b/features/device-mgt/pom.xml index 9b71abb5a74..d6efafd33ed 100644 --- a/features/device-mgt/pom.xml +++ b/features/device-mgt/pom.xml @@ -22,7 +22,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml diff --git a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml index 80cfeab85cd..e9016fe4a76 100644 --- a/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml +++ b/features/email-sender/org.wso2.carbon.email.sender.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt email-sender-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.email.sender.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Email Sender Feature http://wso2.org This feature contains the core bundles required for email sender related functionality diff --git a/features/email-sender/pom.xml b/features/email-sender/pom.xml index d312ca3046b..752a5d2b024 100644 --- a/features/email-sender/pom.xml +++ b/features/email-sender/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt email-sender-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Email Sender Feature http://wso2.org diff --git a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml index ec78ce205c7..8fd94c7022d 100644 --- a/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml +++ b/features/jwt-client/org.wso2.carbon.identity.jwt.client.extension.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt jwt-client-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.identity.jwt.client.extension.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - JWT Client Feature http://wso2.org This feature contains jwt client implementation from which we can get a access token using the jwt diff --git a/features/jwt-client/pom.xml b/features/jwt-client/pom.xml index bda2b0c6ab2..646aee8f83f 100644 --- a/features/jwt-client/pom.xml +++ b/features/jwt-client/pom.xml @@ -23,13 +23,13 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 jwt-client-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - JWT Client Extension Feature http://wso2.org diff --git a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml index edcf9a74133..2c108adfedf 100644 --- a/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml +++ b/features/oauth-extensions/org.wso2.carbon.device.mgt.oauth.extensions.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt oauth-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.device.mgt.oauth.extensions.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Mgt OAuth Extensions Feature http://wso2.org This feature contains devicemgt related OAuth extensions diff --git a/features/oauth-extensions/pom.xml b/features/oauth-extensions/pom.xml index 1ed6ca3898b..9167945b26e 100644 --- a/features/oauth-extensions/pom.xml +++ b/features/oauth-extensions/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt oauth-extensions-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Device Management OAuth Extensions Feature http://wso2.org diff --git a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml index 200bb6b7195..bcbe4a8a051 100644 --- a/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml +++ b/features/policy-mgt/org.wso2.carbon.policy.mgt.server.feature/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt policy-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.policy.mgt.server.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Policy Management Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/policy-mgt/pom.xml b/features/policy-mgt/pom.xml index 61ab1fb365c..11a9f8bfff1 100644 --- a/features/policy-mgt/pom.xml +++ b/features/policy-mgt/pom.xml @@ -23,14 +23,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt policy-mgt-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Policy Management Feature http://wso2.org diff --git a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml index d98c8cb55a9..57795ee9ee0 100644 --- a/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml +++ b/features/webapp-authenticator-framework/org.wso2.carbon.webapp.authenticator.framework.server.feature/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt webapp-authenticator-framework-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../pom.xml 4.0.0 org.wso2.carbon.webapp.authenticator.framework.server.feature pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Webapp Authenticator Framework Server Feature http://wso2.org This feature contains the core bundles required for Back-end Device Management functionality diff --git a/features/webapp-authenticator-framework/pom.xml b/features/webapp-authenticator-framework/pom.xml index cb459e91ee9..90b888c2fa9 100644 --- a/features/webapp-authenticator-framework/pom.xml +++ b/features/webapp-authenticator-framework/pom.xml @@ -22,14 +22,14 @@ org.wso2.carbon.devicemgt carbon-devicemgt - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT ../../pom.xml 4.0.0 org.wso2.carbon.devicemgt webapp-authenticator-framework-feature - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT pom WSO2 Carbon - Webapp Authenticator Framework Feature http://wso2.org diff --git a/pom.xml b/pom.xml index e97823185ff..84415fef0bb 100644 --- a/pom.xml +++ b/pom.xml @@ -23,7 +23,7 @@ org.wso2.carbon.devicemgt carbon-devicemgt pom - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT WSO2 Carbon - Device Management - Parent http://wso2.org WSO2 Connected Device Manager Components @@ -1851,7 +1851,7 @@ 1.2.11.wso2v10 - 3.0.121-SNAPSHOT + 3.0.128-SNAPSHOT 4.4.8