diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/pom.xml b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/pom.xml
index 46220b8dc5..b3ad9b584a 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/pom.xml
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/pom.xml
@@ -49,6 +49,44 @@
api#device-mgt#android#v1.0
+
+ org.jacoco
+ jacoco-maven-plugin
+
+ ${basedir}/target/coverage-reports/jacoco-unit.exec
+
+
+
+ jacoco-initialize
+
+ prepare-agent
+
+
+
+ jacoco-site
+ test
+
+ report
+
+
+ ${basedir}/target/coverage-reports/jacoco-unit.exec
+ ${basedir}/target/coverage-reports/site
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ file:src/test/resources/log4j.properties
+
+
+ src/test/resources/testng.xml
+
+
+
@@ -262,5 +300,55 @@
javax.ws.rs
javax.ws.rs-api
+
+ org.testng
+ testng
+ test
+
+
+ org.powermock
+ powermock-module-testng
+ test
+
+
+ org.powermock
+ powermock-api-mockito
+ test
+
+
+ com.h2database.wso2
+ h2-database-engine
+ test
+
+
+ org.wso2.carbon
+ org.wso2.carbon.queuing
+ test
+
+
+ org.wso2.carbon
+ org.wso2.carbon.ndatasource.core
+ test
+
+
+ commons-dbcp.wso2
+ commons-dbcp
+ test
+
+
+ commons-pool.wso2
+ commons-pool
+ test
+
+
+ org.wso2.carbon
+ javax.cache.wso2
+ test
+
+
+ javassist
+ javassist
+ test
+
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java
index 22182b5b1e..f3beca09d6 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementAdminServiceImpl.java
@@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.json.JSONException;
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.core.operation.mgt.CommandOperation;
@@ -61,8 +62,8 @@ import org.wso2.carbon.mdm.services.android.bean.wrapper.WipeDataBeanWrapper;
import org.wso2.carbon.mdm.services.android.exception.BadRequestException;
import org.wso2.carbon.mdm.services.android.exception.UnexpectedServerErrorException;
import org.wso2.carbon.mdm.services.android.services.DeviceManagementAdminService;
-import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
import org.wso2.carbon.mdm.services.android.util.AndroidConstants;
+import org.wso2.carbon.mdm.services.android.util.AndroidDeviceUtils;
import javax.validation.Valid;
import javax.ws.rs.Consumes;
@@ -109,7 +110,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setType(Operation.Type.PROFILE);
operation.setEnabled(true);
operation.setPayLoad(lock.toJSON());
- return AndroidAPIUtils.getOperationResponse(deviceLockBeanWrapper.getDeviceIDs(), operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceLockBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -120,11 +122,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -141,7 +138,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.DEVICE_UNLOCK);
operation.setType(Operation.Type.COMMAND);
operation.setEnabled(true);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -152,11 +150,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -172,7 +165,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.DEVICE_LOCATION);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -183,11 +177,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -203,7 +192,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.CLEAR_PASSWORD);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -214,11 +204,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -242,7 +227,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.CAMERA);
operation.setType(Operation.Type.COMMAND);
operation.setEnabled(camera.isEnabled());
- return AndroidAPIUtils.getOperationResponse(cameraBeanWrapper.getDeviceIDs(), operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(cameraBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -253,11 +239,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -273,7 +254,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.DEVICE_INFO);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -283,11 +265,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
String errorMessage = "Issue in retrieving operation management service instance";
log.error(errorMessage, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMessage).build();
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -303,7 +280,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.LOGCAT);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -313,11 +291,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
String errorMessage = "Issue in retrieving operation management service instance";
log.error(errorMessage, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorMessage).build();
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -333,7 +306,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.ENTERPRISE_WIPE);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -344,11 +318,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -372,7 +341,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.WIPE_DATA);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(wipeData.toJSON());
- return AndroidAPIUtils.getOperationResponse(wipeDataBeanWrapper.getDeviceIDs(), operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(wipeDataBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -383,11 +353,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -403,7 +368,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.APPLICATION_LIST);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -414,11 +380,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -434,7 +395,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.DEVICE_RING);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -445,11 +407,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -465,7 +422,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
CommandOperation operation = new CommandOperation();
operation.setCode(AndroidConstants.OperationCodes.DEVICE_REBOOT);
operation.setType(Operation.Type.COMMAND);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -476,11 +434,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -497,7 +450,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.DEVICE_MUTE);
operation.setType(Operation.Type.COMMAND);
operation.setEnabled(true);
- return AndroidAPIUtils.getOperationResponse(deviceIDs, operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(deviceIDs, operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -508,11 +462,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -542,8 +491,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.INSTALL_APPLICATION);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(applicationInstallation.toJSON());
- return AndroidAPIUtils.getOperationResponse(applicationInstallationBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(applicationInstallationBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (JSONException e) {
String errorMessage = "Invalid payload for the operation.";
log.error(errorMessage);
@@ -559,11 +509,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -592,8 +537,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(applicationUpdate.toJSON());
- return AndroidAPIUtils.getOperationResponse(applicationUpdateBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(applicationUpdateBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -604,11 +550,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -635,9 +576,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.UNINSTALL_APPLICATION);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(applicationUninstallation.toJSON());
-
- return AndroidAPIUtils.getOperationResponse(applicationUninstallationBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(applicationUninstallationBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -648,11 +589,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -676,8 +612,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.BLACKLIST_APPLICATIONS);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(blacklistApplications.toJSON());
- return AndroidAPIUtils.getOperationResponse(blacklistApplicationsBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(blacklistApplicationsBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -688,11 +625,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -718,7 +650,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.UPGRADE_FIRMWARE);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(upgradeFirmware.toJSON());
- return AndroidAPIUtils.getOperationResponse(upgradeFirmwareBeanWrapper.getDeviceIDs(), operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(upgradeFirmwareBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -729,11 +663,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -757,8 +686,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.VPN);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(vpn.toJSON());
- return AndroidAPIUtils.getOperationResponse(vpnConfiguration.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(vpnConfiguration.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -769,11 +698,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -797,8 +721,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.NOTIFICATION);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(notification.toJSON());
- return AndroidAPIUtils.getOperationResponse(notificationBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(notificationBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -809,11 +733,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -838,8 +757,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(wifi.toJSON());
- return AndroidAPIUtils.getOperationResponse(wifiBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(wifiBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -850,11 +769,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -878,8 +792,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.ENCRYPT_STORAGE);
operation.setType(Operation.Type.COMMAND);
operation.setEnabled(deviceEncryption.isEncrypted());
- return AndroidAPIUtils.getOperationResponse(encryptionBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(encryptionBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -890,11 +804,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -918,8 +827,8 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.CHANGE_LOCK_CODE);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(lockCode.toJSON());
- return AndroidAPIUtils.getOperationResponse(lockCodeBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils.getOperationResponse(lockCodeBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -930,11 +839,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -959,8 +863,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(passcodePolicy.toJSON());
- return AndroidAPIUtils.getOperationResponse(passwordPolicyBeanWrapper.getDeviceIDs(),
- operation);
+ Activity activity = AndroidDeviceUtils
+ .getOperationResponse(passwordPolicyBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -971,11 +876,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
@@ -1000,7 +900,9 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
operation.setCode(AndroidConstants.OperationCodes.WEBCLIP);
operation.setType(Operation.Type.PROFILE);
operation.setPayLoad(webClip.toJSON());
- return AndroidAPIUtils.getOperationResponse(webClipBeanWrapper.getDeviceIDs(), operation);
+
+ Activity activity = AndroidDeviceUtils.getOperationResponse(webClipBeanWrapper.getDeviceIDs(), operation);
+ return Response.status(Response.Status.CREATED).entity(activity).build();
} catch (InvalidDeviceException e) {
String errorMessage = "Invalid Device Identifiers found.";
log.error(errorMessage, e);
@@ -1011,11 +913,6 @@ public class DeviceManagementAdminServiceImpl implements DeviceManagementAdminSe
log.error(errorMessage, e);
throw new UnexpectedServerErrorException(
new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
- } catch (DeviceManagementException e) {
- String errorMessage = "Issue in retrieving device management service instance";
- log.error(errorMessage, e);
- throw new UnexpectedServerErrorException(
- new ErrorResponse.ErrorResponseBuilder().setCode(500l).setMessage(errorMessage).build());
}
}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementServiceImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementServiceImpl.java
index c401bb25db..9990421f70 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementServiceImpl.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceManagementServiceImpl.java
@@ -20,7 +20,6 @@ package org.wso2.carbon.mdm.services.android.services.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-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.DeviceManagementConstants;
@@ -126,7 +125,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
log.error(msg);
return Response.status(Response.Status.BAD_REQUEST).entity(msg).build();
}
- DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
+ DeviceIdentifier deviceIdentifier = AndroidDeviceUtils.convertToDeviceIdentifierObject(id);
try {
if (!AndroidDeviceUtils.isValidDeviceIdentifier(deviceIdentifier)) {
String msg = "Device not found for identifier '" + id + "'";
@@ -168,7 +167,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
List extends Operation> pendingOperations;
try {
- pendingOperations = AndroidAPIUtils.getPendingOperations(deviceIdentifier);
+ pendingOperations = AndroidDeviceUtils.getPendingOperations(deviceIdentifier);
} catch (OperationManagementException e) {
String msg = "Issue in retrieving operation management service instance";
log.error(msg, e);
@@ -182,7 +181,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
throws OperationManagementException, PolicyComplianceException,
ApplicationManagementException, NotificationManagementException, DeviceManagementException {
for (org.wso2.carbon.device.mgt.common.operation.mgt.Operation operation : operations) {
- AndroidAPIUtils.updateOperation(deviceId, operation);
+ AndroidDeviceUtils.updateOperation(deviceId, operation);
if (OPERATION_ERROR_STATUS.equals(operation.getStatus().toString())) {
org.wso2.carbon.device.mgt.common.notification.mgt.Notification notification = new
org.wso2.carbon.device.mgt.common.notification.mgt.Notification();
@@ -233,10 +232,8 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
DeviceLocation deviceLocation = extractLocation(deviceIdentifier, androidDevice.getProperties());
if (deviceLocation != null) {
try {
- PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
- DeviceInformationManager informationManager =
- (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
-
+ DeviceInformationManager informationManager = AndroidAPIUtils
+ .getDeviceInformationManagerService();
informationManager.addDeviceLocation(deviceLocation);
} catch (DeviceDetailsMgtException e) {
String msg = "Error occurred while updating the device location upon android " +
@@ -265,10 +262,9 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
addOperation(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID,
operation, deviceIdentifiers);
}
- }
- PolicyManagerService policyManagerService = AndroidAPIUtils.getPolicyManagerService();
- policyManagerService.getEffectivePolicy(new DeviceIdentifier(androidDevice.getDeviceIdentifier(), device.getType()));
- if (status) {
+ PolicyManagerService policyManagerService = AndroidAPIUtils.getPolicyManagerService();
+ policyManagerService.getEffectivePolicy(new DeviceIdentifier(androidDevice.getDeviceIdentifier(), device.getType()));
+
Message responseMessage = new Message();
responseMessage.setResponseCode(Response.Status.OK.toString());
responseMessage.setResponseMessage("Android device, which carries the id '" +
@@ -316,7 +312,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
@Path("/{id}/status")
@Override
public Response isEnrolled(@PathParam("id") String id, @HeaderParam("If-Modified-Since") String ifModifiedSince) {
- DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
+ DeviceIdentifier deviceIdentifier = AndroidDeviceUtils.convertToDeviceIdentifierObject(id);
try {
Device device = AndroidAPIUtils.getDeviceManagementService().getDevice(deviceIdentifier);
if (device != null) {
@@ -421,7 +417,7 @@ public class DeviceManagementServiceImpl implements DeviceManagementService {
@Override
public Response disEnrollDevice(@PathParam("id") String id) {
boolean result;
- DeviceIdentifier deviceIdentifier = AndroidAPIUtils.convertToDeviceIdentifierObject(id);
+ DeviceIdentifier deviceIdentifier = AndroidDeviceUtils.convertToDeviceIdentifierObject(id);
try {
result = AndroidAPIUtils.getDeviceManagementService().disenrollDevice(deviceIdentifier);
if (result) {
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java
index c6b343215b..dad6cb454d 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/DeviceTypeConfigurationServiceImpl.java
@@ -31,10 +31,14 @@ import org.wso2.carbon.mdm.services.android.exception.UnexpectedServerErrorExcep
import org.wso2.carbon.mdm.services.android.services.DeviceTypeConfigurationService;
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
import org.wso2.carbon.mdm.services.android.util.AndroidConstants;
-import org.wso2.carbon.mdm.services.android.util.Message;
import javax.validation.Valid;
-import javax.ws.rs.*;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.HeaderParam;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.util.ArrayList;
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java
index 2c012737fc..6d01dae3e6 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/services/impl/EventReceiverServiceImpl.java
@@ -32,6 +32,7 @@ import org.wso2.carbon.mdm.services.android.exception.NotFoundException;
import org.wso2.carbon.mdm.services.android.exception.UnexpectedServerErrorException;
import org.wso2.carbon.mdm.services.android.services.EventReceiverService;
import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
+import org.wso2.carbon.mdm.services.android.util.AndroidDeviceUtils;
import org.wso2.carbon.mdm.services.android.util.Message;
import javax.validation.Valid;
@@ -127,7 +128,7 @@ public class EventReceiverServiceImpl implements EventReceiverService {
String query = "deviceIdentifier:" + deviceId;
List deviceStates;
try {
- deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
+ deviceStates = AndroidDeviceUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
if (deviceStates == null) {
throw new NotFoundException(
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("No any alerts are " +
@@ -153,7 +154,7 @@ public class EventReceiverServiceImpl implements EventReceiverService {
String query = "deviceIdentifier:" + deviceId + " AND _timestamp: [" + fromDate + " TO " + toDate + "]";
List deviceStates;
try {
- deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
+ deviceStates = AndroidDeviceUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
if (deviceStates == null) {
throw new NotFoundException(
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("No any alerts are " +
@@ -178,7 +179,7 @@ public class EventReceiverServiceImpl implements EventReceiverService {
String query = "deviceIdentifier:" + deviceId + " AND type:" + type;
List deviceStates;
try {
- deviceStates = AndroidAPIUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
+ deviceStates = AndroidDeviceUtils.getAllEventsForDevice(EVENT_STREAM_DEFINITION, query);
if (deviceStates == null) {
throw new NotFoundException(
new ErrorResponse.ErrorResponseBuilder().setCode(404l).setMessage("No any alerts are " +
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidAPIUtils.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidAPIUtils.java
index 5f93aa175b..f8c37fe5ff 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidAPIUtils.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidAPIUtils.java
@@ -18,54 +18,17 @@
package org.wso2.carbon.mdm.services.android.util;
-import com.google.gson.Gson;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonElement;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.analytics.api.AnalyticsDataAPI;
-import org.wso2.carbon.analytics.api.AnalyticsDataAPIUtil;
-import org.wso2.carbon.analytics.dataservice.commons.AnalyticsDataResponse;
-import org.wso2.carbon.analytics.dataservice.commons.SearchResultEntry;
-import org.wso2.carbon.analytics.datasource.commons.Record;
-import org.wso2.carbon.analytics.datasource.commons.exception.AnalyticsException;
-import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.device.mgt.analytics.data.publisher.service.EventsPublisherService;
-import org.wso2.carbon.device.mgt.common.Device;
-import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
-import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
-import org.wso2.carbon.device.mgt.common.DeviceManagementException;
-import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
-import org.wso2.carbon.device.mgt.common.app.mgt.Application;
-import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
-import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
-import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
-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.policy.mgt.monitor.ComplianceFeature;
import org.wso2.carbon.device.mgt.core.app.mgt.ApplicationManagementProviderService;
-import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
-import org.wso2.carbon.device.mgt.core.search.mgt.impl.Utils;
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
-import org.wso2.carbon.mdm.services.android.bean.DeviceState;
-import org.wso2.carbon.mdm.services.android.bean.ErrorResponse;
-import org.wso2.carbon.mdm.services.android.exception.BadRequestException;
-import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
/**
* AndroidAPIUtil class provides utility functions used by Android REST-API classes.
*/
@@ -73,11 +36,8 @@ public class AndroidAPIUtils {
private static Log log = LogFactory.getLog(AndroidAPIUtils.class);
- public static DeviceIdentifier convertToDeviceIdentifierObject(String deviceId) {
- DeviceIdentifier identifier = new DeviceIdentifier();
- identifier.setId(deviceId);
- identifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
- return identifier;
+ private AndroidAPIUtils(){
+ throw new IllegalStateException("Utility class");
}
public static String getAuthenticatedUser() {
@@ -102,60 +62,18 @@ public class AndroidAPIUtils {
return deviceManagementProviderService;
}
-// public static GCMService getGCMService() {
-// PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
-// GCMService gcmService = (GCMService) ctx.getOSGiService(GCMService.class, null);
-// if (gcmService == null) {
-// String msg = "FCM service has not initialized.";
-// log.error(msg);
-// throw new IllegalStateException(msg);
-// }
-// return gcmService;
-// }
-
- public static MediaType getResponseMediaType(String acceptHeader) {
- MediaType responseMediaType;
- if (MediaType.WILDCARD.equals(acceptHeader)) {
- responseMediaType = MediaType.APPLICATION_JSON_TYPE;
- } else {
- responseMediaType = MediaType.valueOf(acceptHeader);
- }
- return responseMediaType;
- }
-
- public static Response getOperationResponse(List deviceIDs, Operation operation)
- throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
- if (deviceIDs == null || deviceIDs.size() == 0) {
- String errorMessage = "Device identifier list is empty";
- log.error(errorMessage);
- throw new BadRequestException(
- new ErrorResponse.ErrorResponseBuilder().setCode(400l).setMessage(errorMessage).build());
- }
- DeviceIdentifier deviceIdentifier;
- List deviceIdentifiers = new ArrayList<>();
- for (String deviceId : deviceIDs) {
- deviceIdentifier = new DeviceIdentifier();
- deviceIdentifier.setId(deviceId);
- deviceIdentifier.setType(AndroidConstants.DEVICE_TYPE_ANDROID);
- deviceIdentifiers.add(deviceIdentifier);
+ public static DeviceInformationManager getDeviceInformationManagerService() {
+ PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ DeviceInformationManager informationManager =
+ (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
+ if (informationManager == null) {
+ String msg = "Information Manager service not initialized.";
+ log.error(msg);
+ throw new IllegalStateException(msg);
}
- Activity activity = getDeviceManagementService().addOperation(
- DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, operation, deviceIdentifiers);
-// if (activity != null) {
-// GCMService gcmService = getGCMService();
-// if (gcmService.isFCMEnabled()) {
-// List deviceIDList = deviceIDHolder.getValidDeviceIDList();
-// List devices = new ArrayList(deviceIDList.size());
-// for (DeviceIdentifier deviceIdentifier : deviceIDList) {
-// devices.add(getDeviceManagementService().getDevice(deviceIdentifier));
-// }
-// getGCMService().sendNotification(operation.getCode(), devices);
-// }
-// }
- return Response.status(Response.Status.CREATED).entity(activity).build();
+ return informationManager;
}
-
public static PolicyManagerService getPolicyManagerService() {
PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
PolicyManagerService policyManagerService = (PolicyManagerService) ctx.getOSGiService(
@@ -217,312 +135,4 @@ public class AndroidAPIUtils {
return analyticsDataAPI;
}
- public static List getAllEventsForDevice(String tableName, String query) throws AnalyticsException {
- int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
- AnalyticsDataAPI analyticsDataAPI = getAnalyticsDataAPI();
- int eventCount = analyticsDataAPI.searchCount(tenantId, tableName, query);
- if (eventCount == 0) {
- return null;
- }
- List resultEntries = analyticsDataAPI.search(tenantId, tableName, query, 0, eventCount);
- List recordIds = getRecordIds(resultEntries);
- AnalyticsDataResponse response = analyticsDataAPI.get(tenantId, tableName, 1, null, recordIds);
- Map deviceStateses = createDeviceStatusData(AnalyticsDataAPIUtil.listRecords(
- analyticsDataAPI, response));
- return getSortedDeviceStateData(deviceStateses, resultEntries);
- }
-
- private static List getRecordIds(List searchResults) {
- List ids = new ArrayList();
- for (SearchResultEntry searchResult : searchResults) {
- ids.add(searchResult.getId());
- }
- return ids;
- }
-
- public static Map createDeviceStatusData(List records) {
- Map deviceStatuses = new HashMap();
- for (Record record : records) {
- DeviceState deviceState = createDeviceStatusData(record);
- deviceStatuses.put(deviceState.getId(), deviceState);
- }
- return deviceStatuses;
- }
-
- private static DeviceState createDeviceStatusData(Record record) {
- DeviceState deviceState = new DeviceState();
- deviceState.setId(record.getId());
- deviceState.setValues(record.getValues());
- return deviceState;
- }
-
- public static List getSortedDeviceStateData(Map sensorDatas,
- List searchResults) {
- List sortedRecords = new ArrayList();
- for (SearchResultEntry searchResultEntry : searchResults) {
- sortedRecords.add(sensorDatas.get(searchResultEntry.getId()));
- }
- return sortedRecords;
- }
-
- public static void updateOperation(String deviceId, Operation operation)
- throws OperationManagementException, PolicyComplianceException, ApplicationManagementException {
- DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
- deviceIdentifier.setId(deviceId);
- deviceIdentifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
-
- if (!Operation.Status.ERROR.equals(operation.getStatus()) &&
- AndroidConstants.OperationCodes.MONITOR.equals(operation.getCode())) {
- if (log.isDebugEnabled()) {
- log.info("Received compliance status from MONITOR operation ID: " + operation.getId());
- }
- getPolicyManagerService().checkPolicyCompliance(deviceIdentifier,
- getComplianceFeatures(operation.getPayLoad()));
- } else if (!Operation.Status.ERROR.equals(operation.getStatus()) && AndroidConstants.
- OperationCodes.APPLICATION_LIST.equals(operation.getCode())) {
- if (log.isDebugEnabled()) {
- log.info("Received applications list from device '" + deviceId + "'");
- }
- updateApplicationList(operation, deviceIdentifier);
-
- } else if (!Operation.Status.ERROR.equals(operation.getStatus()) && AndroidConstants.
- OperationCodes.DEVICE_INFO.equals(operation.getCode())) {
-
- try {
- if (log.isDebugEnabled()){
- log.debug("Operation response: " + operation.getOperationResponse());
- }
- Device device = new Gson().fromJson(operation.getOperationResponse(), Device.class);
- org.wso2.carbon.device.mgt.common.device.details.DeviceInfo deviceInfo = convertDeviceToInfo(device);
- updateDeviceInfo(deviceIdentifier, deviceInfo);
- } catch (DeviceDetailsMgtException e) {
- throw new OperationManagementException("Error occurred while updating the device information.", e);
- }
-
-
- } else if (!Operation.Status.ERROR.equals(operation.getStatus()) &&
- AndroidConstants.OperationCodes.DEVICE_LOCATION.equals(operation.getCode())) {
- try {
- DeviceLocation location = new Gson().fromJson(operation.getOperationResponse(), DeviceLocation.class);
- // reason for checking "location.getLatitude() != null" because when device fails to provide
- // device location and send status instead, above Gson converter create new location object
- // with null attributes
- if (location != null && location.getLatitude() != null) {
- location.setDeviceIdentifier(deviceIdentifier);
- updateDeviceLocation(location);
- }
- } catch (DeviceDetailsMgtException e) {
- throw new OperationManagementException("Error occurred while updating the device location.", e);
- }
- }
- getDeviceManagementService().updateOperation(deviceIdentifier, operation);
- }
-
- public static List extends Operation> getPendingOperations
- (DeviceIdentifier deviceIdentifier) throws OperationManagementException {
-
- List extends Operation> operations;
- operations = getDeviceManagementService().getPendingOperations(deviceIdentifier);
- return operations;
- }
-
- private static void updateApplicationList(Operation operation, DeviceIdentifier deviceIdentifier)
- throws ApplicationManagementException {
- // Parsing json string to get applications list.
- if (operation.getOperationResponse() != null) {
- JsonElement jsonElement = new JsonParser().parse(operation.getOperationResponse());
- JsonArray jsonArray = jsonElement.getAsJsonArray();
- Application app;
- List applications = new ArrayList(jsonArray.size());
- for (JsonElement element : jsonArray) {
- app = new Application();
- app.setName(element.getAsJsonObject().
- get(AndroidConstants.ApplicationProperties.NAME).getAsString());
- app.setApplicationIdentifier(element.getAsJsonObject().
- get(AndroidConstants.ApplicationProperties.IDENTIFIER).getAsString());
- app.setPlatform(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
- if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.USS) != null) {
- app.setMemoryUsage(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.USS).getAsInt());
- }
- if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.VERSION) != null) {
- app.setVersion(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.VERSION).getAsString());
- }
- if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.IS_ACTIVE) != null) {
- app.setActive(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.IS_ACTIVE).getAsBoolean());
- }
- applications.add(app);
- }
- getApplicationManagerService().updateApplicationListInstalledInDevice(deviceIdentifier, applications);
- } else {
- log.error("Operation Response is null.");
- }
-
- }
-
-
- private static void updateDeviceLocation(DeviceLocation deviceLocation) throws DeviceDetailsMgtException {
- PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
- DeviceInformationManager informationManager =
- (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
-
- informationManager.addDeviceLocation(deviceLocation);
- }
-
-
- private static void updateDeviceInfo(DeviceIdentifier deviceId, DeviceInfo deviceInfo)
- throws DeviceDetailsMgtException {
-
- PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
- DeviceInformationManager informationManager =
- (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
-
- informationManager.addDeviceInfo(deviceId, deviceInfo);
- }
-
-
- private static org.wso2.carbon.device.mgt.common.device.details.DeviceInfo convertDeviceToInfo(Device device) {
-
- org.wso2.carbon.device.mgt.common.device.details.DeviceInfo deviceInfo =
- new org.wso2.carbon.device.mgt.common.device.details.DeviceInfo();
- if (deviceInfo.getDeviceDetailsMap() == null) {
- deviceInfo.setDeviceDetailsMap(new HashMap());
- }
- List props = device.getProperties();
-
- for (Device.Property prop : props) {
- if (Utils.getDeviceDetailsColumnNames().containsValue(prop.getName())) {
- if (prop.getName().equalsIgnoreCase("DEVICE_MODEL")) {
- deviceInfo.setDeviceModel(prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("VENDOR")) {
- deviceInfo.setVendor(prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("OS_VERSION")) {
- deviceInfo.setOsVersion(prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("IMEI")) {
- deviceInfo.getDeviceDetailsMap().put("IMEI", prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("IMSI")) {
- deviceInfo.getDeviceDetailsMap().put("IMSI", prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("MAC")) {
- deviceInfo.getDeviceDetailsMap().put("mac", prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("SERIAL")) {
- deviceInfo.getDeviceDetailsMap().put("serial", prop.getValue());
- } else if (prop.getName().equalsIgnoreCase("OS_BUILD_DATE")) {
- deviceInfo.setOsBuildDate(prop.getValue());
- }
- } else {
- if (prop.getName().equalsIgnoreCase("CPU_INFO")) {
- deviceInfo.getDeviceDetailsMap().put("cpuUser",
- getProperty(prop.getValue(), "User"));
- deviceInfo.getDeviceDetailsMap().put("cpuSystem",
- getProperty(prop.getValue(), "System"));
- deviceInfo.getDeviceDetailsMap().put("IOW",
- getProperty(prop.getValue(), "IOW"));
- deviceInfo.getDeviceDetailsMap().put("IRQ",
- getProperty(prop.getValue(), "IRQ"));
- } else if (prop.getName().equalsIgnoreCase("RAM_INFO")) {
- deviceInfo.setTotalRAMMemory(Double.parseDouble(getProperty(prop.getValue(), "TOTAL_MEMORY")));
- deviceInfo.setAvailableRAMMemory(Double.parseDouble(getProperty(prop.getValue(), "AVAILABLE_MEMORY")));
-
- deviceInfo.getDeviceDetailsMap().put("ramThreshold",
- getProperty(prop.getValue(), "THRESHOLD"));
- deviceInfo.getDeviceDetailsMap().put("ramLowMemory",
- getProperty(prop.getValue(), "LOW_MEMORY"));
- } else if (prop.getName().equalsIgnoreCase("BATTERY_INFO")) {
- deviceInfo.setPluggedIn(Boolean.parseBoolean(getProperty(prop.getValue(), "PLUGGED")));
-
- deviceInfo.getDeviceDetailsMap().put("batteryLevel",
- getProperty(prop.getValue(), "BATTERY_LEVEL"));
- deviceInfo.getDeviceDetailsMap().put("batteryScale",
- getProperty(prop.getValue(), "SCALE"));
- deviceInfo.getDeviceDetailsMap().put("batteryVoltage",
- getProperty(prop.getValue(), "BATTERY_VOLTAGE"));
- deviceInfo.getDeviceDetailsMap().put("batteryTemperature",
- getProperty(prop.getValue(), "TEMPERATURE"));
- deviceInfo.getDeviceDetailsMap().put("batteryCurrentTemperature",
- getProperty(prop.getValue(), "CURRENT_AVERAGE"));
- deviceInfo.getDeviceDetailsMap().put("batteryTechnology",
- getProperty(prop.getValue(), "TECHNOLOGY"));
- deviceInfo.getDeviceDetailsMap().put("batteryHealth",
- getProperty(prop.getValue(), "HEALTH"));
- deviceInfo.getDeviceDetailsMap().put("batteryStatus",
- getProperty(prop.getValue(), "STATUS"));
- } else if (prop.getName().equalsIgnoreCase("NETWORK_INFO")) {
- deviceInfo.setSsid(getProperty(prop.getValue(), "WIFI_SSID"));
- deviceInfo.setConnectionType(getProperty(prop.getValue(), "CONNECTION_TYPE"));
-
- deviceInfo.getDeviceDetailsMap().put("mobileSignalStrength",
- getProperty(prop.getValue(), "MOBILE_SIGNAL_STRENGTH"));
- deviceInfo.getDeviceDetailsMap().put("wifiSignalStrength",
- getProperty(prop.getValue(), "WIFI_SIGNAL_STRENGTH"));
- } else if (prop.getName().equalsIgnoreCase("DEVICE_INFO")) {
- deviceInfo.setBatteryLevel(Double.parseDouble(
- getProperty(prop.getValue(), "BATTERY_LEVEL")));
- deviceInfo.setInternalTotalMemory(Double.parseDouble(
- getProperty(prop.getValue(), "INTERNAL_TOTAL_MEMORY")));
- deviceInfo.setInternalAvailableMemory(Double.parseDouble(
- getProperty(prop.getValue(), "INTERNAL_AVAILABLE_MEMORY")));
- deviceInfo.setExternalTotalMemory(Double.parseDouble(
- getProperty(prop.getValue(), "EXTERNAL_TOTAL_MEMORY")));
- deviceInfo.setExternalAvailableMemory(Double.parseDouble(
- getProperty(prop.getValue(), "EXTERNAL_AVAILABLE_MEMORY")));
-
- deviceInfo.getDeviceDetailsMap().put("encryptionEnabled",
- getProperty(prop.getValue(), "ENCRYPTION_ENABLED"));
- deviceInfo.getDeviceDetailsMap().put("passcodeEnabled",
- getProperty(prop.getValue(), "PASSCODE_ENABLED"));
- deviceInfo.getDeviceDetailsMap().put("operator",
- getProperty(prop.getValue(), "OPERATOR"));
- deviceInfo.getDeviceDetailsMap().put("PhoneNumber",
- getProperty(prop.getValue(), "PHONE_NUMBER"));
- }
- }
- }
- return deviceInfo;
- }
-
- private static String getProperty(String a, String needed) {
-
- JsonElement jsonElement = new JsonParser().parse(a);
- JsonArray jsonArray = jsonElement.getAsJsonArray();
- boolean exist = false;
- for (JsonElement element : jsonArray) {
- // if (((JsonObject) element).entrySet().iterator().next().getValue().getAsString().equalsIgnoreCase(needed));
- for (Map.Entry ob : ((JsonObject) element).entrySet()) {
- JsonElement val = ob.getValue();
- if (val != null && !val.isJsonNull()) {
- if (exist) {
- return val.getAsString().replace("%", "");
- }
- if (val.getAsString().equalsIgnoreCase(needed)) {
- exist = true;
- }
- }
- }
- }
- return "";
- }
-
- private static List getComplianceFeatures(Object compliancePayload) throws PolicyComplianceException {
- String compliancePayloadString = new Gson().toJson(compliancePayload);
- if (compliancePayload == null) {
- return null;
- }
- // Parsing json string to get compliance features.
- JsonElement jsonElement;
- if (compliancePayloadString instanceof String) {
- jsonElement = new JsonParser().parse(compliancePayloadString);
- } else {
- throw new PolicyComplianceException("Invalid policy compliance payload");
- }
-
- JsonArray jsonArray = jsonElement.getAsJsonArray();
- Gson gson = new Gson();
- ComplianceFeature complianceFeature;
- List complianceFeatures = new ArrayList(jsonArray.size());
-
- for (JsonElement element : jsonArray) {
- complianceFeature = gson.fromJson(element, ComplianceFeature.class);
- complianceFeatures.add(complianceFeature);
- }
- return complianceFeatures;
- }
}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidDeviceUtils.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidDeviceUtils.java
index 61a4c5183a..ac99f20047 100644
--- a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidDeviceUtils.java
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/main/java/org/wso2/carbon/mdm/services/android/util/AndroidDeviceUtils.java
@@ -18,15 +18,49 @@
package org.wso2.carbon.mdm.services.android.util;
-import org.apache.commons.lang.StringUtils;
-import org.wso2.carbon.device.mgt.common.*;
+import com.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.analytics.api.AnalyticsDataAPI;
+import org.wso2.carbon.analytics.api.AnalyticsDataAPIUtil;
+import org.wso2.carbon.analytics.dataservice.commons.AnalyticsDataResponse;
+import org.wso2.carbon.analytics.dataservice.commons.SearchResultEntry;
+import org.wso2.carbon.analytics.datasource.commons.Record;
+import org.wso2.carbon.analytics.datasource.commons.exception.AnalyticsException;
+import org.wso2.carbon.context.CarbonContext;
+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.DeviceManagementConstants;
+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.app.mgt.Application;
+import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
+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.policy.mgt.monitor.ComplianceFeature;
+import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
+import org.wso2.carbon.device.mgt.core.search.mgt.impl.Utils;
+import org.wso2.carbon.mdm.services.android.bean.DeviceState;
import org.wso2.carbon.mdm.services.android.bean.ErrorListItem;
import org.wso2.carbon.mdm.services.android.bean.ErrorResponse;
import org.wso2.carbon.mdm.services.android.exception.BadRequestException;
import javax.validation.ConstraintViolation;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
/**
@@ -34,63 +68,350 @@ import java.util.Set;
*/
public class AndroidDeviceUtils {
- private static final String COMMA_SEPARATION_PATTERN = ", ";
+ private static Log log = LogFactory.getLog(AndroidDeviceUtils.class);
- public DeviceIDHolder validateDeviceIdentifiers(List deviceIDs) {
+ private AndroidDeviceUtils() {
+ throw new IllegalStateException("Utility class");
+ }
+
+ public static boolean isValidDeviceIdentifier(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ Device device = AndroidAPIUtils.getDeviceManagementService().
+ getDevice(deviceIdentifier, false);
+ return !(device == null || device.getDeviceIdentifier() == null ||
+ device.getDeviceIdentifier().isEmpty() ||
+ device.getEnrolmentInfo() == null ||
+ EnrolmentInfo.Status.REMOVED.equals(device.getEnrolmentInfo().getStatus()));
+ }
+
+ public static DeviceIdentifier convertToDeviceIdentifierObject(String deviceId) {
+ DeviceIdentifier identifier = new DeviceIdentifier();
+ identifier.setId(deviceId);
+ identifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
+ return identifier;
+ }
+
+ public static Activity getOperationResponse(List deviceIDs, Operation operation)
+ throws OperationManagementException, InvalidDeviceException {
+ if (deviceIDs == null || deviceIDs.isEmpty()) {
+ String errorMessage = "Device identifier list is empty";
+ log.error(errorMessage);
+ throw new BadRequestException(
+ new ErrorResponse.ErrorResponseBuilder().setCode(400l).setMessage(errorMessage).build());
+ }
+ DeviceIdentifier deviceIdentifier;
+ List deviceIdentifiers = new ArrayList<>();
+ for (String deviceId : deviceIDs) {
+ deviceIdentifier = new DeviceIdentifier();
+ deviceIdentifier.setId(deviceId);
+ deviceIdentifier.setType(AndroidConstants.DEVICE_TYPE_ANDROID);
+ deviceIdentifiers.add(deviceIdentifier);
+ }
+ return AndroidAPIUtils.getDeviceManagementService().addOperation(
+ DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID, operation, deviceIdentifiers);
+ }
+
+ public static List getAllEventsForDevice(String tableName, String query) throws AnalyticsException {
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ AnalyticsDataAPI analyticsDataAPI = AndroidAPIUtils.getAnalyticsDataAPI();
+ int eventCount = analyticsDataAPI.searchCount(tenantId, tableName, query);
+ if (eventCount == 0) {
+ return null;
+ }
+ List resultEntries = analyticsDataAPI.search(tenantId, tableName, query, 0, eventCount);
+ List recordIds = getRecordIds(resultEntries);
+ AnalyticsDataResponse response = analyticsDataAPI.get(tenantId, tableName, 1, null, recordIds);
+ Map deviceStateses = createDeviceStatusData(AnalyticsDataAPIUtil.listRecords(
+ analyticsDataAPI, response));
+ return getSortedDeviceStateData(deviceStateses, resultEntries);
+ }
+
+ private static List getRecordIds(List searchResults) {
+ List ids = new ArrayList<>();
+ for (SearchResultEntry searchResult : searchResults) {
+ ids.add(searchResult.getId());
+ }
+ return ids;
+ }
- List errorDeviceIdList = new ArrayList();
- List validDeviceIDList = new ArrayList();
+ public static Map createDeviceStatusData(List records) {
+ Map deviceStatuses = new HashMap<>();
+ for (Record record : records) {
+ DeviceState deviceState = createDeviceStatusData(record);
+ deviceStatuses.put(deviceState.getId(), deviceState);
+ }
+ return deviceStatuses;
+ }
- int deviceIDCounter = 0;
- for (String deviceID : deviceIDs) {
+ private static DeviceState createDeviceStatusData(Record record) {
+ DeviceState deviceState = new DeviceState();
+ deviceState.setId(record.getId());
+ deviceState.setValues(record.getValues());
+ return deviceState;
+ }
+
+ public static List getSortedDeviceStateData(Map sensorDatas,
+ List searchResults) {
+ List sortedRecords = new ArrayList<>();
+ for (SearchResultEntry searchResultEntry : searchResults) {
+ sortedRecords.add(sensorDatas.get(searchResultEntry.getId()));
+ }
+ return sortedRecords;
+ }
+
+ public static void updateOperation(String deviceId, Operation operation)
+ throws OperationManagementException, PolicyComplianceException, ApplicationManagementException {
+ DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
+ deviceIdentifier.setId(deviceId);
+ deviceIdentifier.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
+
+ if (!Operation.Status.ERROR.equals(operation.getStatus()) &&
+ AndroidConstants.OperationCodes.MONITOR.equals(operation.getCode())) {
+ if (log.isDebugEnabled()) {
+ log.debug("Received compliance status from MONITOR operation ID: " + operation.getId());
+ }
+ AndroidAPIUtils.getPolicyManagerService().checkPolicyCompliance(deviceIdentifier,
+ getComplianceFeatures(operation.getPayLoad()));
+ } else if (!Operation.Status.ERROR.equals(operation.getStatus()) && AndroidConstants.
+ OperationCodes.APPLICATION_LIST.equals(operation.getCode())) {
+ if (log.isDebugEnabled()) {
+ log.debug("Received applications list from device '" + deviceId + "'");
+ }
+ updateApplicationList(operation, deviceIdentifier);
- deviceIDCounter++;
+ } else if (!Operation.Status.ERROR.equals(operation.getStatus()) && AndroidConstants.
+ OperationCodes.DEVICE_INFO.equals(operation.getCode())) {
- if (deviceID == null || deviceID.isEmpty()) {
- errorDeviceIdList.add(String.format(AndroidConstants.DeviceConstants.DEVICE_ID_NOT_FOUND,
- deviceIDCounter));
- continue;
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Operation response: " + operation.getOperationResponse());
+ }
+ Device device = new Gson().fromJson(operation.getOperationResponse(), Device.class);
+ org.wso2.carbon.device.mgt.common.device.details.DeviceInfo deviceInfo = convertDeviceToInfo(device);
+ updateDeviceInfo(deviceIdentifier, deviceInfo);
+ } catch (DeviceDetailsMgtException e) {
+ throw new OperationManagementException("Error occurred while updating the device information.", e);
}
+ } else if (!Operation.Status.ERROR.equals(operation.getStatus()) &&
+ AndroidConstants.OperationCodes.DEVICE_LOCATION.equals(operation.getCode())) {
try {
- DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
- deviceIdentifier.setId(deviceID);
- deviceIdentifier.setType(DeviceManagementConstants.MobileDeviceTypes.
- MOBILE_DEVICE_TYPE_ANDROID);
-
- if (isValidDeviceIdentifier(deviceIdentifier)) {
- validDeviceIDList.add(deviceIdentifier);
- } else {
- errorDeviceIdList.add(String.format(AndroidConstants.DeviceConstants.
- DEVICE_ID_NOT_FOUND, deviceID));
+ DeviceLocation location = new Gson().fromJson(operation.getOperationResponse(), DeviceLocation.class);
+ // reason for checking "location.getLatitude() != null" because when device fails to provide
+ // device location and send status instead, above Gson converter create new location object
+ // with null attributes
+ if (location != null && location.getLatitude() != null) {
+ location.setDeviceIdentifier(deviceIdentifier);
+ updateDeviceLocation(location);
+ }
+ } catch (DeviceDetailsMgtException e) {
+ throw new OperationManagementException("Error occurred while updating the device location.", e);
+ }
+ }
+ AndroidAPIUtils.getDeviceManagementService().updateOperation(deviceIdentifier, operation);
+ }
+
+ public static List extends Operation> getPendingOperations
+ (DeviceIdentifier deviceIdentifier) throws OperationManagementException {
+
+ List extends Operation> operations;
+ operations = AndroidAPIUtils.getDeviceManagementService().getPendingOperations(deviceIdentifier);
+ return operations;
+ }
+
+ private static void updateApplicationList(Operation operation, DeviceIdentifier deviceIdentifier)
+ throws ApplicationManagementException {
+ // Parsing json string to get applications list.
+ if (operation.getOperationResponse() != null) {
+ JsonElement jsonElement = new JsonParser().parse(operation.getOperationResponse());
+ JsonArray jsonArray = jsonElement.getAsJsonArray();
+ Application app;
+ List applications = new ArrayList<>(jsonArray.size());
+ for (JsonElement element : jsonArray) {
+ app = new Application();
+ app.setName(element.getAsJsonObject().
+ get(AndroidConstants.ApplicationProperties.NAME).getAsString());
+ app.setApplicationIdentifier(element.getAsJsonObject().
+ get(AndroidConstants.ApplicationProperties.IDENTIFIER).getAsString());
+ app.setPlatform(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
+ if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.USS) != null) {
+ app.setMemoryUsage(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.USS).getAsInt());
+ }
+ if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.VERSION) != null) {
+ app.setVersion(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.VERSION).getAsString());
}
- } catch (DeviceManagementException e) {
- errorDeviceIdList.add(String.format(AndroidConstants.DeviceConstants.DEVICE_ID_SERVICE_NOT_FOUND,
- deviceIDCounter));
+ if (element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.IS_ACTIVE) != null) {
+ app.setActive(element.getAsJsonObject().get(AndroidConstants.ApplicationProperties.IS_ACTIVE).getAsBoolean());
+ }
+ applications.add(app);
+ }
+ AndroidAPIUtils.getApplicationManagerService().updateApplicationListInstalledInDevice(deviceIdentifier, applications);
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Operation Response is null.");
}
}
- DeviceIDHolder deviceIDHolder = new DeviceIDHolder();
- deviceIDHolder.setValidDeviceIDList(validDeviceIDList);
- deviceIDHolder.setErrorDeviceIdList(errorDeviceIdList);
+ }
+
+ private static void updateDeviceLocation(DeviceLocation deviceLocation) throws DeviceDetailsMgtException {
+ PrivilegedCarbonContext ctx = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ DeviceInformationManager informationManager =
+ (DeviceInformationManager) ctx.getOSGiService(DeviceInformationManager.class, null);
- return deviceIDHolder;
+ informationManager.addDeviceLocation(deviceLocation);
}
- public String convertErrorMapIntoErrorMessage(List errorDeviceIdList) {
- return StringUtils.join(errorDeviceIdList.iterator(), COMMA_SEPARATION_PATTERN);
+ private static void updateDeviceInfo(DeviceIdentifier deviceId, DeviceInfo deviceInfo)
+ throws DeviceDetailsMgtException {
+ DeviceInformationManager informationManager = AndroidAPIUtils.getDeviceInformationManagerService();
+ informationManager.addDeviceInfo(deviceId, deviceInfo);
}
- public static boolean isValidDeviceIdentifier(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
- Device device = AndroidAPIUtils.getDeviceManagementService().
- getDevice(deviceIdentifier, false);
- if (device == null || device.getDeviceIdentifier() == null ||
- device.getDeviceIdentifier().isEmpty() || device.getEnrolmentInfo() == null) {
- return false;
- } else if (EnrolmentInfo.Status.REMOVED.equals(device.getEnrolmentInfo().getStatus())) {
- return false;
+ private static org.wso2.carbon.device.mgt.common.device.details.DeviceInfo convertDeviceToInfo(Device device) {
+
+ org.wso2.carbon.device.mgt.common.device.details.DeviceInfo deviceInfo =
+ new org.wso2.carbon.device.mgt.common.device.details.DeviceInfo();
+ if (deviceInfo.getDeviceDetailsMap() == null) {
+ deviceInfo.setDeviceDetailsMap(new HashMap<>());
+ }
+ List props = device.getProperties();
+
+ for (Device.Property prop : props) {
+ if (Utils.getDeviceDetailsColumnNames().containsValue(prop.getName())) {
+ extractDefinedProperties(deviceInfo, prop);
+ } else {
+ extractMapProperties(deviceInfo, prop);
+ }
+ }
+ return deviceInfo;
+ }
+
+ private static void extractMapProperties(DeviceInfo deviceInfo, Device.Property prop) {
+ if (prop.getName().equalsIgnoreCase("CPU_INFO")) {
+ deviceInfo.getDeviceDetailsMap().put("cpuUser", getProperty(prop.getValue(), "User"));
+ deviceInfo.getDeviceDetailsMap().put("cpuSystem", getProperty(prop.getValue(), "System"));
+ deviceInfo.getDeviceDetailsMap().put("IOW", getProperty(prop.getValue(), "IOW"));
+ deviceInfo.getDeviceDetailsMap().put("IRQ", getProperty(prop.getValue(), "IRQ"));
+ } else if (prop.getName().equalsIgnoreCase("RAM_INFO")) {
+ deviceInfo.setTotalRAMMemory(Double.parseDouble(getProperty(prop.getValue(), "TOTAL_MEMORY")));
+ deviceInfo.setAvailableRAMMemory(Double.parseDouble(
+ getProperty(prop.getValue(), "AVAILABLE_MEMORY")));
+ deviceInfo.getDeviceDetailsMap().put("ramThreshold", getProperty(prop.getValue(), "THRESHOLD"));
+ deviceInfo.getDeviceDetailsMap().put("ramLowMemory", getProperty(prop.getValue(), "LOW_MEMORY"));
+ } else if (prop.getName().equalsIgnoreCase("BATTERY_INFO")) {
+ deviceInfo.setPluggedIn(Boolean.parseBoolean(getProperty(prop.getValue(), "PLUGGED")));
+
+ deviceInfo.getDeviceDetailsMap().put("batteryLevel", getProperty(prop.getValue(), "BATTERY_LEVEL"));
+ deviceInfo.getDeviceDetailsMap().put("batteryScale", getProperty(prop.getValue(), "SCALE"));
+ deviceInfo.getDeviceDetailsMap().put("batteryVoltage",
+ getProperty(prop.getValue(), "BATTERY_VOLTAGE"));
+ deviceInfo.getDeviceDetailsMap().put("batteryTemperature",
+ getProperty(prop.getValue(), "TEMPERATURE"));
+ deviceInfo.getDeviceDetailsMap().put("batteryCurrentTemperature",
+ getProperty(prop.getValue(), "CURRENT_AVERAGE"));
+ deviceInfo.getDeviceDetailsMap().put("batteryTechnology",
+ getProperty(prop.getValue(), "TECHNOLOGY"));
+ deviceInfo.getDeviceDetailsMap().put("batteryHealth", getProperty(prop.getValue(), "HEALTH"));
+ deviceInfo.getDeviceDetailsMap().put("batteryStatus", getProperty(prop.getValue(), "STATUS"));
+ } else if (prop.getName().equalsIgnoreCase("NETWORK_INFO")) {
+ deviceInfo.setSsid(getProperty(prop.getValue(), "WIFI_SSID"));
+ deviceInfo.setConnectionType(getProperty(prop.getValue(), "CONNECTION_TYPE"));
+
+ deviceInfo.getDeviceDetailsMap().put("mobileSignalStrength",
+ getProperty(prop.getValue(), "MOBILE_SIGNAL_STRENGTH"));
+ deviceInfo.getDeviceDetailsMap().put("wifiSignalStrength",
+ getProperty(prop.getValue(), "WIFI_SIGNAL_STRENGTH"));
+ } else if (prop.getName().equalsIgnoreCase("DEVICE_INFO")) {
+ deviceInfo.setBatteryLevel(Double.parseDouble(
+ getProperty(prop.getValue(), "BATTERY_LEVEL")));
+ deviceInfo.setInternalTotalMemory(Double.parseDouble(
+ getProperty(prop.getValue(), "INTERNAL_TOTAL_MEMORY")));
+ deviceInfo.setInternalAvailableMemory(Double.parseDouble(
+ getProperty(prop.getValue(), "INTERNAL_AVAILABLE_MEMORY")));
+ deviceInfo.setExternalTotalMemory(Double.parseDouble(
+ getProperty(prop.getValue(), "EXTERNAL_TOTAL_MEMORY")));
+ deviceInfo.setExternalAvailableMemory(Double.parseDouble(
+ getProperty(prop.getValue(), "EXTERNAL_AVAILABLE_MEMORY")));
+
+ deviceInfo.getDeviceDetailsMap().put("encryptionEnabled",
+ getProperty(prop.getValue(), "ENCRYPTION_ENABLED"));
+ deviceInfo.getDeviceDetailsMap().put("passcodeEnabled",
+ getProperty(prop.getValue(), "PASSCODE_ENABLED"));
+ deviceInfo.getDeviceDetailsMap().put("operator",
+ getProperty(prop.getValue(), "OPERATOR"));
+ deviceInfo.getDeviceDetailsMap().put("PhoneNumber",
+ getProperty(prop.getValue(), "PHONE_NUMBER"));
+ } else if (prop.getName().equalsIgnoreCase("IMEI")) {
+ deviceInfo.getDeviceDetailsMap().put("IMEI", prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("IMSI")) {
+ deviceInfo.getDeviceDetailsMap().put("IMSI", prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("MAC")) {
+ deviceInfo.getDeviceDetailsMap().put("mac", prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("SERIAL")) {
+ deviceInfo.getDeviceDetailsMap().put("serial", prop.getValue());
+ }
+ }
+
+ private static void extractDefinedProperties(DeviceInfo deviceInfo, Device.Property prop) {
+ if (prop.getName().equalsIgnoreCase("DEVICE_MODEL")) {
+ deviceInfo.setDeviceModel(prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("VENDOR")) {
+ deviceInfo.setVendor(prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("OS_VERSION")) {
+ deviceInfo.setOsVersion(prop.getValue());
+ } else if (prop.getName().equalsIgnoreCase("OS_BUILD_DATE")) {
+ deviceInfo.setOsBuildDate(prop.getValue());
+ }
+ }
+
+ private static String getProperty(String properties, String needed) {
+ // This is not a key value pair. value is the immediate element to its filed name.
+ // Ex:
+ // [{"name":"ENCRYPTION_ENABLED","value":"false"},{"name":"PASSCODE_ENABLED","value":"true"},
+ // {"name":"BATTERY_LEVEL","value":"100"},{"name":"INTERNAL_TOTAL_MEMORY","value":"0.76"}]
+ JsonElement jsonElement = new JsonParser().parse(properties);
+ JsonArray jsonArray = jsonElement.getAsJsonArray();
+ boolean exist = false;
+ for (JsonElement element : jsonArray) {
+ if (element.isJsonObject()) {
+ JsonObject jsonObject = element.getAsJsonObject();
+ if (jsonObject.has("name")
+ && jsonObject.get("name").getAsString().equalsIgnoreCase(needed)) {
+ if (jsonObject.has("value")) {
+ return jsonObject.get("value").getAsString().replace("%", "");
+ } else {
+ return "";
+ }
+ }
+ }
}
- return true;
+ return "";
+ }
+
+ private static List getComplianceFeatures(Object compliancePayload)
+ throws PolicyComplianceException {
+ String compliancePayloadString = new Gson().toJson(compliancePayload);
+ if (compliancePayload == null) {
+ return null;
+ }
+ // Parsing json string to get compliance features.
+ JsonElement jsonElement;
+ if (compliancePayloadString instanceof String) {
+ jsonElement = new JsonParser().parse(compliancePayloadString);
+ } else {
+ throw new PolicyComplianceException("Invalid policy compliance payload");
+ }
+
+ JsonArray jsonArray = jsonElement.getAsJsonArray();
+ Gson gson = new Gson();
+ ComplianceFeature complianceFeature;
+ List complianceFeatures = new ArrayList(jsonArray.size());
+
+ for (JsonElement element : jsonArray) {
+ complianceFeature = gson.fromJson(element, ComplianceFeature.class);
+ complianceFeatures.add(complianceFeature);
+ }
+ return complianceFeatures;
}
/**
@@ -101,15 +422,16 @@ public class AndroidDeviceUtils {
*/
public static BadRequestException buildBadRequestException(String description) {
ErrorResponse errorResponse = getErrorResponse(AndroidConstants.
- ErrorMessages.STATUS_BAD_REQUEST_MESSAGE_DEFAULT,400l, description);
+ ErrorMessages.STATUS_BAD_REQUEST_MESSAGE_DEFAULT, 400l, description);
return new BadRequestException(errorResponse);
}
/**
* Returns generic ErrorResponse.
- * @param message specific error message
- * @param code
- * @param description
+ *
+ * @param message specific error message
+ * @param code error code
+ * @param description error description
* @return generic Response with error specific details.
*/
public static ErrorResponse getErrorResponse(String message, Long code, String description) {
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementAdminServiceTests.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementAdminServiceTests.java
new file mode 100644
index 0000000000..c60de18bc9
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementAdminServiceTests.java
@@ -0,0 +1,303 @@
+/*
+ * 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.mdm.services.android;
+
+import org.mockito.MockitoAnnotations;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.testng.PowerMockObjectFactory;
+import org.testng.Assert;
+import org.testng.IObjectFactory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+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.OperationManagementException;
+import org.wso2.carbon.mdm.services.android.mocks.DeviceManagementProviderServiceMock;
+import org.wso2.carbon.mdm.services.android.services.impl.DeviceManagementAdminServiceImpl;
+import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
+import org.wso2.carbon.mdm.services.android.utils.TestUtils;
+
+import javax.ws.rs.core.Response;
+
+@PowerMockIgnore({"javax.ws.rs.*", "org.apache.log4j.*"})
+@PrepareForTest(AndroidAPIUtils.class)
+public class DeviceManagementAdminServiceTests {
+
+ private DeviceManagementAdminServiceImpl deviceManagementAdminService;
+
+ @ObjectFactory
+ public IObjectFactory getObjectFactory() {
+ return new PowerMockObjectFactory();
+ }
+
+ @BeforeClass
+ public void init() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ MockitoAnnotations.initMocks(this);
+ deviceManagementAdminService = new DeviceManagementAdminServiceImpl();
+ }
+
+ private void mockDeviceManagementService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getDeviceManagementService"))
+ .toReturn(new DeviceManagementProviderServiceMock());
+ }
+
+ @Test
+ public void testConfigureDeviceLock()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.configureDeviceLock(TestUtils.getDeviceLockBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testConfigureDeviceUnlock()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.configureDeviceUnlock(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetDeviceLocation()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.getDeviceLocation(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testRemovePassword()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.removePassword(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testConfigureCamera()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.configureCamera(TestUtils.getCamerabeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetDeviceInformation()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.getDeviceInformation(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetDeviceLogcat()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.getDeviceLogcat(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testWipeDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.wipeDevice(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testWipeData()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.wipeData(TestUtils.getWipeDataBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetApplications()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.getApplications(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testRingDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.ringDevice(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testRebootDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.rebootDevice(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testMuteDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.muteDevice(TestUtils.getDeviceIds());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testInstallApplication()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService
+ .installApplication(TestUtils.getApplicationInstallationBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testUpdateApplication()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.updateApplication(TestUtils.getApplicationUpdateBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testUninstallApplicationPublic()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService
+ .uninstallApplication(TestUtils.getApplicationUninstallationBeanWrapperPublic());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testUninstallApplicationWebApp()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService
+ .uninstallApplication(TestUtils.getApplicationUninstallationBeanWrapperWebApp());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testBlacklistApplications()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService
+ .blacklistApplications(TestUtils.getBlacklistApplicationsBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testUpgradeFirmware()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.upgradeFirmware(TestUtils.getUpgradeFirmwareBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testConfigureVPN()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.configureVPN(TestUtils.getVpnBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testSendNotification()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.sendNotification(TestUtils.getNotificationBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testConfigureWifi()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.configureWifi(TestUtils.getWifiBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testEncryptStorage()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.encryptStorage(TestUtils.getEncryptionBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testChangeLockCode()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.changeLockCode(TestUtils.getLockCodeBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testSetPasswordPolicy()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.setPasswordPolicy(TestUtils.getPasswordPolicyBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testSetWebClip()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementAdminService.setWebClip(TestUtils.getWebClipBeanWrapper());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+}
+
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementServiceTests.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementServiceTests.java
new file mode 100644
index 0000000000..dc16b5d43c
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/DeviceManagementServiceTests.java
@@ -0,0 +1,318 @@
+/*
+ * 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.mdm.services.android;
+
+import org.mockito.MockitoAnnotations;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PowerMockIgnore;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.testng.PowerMockObjectFactory;
+import org.testng.Assert;
+import org.testng.IObjectFactory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.ObjectFactory;
+import org.testng.annotations.Test;
+import org.wso2.carbon.device.mgt.common.Device;
+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.OperationManagementException;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.AndroidDevice;
+import org.wso2.carbon.mdm.services.android.mocks.ApplicationManagementProviderServiceMock;
+import org.wso2.carbon.mdm.services.android.mocks.DeviceInformationManagerServiceMock;
+import org.wso2.carbon.mdm.services.android.mocks.DeviceManagementProviderServiceMock;
+import org.wso2.carbon.mdm.services.android.mocks.NotificationManagementServiceMock;
+import org.wso2.carbon.mdm.services.android.mocks.PolicyManagerServiceMock;
+import org.wso2.carbon.mdm.services.android.services.impl.DeviceManagementServiceImpl;
+import org.wso2.carbon.mdm.services.android.util.AndroidAPIUtils;
+import org.wso2.carbon.mdm.services.android.utils.TestUtils;
+
+import javax.ws.rs.core.Response;
+import java.util.ArrayList;
+import java.util.List;
+
+@PowerMockIgnore({"javax.ws.rs.*", "org.apache.log4j.*"})
+@PrepareForTest(AndroidAPIUtils.class)
+public class DeviceManagementServiceTests {
+
+ private DeviceManagementServiceImpl deviceManagementService;
+
+ @ObjectFactory
+ public IObjectFactory getObjectFactory() {
+ return new PowerMockObjectFactory();
+ }
+
+ @BeforeClass
+ public void init() throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ MockitoAnnotations.initMocks(this);
+ deviceManagementService = new DeviceManagementServiceImpl();
+ }
+
+ private void mockDeviceManagementService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getDeviceManagementService"))
+ .toReturn(new DeviceManagementProviderServiceMock());
+ }
+
+ private void mockApplicationManagerService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getApplicationManagerService"))
+ .toReturn(new ApplicationManagementProviderServiceMock());
+ }
+
+ private void mockPolicyManagerService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getPolicyManagerService"))
+ .toReturn(new PolicyManagerServiceMock());
+ }
+
+ private void mockDeviceInformationManagerService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getDeviceInformationManagerService"))
+ .toReturn(new DeviceInformationManagerServiceMock());
+ }
+
+ private void mockNotificationManagementService()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getNotificationManagementService"))
+ .toReturn(new NotificationManagementServiceMock());
+ }
+
+ private void mockUser()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ PowerMockito.stub(PowerMockito.method(AndroidAPIUtils.class, "getAuthenticatedUser"))
+ .toReturn("admin");
+ }
+
+ @Test
+ public void testUpdateApplicationList()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockApplicationManagerService();
+ Response response = deviceManagementService
+ .updateApplicationList(TestUtils.getDeviceId(), TestUtils.getAndroidApplications());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsForNullDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ Response response = deviceManagementService
+ .getPendingOperations(null, null, null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.BAD_REQUEST.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsInvalidDevice()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService
+ .getPendingOperations("1234", null, null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsNullResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null, null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsWithMonitorResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockPolicyManagerService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null,
+ TestUtils.getSuccessMonitorOperationResponse());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsWithApplicationResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockApplicationManagerService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null,
+ TestUtils.getSuccessApplicationOperationResponse());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsWithDeviceInfoResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockDeviceInformationManagerService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null,
+ TestUtils.getSuccessInfoOperationResponse());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsWithInProgressResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null,
+ TestUtils.getInProgressOperationResponse());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testGetPendingOperationsWithErrorResponse()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockNotificationManagementService();
+ Response response = deviceManagementService
+ .getPendingOperations(TestUtils.getDeviceId(), null,
+ TestUtils.getErrorOperationResponse());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.CREATED.getStatusCode());
+ }
+
+ @Test
+ public void testEnrollDeviceWithoutLocationSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockPolicyManagerService();
+ mockUser();
+ Response response = deviceManagementService.enrollDevice(TestUtils.getBasicAndroidDevice());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+ }
+
+ @Test
+ public void testEnrollDeviceWithLocationSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockDeviceInformationManagerService();
+ mockPolicyManagerService();
+ mockUser();
+ AndroidDevice androidDevice = TestUtils.getBasicAndroidDevice();
+
+ List properties = new ArrayList<>();
+ Device.Property property = new Device.Property();
+ property.setName("LATITUDE");
+ property.setValue("79.5");
+ properties.add(property);
+ property = new Device.Property();
+ property.setName("LONGITUDE");
+ property.setValue("6.9");
+ properties.add(property);
+ androidDevice.setProperties(properties);
+
+ Response response = deviceManagementService.enrollDevice(androidDevice);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+ }
+
+ @Test
+ public void testEnrollDeviceUnSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockUser();
+ AndroidDevice androidDevice = TestUtils.getBasicAndroidDevice();
+ androidDevice.setDeviceIdentifier("1234");
+ Response response = deviceManagementService.enrollDevice(androidDevice);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.INTERNAL_SERVER_ERROR.getStatusCode());
+ }
+
+ @Test
+ public void testIsEnrolledExists()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService.isEnrolled(TestUtils.getDeviceId(), null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+ }
+
+ @Test
+ public void testIsEnrolledNonExist()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService.isEnrolled("1234", null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+ @Test
+ public void testIsEnrolledNull()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService.isEnrolled(null, null);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+ @Test
+ public void testModifyEnrollmentSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockUser();
+ Response response = deviceManagementService
+ .modifyEnrollment(TestUtils.getDeviceId(), TestUtils.getBasicAndroidDevice());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.ACCEPTED.getStatusCode());
+ }
+
+ @Test
+ public void testModifyEnrollmentUnSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ mockUser();
+ AndroidDevice androidDevice = TestUtils.getBasicAndroidDevice();
+ androidDevice.setDeviceIdentifier("1234");
+ Response response = deviceManagementService
+ .modifyEnrollment(TestUtils.getDeviceId(), androidDevice);
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_MODIFIED.getStatusCode());
+ }
+
+ @Test
+ public void testDisEnrollDeviceSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService.disEnrollDevice(TestUtils.getDeviceId());
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.OK.getStatusCode());
+ }
+
+ @Test
+ public void testDisenrollUnSuccess()
+ throws DeviceManagementException, OperationManagementException, InvalidDeviceException {
+ mockDeviceManagementService();
+ Response response = deviceManagementService.disEnrollDevice("1234");
+ Assert.assertNotNull(response);
+ Assert.assertEquals(response.getStatus(), Response.Status.NOT_FOUND.getStatusCode());
+ }
+
+}
+
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/ApplicationManagementProviderServiceMock.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/ApplicationManagementProviderServiceMock.java
new file mode 100644
index 0000000000..563258b3c7
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/ApplicationManagementProviderServiceMock.java
@@ -0,0 +1,77 @@
+/*
+ * 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.mdm.services.android.mocks;
+
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.app.mgt.Application;
+import org.wso2.carbon.device.mgt.common.app.mgt.ApplicationManagementException;
+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.core.app.mgt.ApplicationManagementProviderService;
+
+import java.util.List;
+
+public class ApplicationManagementProviderServiceMock implements ApplicationManagementProviderService {
+ @Override
+ public void updateApplicationListInstalledInDevice(DeviceIdentifier deviceIdentifier, List list)
+ throws ApplicationManagementException {
+
+ }
+
+ @Override
+ public List getApplicationListForDevice(DeviceIdentifier deviceIdentifier)
+ throws ApplicationManagementException {
+ return null;
+ }
+
+ @Override
+ public Application[] getApplications(String s, int i, int i1) throws ApplicationManagementException {
+ return new Application[0];
+ }
+
+ @Override
+ public void updateApplicationStatus(DeviceIdentifier deviceIdentifier, Application application, String s)
+ throws ApplicationManagementException {
+
+ }
+
+ @Override
+ public String getApplicationStatus(DeviceIdentifier deviceIdentifier, Application application)
+ throws ApplicationManagementException {
+ return null;
+ }
+
+ @Override
+ public Activity installApplicationForDevices(Operation operation, List list)
+ throws ApplicationManagementException {
+ return null;
+ }
+
+ @Override
+ public Activity installApplicationForUsers(Operation operation, List list)
+ throws ApplicationManagementException {
+ return null;
+ }
+
+ @Override
+ public Activity installApplicationForUserRoles(Operation operation, List list)
+ throws ApplicationManagementException {
+ return null;
+ }
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceInformationManagerServiceMock.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceInformationManagerServiceMock.java
new file mode 100644
index 0000000000..368c78a869
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceInformationManagerServiceMock.java
@@ -0,0 +1,42 @@
+package org.wso2.carbon.mdm.services.android.mocks;
+
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceDetailsMgtException;
+import org.wso2.carbon.device.mgt.core.device.details.mgt.DeviceInformationManager;
+
+import java.util.List;
+
+public class DeviceInformationManagerServiceMock implements DeviceInformationManager {
+ @Override
+ public void addDeviceInfo(DeviceIdentifier deviceIdentifier, DeviceInfo deviceInfo)
+ throws DeviceDetailsMgtException {
+
+ }
+
+ @Override
+ public DeviceInfo getDeviceInfo(DeviceIdentifier deviceIdentifier) throws DeviceDetailsMgtException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesInfo(List list) throws DeviceDetailsMgtException {
+ return null;
+ }
+
+ @Override
+ public void addDeviceLocation(DeviceLocation deviceLocation) throws DeviceDetailsMgtException {
+
+ }
+
+ @Override
+ public DeviceLocation getDeviceLocation(DeviceIdentifier deviceIdentifier) throws DeviceDetailsMgtException {
+ return null;
+ }
+
+ @Override
+ public List getDeviceLocations(List list) throws DeviceDetailsMgtException {
+ return null;
+ }
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceManagementProviderServiceMock.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceManagementProviderServiceMock.java
new file mode 100644
index 0000000000..d3c133ef72
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/DeviceManagementProviderServiceMock.java
@@ -0,0 +1,504 @@
+/*
+ * 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.mdm.services.android.mocks;
+
+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.FeatureManager;
+import org.wso2.carbon.device.mgt.common.InvalidDeviceException;
+import org.wso2.carbon.device.mgt.common.MonitoringOperation;
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.PaginationResult;
+import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationManagementException;
+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.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.policy.mgt.PolicyMonitoringManager;
+import org.wso2.carbon.device.mgt.common.pull.notification.PullNotificationExecutionFailedException;
+import org.wso2.carbon.device.mgt.common.push.notification.NotificationStrategy;
+import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService;
+import org.wso2.carbon.device.mgt.core.dto.DeviceType;
+import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
+import org.wso2.carbon.device.mgt.core.service.EmailMetaInfo;
+import org.wso2.carbon.mdm.services.android.utils.TestUtils;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+
+public class DeviceManagementProviderServiceMock implements DeviceManagementProviderService {
+ @Override
+ public List getAllDevices(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getAllDevices(String s, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getAllDevices() throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getAllDevices(boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevices(Date date) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevices(Date date, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByType(PaginationRequest paginationRequest) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByType(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getAllDevices(PaginationRequest paginationRequest) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getAllDevices(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ if (TestUtils.getDeviceId().equals(deviceIdentifier.getId())) {
+ return TestUtils.getDevice();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public Device getDeviceWithTypeProperties(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, boolean b) throws DeviceManagementException {
+ if (TestUtils.getDeviceId().equals(deviceIdentifier.getId())) {
+ return TestUtils.getDevice();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, String s, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, Date date) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, Date date, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, String s, Date date, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, EnrolmentInfo.Status status)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Device getDevice(DeviceIdentifier deviceIdentifier, EnrolmentInfo.Status status, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesOfUser(PaginationRequest paginationRequest) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesOfUser(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByOwnership(PaginationRequest paginationRequest)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByOwnership(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesOfUser(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesOfUser(String s, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesOfUser(String s, String s1) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesOfUser(String s, String s1, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getAllDevicesOfRole(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getAllDevicesOfRole(String s, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByStatus(PaginationRequest paginationRequest) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByStatus(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesByNameAndType(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByName(PaginationRequest paginationRequest) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getDevicesByName(PaginationRequest paginationRequest, boolean b)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesByStatus(EnrolmentInfo.Status status) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDevicesByStatus(EnrolmentInfo.Status status, boolean b) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public int getDeviceCount(String s) throws DeviceManagementException {
+ return 0;
+ }
+
+ @Override
+ public int getDeviceCount() throws DeviceManagementException {
+ return 0;
+ }
+
+ @Override
+ public HashMap getTenantedDevice(DeviceIdentifier deviceIdentifier)
+ throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public void sendEnrolmentInvitation(String s, EmailMetaInfo emailMetaInfo)
+ throws DeviceManagementException, ConfigurationManagementException {
+
+ }
+
+ @Override
+ public void sendRegistrationEmail(EmailMetaInfo emailMetaInfo)
+ throws DeviceManagementException, ConfigurationManagementException {
+
+ }
+
+ @Override
+ public FeatureManager getFeatureManager(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public PlatformConfiguration getConfiguration(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public boolean isEnrolled(DeviceIdentifier deviceIdentifier, String s) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public NotificationStrategy getNotificationStrategyByDeviceType(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public License getLicense(String s, String s1) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public void addLicense(String s, License license) throws DeviceManagementException {
+
+ }
+
+ @Override
+ public boolean modifyEnrollment(Device device) throws DeviceManagementException {
+ return TestUtils.getDeviceId().equals(device.getDeviceIdentifier());
+ }
+
+ @Override
+ public boolean enrollDevice(Device device) throws DeviceManagementException {
+ return TestUtils.getDeviceId().equals(device.getDeviceIdentifier());
+ }
+
+ @Override
+ public boolean saveConfiguration(PlatformConfiguration platformConfiguration) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean disenrollDevice(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ return TestUtils.getDeviceId().equals(deviceIdentifier.getId());
+ }
+
+ @Override
+ public boolean isEnrolled(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean isActive(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean setActive(DeviceIdentifier deviceIdentifier, boolean b) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public List getAvailableDeviceTypes() throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public boolean updateDeviceInfo(DeviceIdentifier deviceIdentifier, Device device) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean setOwnership(DeviceIdentifier deviceIdentifier, String s) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean isClaimable(DeviceIdentifier deviceIdentifier) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean setStatus(DeviceIdentifier deviceIdentifier, String s, EnrolmentInfo.Status status)
+ throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean setStatus(String s, EnrolmentInfo.Status status) throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public void notifyOperationToDevices(Operation operation, List list)
+ throws DeviceManagementException {
+
+ }
+
+ @Override
+ public Activity addOperation(String s, Operation operation, List list)
+ throws OperationManagementException, InvalidDeviceException {
+ return TestUtils.getActivity();
+ }
+
+ @Override
+ public List extends Operation> getOperations(DeviceIdentifier deviceIdentifier)
+ throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getOperations(DeviceIdentifier deviceIdentifier, PaginationRequest paginationRequest)
+ throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public List extends Operation> getPendingOperations(DeviceIdentifier deviceIdentifier)
+ throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public Operation getNextPendingOperation(DeviceIdentifier deviceIdentifier) throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public void updateOperation(DeviceIdentifier deviceIdentifier, Operation operation)
+ throws OperationManagementException {
+
+ }
+
+ @Override
+ public Operation getOperationByDeviceAndOperationId(DeviceIdentifier deviceIdentifier, int i)
+ throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public List extends Operation> getOperationsByDeviceAndStatus(DeviceIdentifier deviceIdentifier,
+ Operation.Status status)
+ throws OperationManagementException, DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public Operation getOperation(String s, int i) throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public Activity getOperationByActivityId(String s) throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public Activity getOperationByActivityIdAndDevice(String s, DeviceIdentifier deviceIdentifier)
+ throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public List getActivitiesUpdatedAfter(long l, int i, int i1) throws OperationManagementException {
+ return null;
+ }
+
+ @Override
+ public int getActivityCountUpdatedAfter(long l) throws OperationManagementException {
+ return 0;
+ }
+
+ @Override
+ public List getMonitoringOperationList(String s) {
+ return null;
+ }
+
+ @Override
+ public int getDeviceMonitoringFrequency(String s) {
+ return 0;
+ }
+
+ @Override
+ public boolean isDeviceMonitoringEnabled(String s) {
+ return false;
+ }
+
+ @Override
+ public PolicyMonitoringManager getPolicyMonitoringManager(String s) {
+ return null;
+ }
+
+ @Override
+ public boolean changeDeviceStatus(DeviceIdentifier deviceIdentifier, EnrolmentInfo.Status status)
+ throws DeviceManagementException {
+ return false;
+ }
+
+ @Override
+ public void registerDeviceType(DeviceManagementService deviceManagementService) throws DeviceManagementException {
+
+ }
+
+ @Override
+ public DeviceType getDeviceType(String s) throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public List getDeviceTypes() throws DeviceManagementException {
+ return null;
+ }
+
+ @Override
+ public void notifyPullNotificationSubscriber(DeviceIdentifier deviceIdentifier, Operation operation)
+ throws PullNotificationExecutionFailedException {
+
+ }
+
+ @Override
+ public List getDeviceEnrolledTenants() throws DeviceManagementException {
+ return null;
+ }
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/NotificationManagementServiceMock.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/NotificationManagementServiceMock.java
new file mode 100644
index 0000000000..53b2106683
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/NotificationManagementServiceMock.java
@@ -0,0 +1,74 @@
+/*
+ * 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.mdm.services.android.mocks;
+
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.PaginationRequest;
+import org.wso2.carbon.device.mgt.common.PaginationResult;
+import org.wso2.carbon.device.mgt.common.notification.mgt.Notification;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementException;
+import org.wso2.carbon.device.mgt.common.notification.mgt.NotificationManagementService;
+
+import java.util.List;
+
+public class NotificationManagementServiceMock implements NotificationManagementService {
+ @Override
+ public boolean addNotification(DeviceIdentifier deviceIdentifier, Notification notification)
+ throws NotificationManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean updateNotification(Notification notification) throws NotificationManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean updateNotificationStatus(int i, Notification.Status status) throws NotificationManagementException {
+ return false;
+ }
+
+ @Override
+ public List getAllNotifications() throws NotificationManagementException {
+ return null;
+ }
+
+ @Override
+ public Notification getNotification(int i) throws NotificationManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getAllNotifications(PaginationRequest paginationRequest)
+ throws NotificationManagementException {
+ return null;
+ }
+
+ @Override
+ public List getNotificationsByStatus(Notification.Status status)
+ throws NotificationManagementException {
+ return null;
+ }
+
+ @Override
+ public PaginationResult getNotificationsByStatus(Notification.Status status, PaginationRequest paginationRequest)
+ throws NotificationManagementException {
+ return null;
+ }
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/PolicyManagerServiceMock.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/PolicyManagerServiceMock.java
new file mode 100644
index 0000000000..a71dafebf8
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/mocks/PolicyManagerServiceMock.java
@@ -0,0 +1,142 @@
+/*
+ * 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.mdm.services.android.mocks;
+
+import org.wso2.carbon.device.mgt.common.DeviceIdentifier;
+import org.wso2.carbon.device.mgt.common.Feature;
+import org.wso2.carbon.device.mgt.common.policy.mgt.Policy;
+import org.wso2.carbon.device.mgt.common.policy.mgt.Profile;
+import org.wso2.carbon.device.mgt.common.policy.mgt.ProfileFeature;
+import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.ComplianceFeature;
+import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.NonComplianceData;
+import org.wso2.carbon.device.mgt.common.policy.mgt.monitor.PolicyComplianceException;
+import org.wso2.carbon.policy.mgt.common.FeatureManagementException;
+import org.wso2.carbon.policy.mgt.common.PolicyAdministratorPoint;
+import org.wso2.carbon.policy.mgt.common.PolicyEvaluationPoint;
+import org.wso2.carbon.policy.mgt.common.PolicyInformationPoint;
+import org.wso2.carbon.policy.mgt.common.PolicyManagementException;
+import org.wso2.carbon.policy.mgt.common.PolicyMonitoringTaskException;
+import org.wso2.carbon.policy.mgt.core.PolicyManagerService;
+import org.wso2.carbon.policy.mgt.core.task.TaskScheduleService;
+
+import java.util.List;
+
+public class PolicyManagerServiceMock implements PolicyManagerService {
+
+ @Override
+ public Profile addProfile(Profile profile) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public Profile updateProfile(Profile profile) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public Policy addPolicy(Policy policy) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public Policy updatePolicy(Policy policy) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public boolean deletePolicy(Policy policy) throws PolicyManagementException {
+ return false;
+ }
+
+ @Override
+ public boolean deletePolicy(int i) throws PolicyManagementException {
+ return false;
+ }
+
+ @Override
+ public Policy getEffectivePolicy(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public List getEffectiveFeatures(DeviceIdentifier deviceIdentifier)
+ throws FeatureManagementException {
+ return null;
+ }
+
+ @Override
+ public List getPolicies(String s) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public List getFeatures() throws FeatureManagementException {
+ return null;
+ }
+
+ @Override
+ public PolicyAdministratorPoint getPAP() throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public PolicyInformationPoint getPIP() throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public PolicyEvaluationPoint getPEP() throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public TaskScheduleService getTaskScheduleService() throws PolicyMonitoringTaskException {
+ return null;
+ }
+
+ @Override
+ public int getPolicyCount() throws PolicyManagementException {
+ return 0;
+ }
+
+ @Override
+ public Policy getAppliedPolicyToDevice(DeviceIdentifier deviceIdentifier) throws PolicyManagementException {
+ return null;
+ }
+
+ @Override
+ public List checkPolicyCompliance(DeviceIdentifier deviceIdentifier, Object o)
+ throws PolicyComplianceException {
+ return null;
+ }
+
+ @Override
+ public boolean checkCompliance(DeviceIdentifier deviceIdentifier, Object o) throws PolicyComplianceException {
+ return false;
+ }
+
+ @Override
+ public NonComplianceData getDeviceCompliance(DeviceIdentifier deviceIdentifier) throws PolicyComplianceException {
+ return null;
+ }
+
+ @Override
+ public boolean isCompliant(DeviceIdentifier deviceIdentifier) throws PolicyComplianceException {
+ return false;
+ }
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/utils/TestUtils.java b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/utils/TestUtils.java
new file mode 100644
index 0000000000..cff3d8ca21
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/java/org/wso2/carbon/mdm/services/android/utils/TestUtils.java
@@ -0,0 +1,425 @@
+/*
+ * 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.mdm.services.android.utils;
+
+import org.wso2.carbon.device.mgt.common.Device;
+import org.wso2.carbon.device.mgt.common.DeviceManagementConstants;
+import org.wso2.carbon.device.mgt.common.EnrolmentInfo;
+import org.wso2.carbon.device.mgt.common.app.mgt.Application;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceInfo;
+import org.wso2.carbon.device.mgt.common.device.details.DeviceLocation;
+import org.wso2.carbon.device.mgt.common.operation.mgt.Activity;
+import org.wso2.carbon.device.mgt.common.operation.mgt.Operation;
+import org.wso2.carbon.mdm.services.android.bean.ApplicationInstallation;
+import org.wso2.carbon.mdm.services.android.bean.ApplicationUninstallation;
+import org.wso2.carbon.mdm.services.android.bean.ApplicationUpdate;
+import org.wso2.carbon.mdm.services.android.bean.BlacklistApplications;
+import org.wso2.carbon.mdm.services.android.bean.Camera;
+import org.wso2.carbon.mdm.services.android.bean.DeviceEncryption;
+import org.wso2.carbon.mdm.services.android.bean.DeviceLock;
+import org.wso2.carbon.mdm.services.android.bean.LockCode;
+import org.wso2.carbon.mdm.services.android.bean.Notification;
+import org.wso2.carbon.mdm.services.android.bean.PasscodePolicy;
+import org.wso2.carbon.mdm.services.android.bean.UpgradeFirmware;
+import org.wso2.carbon.mdm.services.android.bean.Vpn;
+import org.wso2.carbon.mdm.services.android.bean.WebClip;
+import org.wso2.carbon.mdm.services.android.bean.Wifi;
+import org.wso2.carbon.mdm.services.android.bean.WipeData;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.AndroidApplication;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.AndroidDevice;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.ApplicationInstallationBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.ApplicationUninstallationBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.ApplicationUpdateBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.BlacklistApplicationsBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.CameraBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.DeviceLockBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.EncryptionBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.LockCodeBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.NotificationBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.PasswordPolicyBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.UpgradeFirmwareBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.VpnBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.WebClipBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.WifiBeanWrapper;
+import org.wso2.carbon.mdm.services.android.bean.wrapper.WipeDataBeanWrapper;
+import org.wso2.carbon.mdm.services.android.util.AndroidConstants;
+import org.wso2.carbon.mdm.services.android.util.AndroidDeviceUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class TestUtils {
+
+ public static Activity getActivity() {
+ Activity activity = new Activity();
+ activity.setActivityId("ACTIVITY_1");
+ activity.setCode("CODE");
+ return activity;
+ }
+
+ public static String getDeviceId() {
+ return "1a2b3c4d5e";
+ }
+
+ public static List getDeviceIds() {
+ List deviceIds = new ArrayList<>();
+ deviceIds.add(getDeviceId());
+ return deviceIds;
+ }
+
+ public static Device getDevice() {
+ Device device = new Device();
+ device.setId(1);
+ device.setName("Test");
+ device.setDeviceIdentifier(getDeviceId());
+ device.setType(DeviceManagementConstants.MobileDeviceTypes.MOBILE_DEVICE_TYPE_ANDROID);
+ EnrolmentInfo enrolmentInfo = new EnrolmentInfo();
+ enrolmentInfo.setId(1);
+ enrolmentInfo.setOwner("admin");
+ enrolmentInfo.setOwnership(EnrolmentInfo.OwnerShip.BYOD);
+ enrolmentInfo.setStatus(EnrolmentInfo.Status.ACTIVE);
+ device.setEnrolmentInfo(enrolmentInfo);
+ return device;
+ }
+
+ public static DeviceLockBeanWrapper getDeviceLockBeanWrapper() {
+ DeviceLockBeanWrapper deviceLockBeanWrapper = new DeviceLockBeanWrapper();
+ deviceLockBeanWrapper.setDeviceIDs(getDeviceIds());
+ DeviceLock deviceLockOperation = new DeviceLock();
+ deviceLockOperation.setHardLockEnabled(true);
+ deviceLockOperation.setMessage("Test Operation");
+ deviceLockBeanWrapper.setOperation(deviceLockOperation);
+ return deviceLockBeanWrapper;
+ }
+
+ public static CameraBeanWrapper getCamerabeanWrapper() {
+ CameraBeanWrapper cameraBeanWrapper = new CameraBeanWrapper();
+ cameraBeanWrapper.setDeviceIDs(getDeviceIds());
+ Camera camera = new Camera();
+ camera.setEnabled(false);
+ cameraBeanWrapper.setOperation(camera);
+ return cameraBeanWrapper;
+ }
+
+ public static WipeDataBeanWrapper getWipeDataBeanWrapper() {
+ WipeDataBeanWrapper wipeDataBeanWrapper = new WipeDataBeanWrapper();
+ wipeDataBeanWrapper.setDeviceIDs(getDeviceIds());
+ WipeData wipeData = new WipeData();
+ wipeData.setPin("1234");
+ wipeDataBeanWrapper.setOperation(wipeData);
+ return wipeDataBeanWrapper;
+ }
+
+ public static ApplicationInstallationBeanWrapper getApplicationInstallationBeanWrapper() {
+ ApplicationInstallationBeanWrapper applicationInstallationBeanWrapper = new ApplicationInstallationBeanWrapper();
+ applicationInstallationBeanWrapper.setDeviceIDs(getDeviceIds());
+ ApplicationInstallation applicationInstallation = new ApplicationInstallation();
+ applicationInstallation.setAppIdentifier("org.wso2.iot.agent");
+ applicationInstallation.setUrl("https://github.com/wso2/cdmf-agent-android/releases/download/v3.1.21/client-standalone.apk");
+ applicationInstallation.setType("enterprise");
+ applicationInstallation.setSchedule("2017-10-11T18:46:19-0530");
+ applicationInstallationBeanWrapper.setOperation(applicationInstallation);
+ return applicationInstallationBeanWrapper;
+ }
+
+ public static ApplicationUpdateBeanWrapper getApplicationUpdateBeanWrapper() {
+ ApplicationUpdateBeanWrapper applicationUpdateBeanWrapper = new ApplicationUpdateBeanWrapper();
+ applicationUpdateBeanWrapper.setDeviceIDs(getDeviceIds());
+ ApplicationUpdate applicationUpdate = new ApplicationUpdate();
+ applicationUpdate.setAppIdentifier("org.wso2.iot.agent");
+ applicationUpdate.setUrl("https://github.com/wso2/cdmf-agent-android/releases/download/v3.1.21/client-standalone.apk");
+ applicationUpdate.setType("enterprise");
+ applicationUpdate.setSchedule("2017-10-11T18:46:19-0530");
+ applicationUpdateBeanWrapper.setOperation(applicationUpdate);
+ return applicationUpdateBeanWrapper;
+ }
+
+ public static ApplicationUninstallationBeanWrapper getApplicationUninstallationBeanWrapperPublic() {
+ ApplicationUninstallationBeanWrapper applicationUninstallationBeanWrapper = new ApplicationUninstallationBeanWrapper();
+ applicationUninstallationBeanWrapper.setDeviceIDs(getDeviceIds());
+ ApplicationUninstallation applicationUninstallation = new ApplicationUninstallation();
+ applicationUninstallation.setAppIdentifier("org.wso2.iot.agent");
+ applicationUninstallation.setType("public");
+ applicationUninstallationBeanWrapper.setOperation(applicationUninstallation);
+ return applicationUninstallationBeanWrapper;
+ }
+
+ public static ApplicationUninstallationBeanWrapper getApplicationUninstallationBeanWrapperWebApp() {
+ ApplicationUninstallationBeanWrapper applicationUninstallationBeanWrapper = new ApplicationUninstallationBeanWrapper();
+ applicationUninstallationBeanWrapper.setDeviceIDs(getDeviceIds());
+ ApplicationUninstallation applicationUninstallation = new ApplicationUninstallation();
+ applicationUninstallation.setAppIdentifier("org.wso2.iot.agent");
+ applicationUninstallation.setType("webapp");
+ applicationUninstallationBeanWrapper.setOperation(applicationUninstallation);
+ return applicationUninstallationBeanWrapper;
+ }
+
+ public static BlacklistApplicationsBeanWrapper getBlacklistApplicationsBeanWrapper() {
+ BlacklistApplicationsBeanWrapper blacklistApplicationsBeanWrapper = new BlacklistApplicationsBeanWrapper();
+ blacklistApplicationsBeanWrapper.setDeviceIDs(getDeviceIds());
+ BlacklistApplications blacklistApplications = new BlacklistApplications();
+ List appIds = new ArrayList<>();
+ appIds.add("org.wso2.iot.agent");
+ blacklistApplications.setAppIdentifier(appIds);
+ blacklistApplicationsBeanWrapper.setOperation(blacklistApplications);
+ return blacklistApplicationsBeanWrapper;
+ }
+
+ public static UpgradeFirmwareBeanWrapper getUpgradeFirmwareBeanWrapper() {
+ UpgradeFirmwareBeanWrapper upgradeFirmwareBeanWrapper = new UpgradeFirmwareBeanWrapper();
+ upgradeFirmwareBeanWrapper.setDeviceIDs(getDeviceIds());
+ UpgradeFirmware upgradeFirmware = new UpgradeFirmware();
+ upgradeFirmware.setServer("https://github.com/wso2/cdmf-agent-android/releases/download/");
+ upgradeFirmware.setSchedule("2017-10-11T18:46:19-0530");
+ upgradeFirmwareBeanWrapper.setOperation(upgradeFirmware);
+ return upgradeFirmwareBeanWrapper;
+ }
+
+ public static VpnBeanWrapper getVpnBeanWrapper() {
+ VpnBeanWrapper vpnBeanWrapper = new VpnBeanWrapper();
+ vpnBeanWrapper.setDeviceIDs(getDeviceIds());
+ Vpn vpn = new Vpn();
+ vpnBeanWrapper.setOperation(vpn);
+ return vpnBeanWrapper;
+ }
+
+ public static NotificationBeanWrapper getNotificationBeanWrapper() {
+ NotificationBeanWrapper notificationBeanWrapper = new NotificationBeanWrapper();
+ notificationBeanWrapper.setDeviceIDs(getDeviceIds());
+ Notification notification = new Notification();
+ notification.setMessageText("Message");
+ notification.setMessageTitle("Title");
+ notificationBeanWrapper.setOperation(notification);
+ return notificationBeanWrapper;
+ }
+
+ public static WifiBeanWrapper getWifiBeanWrapper() {
+ WifiBeanWrapper wifiBeanWrapper = new WifiBeanWrapper();
+ wifiBeanWrapper.setDeviceIDs(getDeviceIds());
+ Wifi wifi = new Wifi();
+ wifiBeanWrapper.setOperation(wifi);
+ return wifiBeanWrapper;
+ }
+
+ public static EncryptionBeanWrapper getEncryptionBeanWrapper() {
+ EncryptionBeanWrapper encryptionBeanWrapper = new EncryptionBeanWrapper();
+ encryptionBeanWrapper.setDeviceIDs(getDeviceIds());
+ DeviceEncryption deviceEncryption = new DeviceEncryption();
+ deviceEncryption.setEncrypted(true);
+ encryptionBeanWrapper.setOperation(deviceEncryption);
+ return encryptionBeanWrapper;
+ }
+
+ public static LockCodeBeanWrapper getLockCodeBeanWrapper() {
+ LockCodeBeanWrapper lockCodeBeanWrapper = new LockCodeBeanWrapper();
+ lockCodeBeanWrapper.setDeviceIDs(getDeviceIds());
+ LockCode lockCode = new LockCode();
+ lockCode.setLockCode("1234");
+ lockCodeBeanWrapper.setOperation(lockCode);
+ return lockCodeBeanWrapper;
+ }
+
+ public static PasswordPolicyBeanWrapper getPasswordPolicyBeanWrapper() {
+ PasswordPolicyBeanWrapper passwordPolicyBeanWrapper = new PasswordPolicyBeanWrapper();
+ passwordPolicyBeanWrapper.setDeviceIDs(getDeviceIds());
+ PasscodePolicy passcodePolicy = new PasscodePolicy();
+ passwordPolicyBeanWrapper.setOperation(passcodePolicy);
+ return passwordPolicyBeanWrapper;
+ }
+
+ public static WebClipBeanWrapper getWebClipBeanWrapper() {
+ WebClipBeanWrapper webClipBeanWrapper = new WebClipBeanWrapper();
+ webClipBeanWrapper.setDeviceIDs(getDeviceIds());
+ WebClip webClip = new WebClip();
+ webClipBeanWrapper.setOperation(webClip);
+ return webClipBeanWrapper;
+ }
+
+ public static List getAndroidApplications() {
+ List androidApplications = new ArrayList<>();
+ AndroidApplication androidApplication = new AndroidApplication();
+ androidApplications.add(androidApplication);
+ return androidApplications;
+ }
+
+ public static List getSuccessMonitorOperationResponse() {
+ List operations = new ArrayList<>();
+ Operation operation = new Operation();
+ operation.setActivityId(getActivity().getActivityId());
+ operation.setCode(AndroidConstants.OperationCodes.MONITOR);
+ operation.setId(1);
+ operation.setOperationResponse("Operation success.");
+ operation.setStatus(Operation.Status.COMPLETED);
+ operations.add(operation);
+ return operations;
+ }
+
+ public static List getSuccessApplicationOperationResponse() {
+ List operations = new ArrayList<>();
+ Operation operation = new Operation();
+ operation.setActivityId(getActivity().getActivityId());
+ operation.setCode(AndroidConstants.OperationCodes.APPLICATION_LIST);
+ operation.setId(1);
+ operation.setOperationResponse("[{\"name\":\"Widget%20Preview\",\"package\":\"com.android.widgetpreview\"," +
+ "\"version\":\"7.1.1\",\"isSystemApp\":false,\"isActive\":false}," +
+ "{\"name\":\"com.android.gesture.builder\"," +
+ "\"package\":\"com.android.gesture.builder\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false},{\"name\":\"API%20Demos\"," +
+ "\"package\":\"com.example.android.apis\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false}," +
+ "{\"name\":\"WSO2%20Device%20Management%20Agent\"," +
+ "\"package\":\"org.wso2.iot.agent\",\"version\":\"3.1.21\"," +
+ "\"isSystemApp\":false,\"isActive\":true}," +
+ "{\"name\":\"com.android.smoketest.tests\"," +
+ "\"package\":\"com.android.smoketest.tests\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false}," +
+ "{\"name\":\"Sample%20Soft%20Keyboard\"," +
+ "\"package\":\"com.example.android.softkeyboard\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false},{\"name\":\"Example%20Wallpapers\"," +
+ "\"package\":\"com.example.android.livecubes\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false},{\"name\":\"com.android.smoketest\"," +
+ "\"package\":\"com.android.smoketest\",\"version\":\"7.1.1\"," +
+ "\"isSystemApp\":false,\"isActive\":false}]");
+ operation.setStatus(Operation.Status.COMPLETED);
+ operations.add(operation);
+ return operations;
+ }
+
+ public static List getSuccessInfoOperationResponse() {
+ List operations = new ArrayList<>();
+ Operation operation = new Operation();
+ operation.setActivityId(getActivity().getActivityId());
+ operation.setCode(AndroidConstants.OperationCodes.DEVICE_INFO);
+ operation.setId(1);
+ operation.setOperationResponse("{\"description\":\"generic_x86\",\"deviceIdentifier\":\"1d9612def9d205f9\"," +
+ "\"enrolmentInfo\":null,\"name\":\"generic_x86\",\"properties\":[" +
+ "{\"name\":\"SERIAL\",\"value\":\"unknown\"}," +
+ "{\"name\":\"IMEI\",\"value\":null}," +
+ "{\"name\":\"IMSI\",\"value\":\"310260000000000\"}," +
+ "{\"name\":\"MAC\",\"value\":\"02:00:00:00:00:00\"}," +
+ "{\"name\":\"DEVICE_MODEL\",\"value\":\"Android SDK built for x86\"}," +
+ "{\"name\":\"VENDOR\",\"value\":\"unknown\"}," +
+ "{\"name\":\"OS_VERSION\",\"value\":\"7.1.1\"}," +
+ "{\"name\":\"OS_BUILD_DATE\",\"value\":\"1487782847000\"}," +
+ "{\"name\":\"DEVICE_NAME\",\"value\":\"generic_x86\"}," +
+ "{\"name\":\"LATITUDE\",\"value\":\"6.90988\"}," +
+ "{\"name\":\"LONGITUDE\",\"value\":\"79.85249999999999\"}," +
+ "{\"name\":\"NETWORK_INFO\",\"value\":\"[" +
+ "{\\\"name\\\":\\\"CONNECTION_TYPE\\\",\\\"value\\\":\\\"MOBILE\\\"}," +
+ "{\\\"name\\\":\\\"MOBILE_CONNECTION_TYPE\\\",\\\"value\\\":\\\"LTE\\\"}," +
+ "{\\\"name\\\":\\\"MOBILE_SIGNAL_STRENGTH\\\",\\\"value\\\":\\\"-89\\\"}]\"}," +
+ "{\"name\":\"CPU_INFO\",\"value\":\"[]\"},{\"name\":\"RAM_INFO\",\"value\":\"[" +
+ "{\\\"name\\\":\\\"TOTAL_MEMORY\\\",\\\"value\\\":\\\"1055113216\\\"}," +
+ "{\\\"name\\\":\\\"AVAILABLE_MEMORY\\\",\\\"value\\\":\\\"708997120\\\"}," +
+ "{\\\"name\\\":\\\"THRESHOLD\\\",\\\"value\\\":\\\"150994944\\\"}," +
+ "{\\\"name\\\":\\\"LOW_MEMORY\\\",\\\"value\\\":\\\"false\\\"}]\"}," +
+ "{\"name\":\"BATTERY_INFO\",\"value\":\"[" +
+ "{\\\"name\\\":\\\"BATTERY_LEVEL\\\",\\\"value\\\":\\\"100\\\"}," +
+ "{\\\"name\\\":\\\"SCALE\\\",\\\"value\\\":\\\"100\\\"}," +
+ "{\\\"BATTERY_VOLTAGE\\\":\\\"0\\\"}," +
+ "{\\\"name\\\":\\\"HEALTH\\\",\\\"value\\\":\\\"GOOD_CONDITION\\\"}," +
+ "{\\\"name\\\":\\\"STATUS\\\"}," +
+ "{\\\"name\\\":\\\"PLUGGED\\\",\\\"value\\\":\\\"AC\\\"}]\"}," +
+ "{\"name\":\"DEVICE_INFO\",\"value\":\"[" +
+ "{\\\"name\\\":\\\"ENCRYPTION_ENABLED\\\",\\\"value\\\":\\\"false\\\"}," +
+ "{\\\"name\\\":\\\"PASSCODE_ENABLED\\\",\\\"value\\\":\\\"true\\\"}," +
+ "{\\\"name\\\":\\\"BATTERY_LEVEL\\\",\\\"value\\\":\\\"100\\\"}," +
+ "{\\\"name\\\":\\\"INTERNAL_TOTAL_MEMORY\\\",\\\"value\\\":\\\"0.76\\\"}," +
+ "{\\\"name\\\":\\\"INTERNAL_AVAILABLE_MEMORY\\\",\\\"value\\\":\\\"0.67\\\"}," +
+ "{\\\"name\\\":\\\"EXTERNAL_TOTAL_MEMORY\\\",\\\"value\\\":\\\"0.1\\\"}," +
+ "{\\\"name\\\":\\\"EXTERNAL_AVAILABLE_MEMORY\\\",\\\"value\\\":\\\"0.1\\\"}," +
+ "{\\\"name\\\":\\\"OPERATOR\\\",\\\"value\\\":\\\"Android\\\"}," +
+ "{\\\"name\\\":\\\"PHONE_NUMBER\\\",\\\"value\\\":\\\"15555215554\\\"}]\"}]}");
+ operation.setStatus(Operation.Status.COMPLETED);
+ operations.add(operation);
+ return operations;
+ }
+
+ public static List getInProgressOperationResponse() {
+ List operations = new ArrayList<>();
+ Operation operation = new Operation();
+ operation.setActivityId(getActivity().getActivityId());
+ operation.setCode(AndroidConstants.OperationCodes.NOTIFICATION);
+ operation.setId(1);
+ operation.setOperationResponse("Operation in progress.");
+ operation.setStatus(Operation.Status.IN_PROGRESS);
+ operations.add(operation);
+ return operations;
+ }
+
+ public static List getErrorOperationResponse() {
+ List operations = new ArrayList<>();
+ Operation operation = new Operation();
+ operation.setActivityId(getActivity().getActivityId());
+ operation.setCode(AndroidConstants.OperationCodes.DEVICE_INFO);
+ operation.setId(1);
+ operation.setOperationResponse("Operation failure.");
+ operation.setStatus(Operation.Status.ERROR);
+ operations.add(operation);
+ return operations;
+ }
+
+ public static DeviceLocation getDeviceLocation() {
+ DeviceLocation location = new DeviceLocation();
+ location.setCity("Colombo");
+ location.setCountry("Sri Lanka");
+ location.setLatitude(6.9);
+ location.setLongitude(79.5);
+ location.setDeviceIdentifier(AndroidDeviceUtils.convertToDeviceIdentifierObject(getDeviceId()));
+ return location;
+ }
+
+ public static DeviceInfo getDeviceInfo() {
+ DeviceInfo deviceInfo = new DeviceInfo();
+ deviceInfo.setDeviceModel("nexus");
+ deviceInfo.setAvailableRAMMemory(2.0);
+ deviceInfo.setBatteryLevel(100.0);
+ deviceInfo.setConnectionType("4G");
+ deviceInfo.setCpuUsage(1.0);
+ deviceInfo.setExternalAvailableMemory(2.3);
+ deviceInfo.setExternalTotalMemory(4.0);
+ deviceInfo.setInternalAvailableMemory(1.0);
+ deviceInfo.setInternalTotalMemory(4.0);
+ deviceInfo.setLocation(getDeviceLocation());
+ return deviceInfo;
+ }
+
+ public static List getApplications() {
+ List applications = new ArrayList<>();
+ Application app = new Application();
+ app.setName("WSO2 IoT Agent");
+ app.setApplicationIdentifier("org.wos2.iot.agent");
+ app.setVersion("1.0.0");
+ app.setPlatform("Android");
+ applications.add(app);
+ return applications;
+ }
+
+ public static AndroidDevice getBasicAndroidDevice() {
+ AndroidDevice androidDevice = new AndroidDevice();
+ androidDevice.setName(getDevice().getName());
+ androidDevice.setDescription(getDevice().getDescription());
+ androidDevice.setDeviceIdentifier(getDeviceId());
+ androidDevice.setDeviceInfo(getDeviceInfo());
+ androidDevice.setApplications(getApplications());
+ androidDevice.setEnrolmentInfo(getDevice().getEnrolmentInfo());
+ return androidDevice;
+ }
+
+}
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/log4j.properties b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/log4j.properties
new file mode 100644
index 0000000000..90c5d0edce
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/log4j.properties
@@ -0,0 +1,34 @@
+#
+# 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.
+#
+
+#
+# This is the log4j configuration file used by WSO2 Carbon
+#
+# IMPORTANT : Please do not remove or change the names of any
+# of the Appender defined here. The layout pattern & log file
+# can be changed using the WSO2 Carbon Management Console, and those
+# settings will override the settings in this file.
+#
+
+log4j.rootLogger=DEBUG, STD_OUT
+
+# Redirect log messages to console
+log4j.appender.STD_OUT=org.apache.log4j.ConsoleAppender
+log4j.appender.STD_OUT.Target=System.out
+log4j.appender.STD_OUT.layout=org.apache.log4j.PatternLayout
+log4j.appender.STD_OUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
diff --git a/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/testng.xml b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/testng.xml
new file mode 100644
index 0000000000..865a1e85b4
--- /dev/null
+++ b/components/mobile-plugins/android-plugin/org.wso2.carbon.device.mgt.mobile.android.api/src/test/resources/testng.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/test-coverage/pom.xml b/components/test-coverage/pom.xml
index a4d071ce7d..f63abc3df0 100644
--- a/components/test-coverage/pom.xml
+++ b/components/test-coverage/pom.xml
@@ -147,6 +147,9 @@
+
+
+
diff --git a/pom.xml b/pom.xml
index 6a76dc5b2f..b7958b10ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -271,6 +271,12 @@
org.wso2.carbon.devicemgt
org.wso2.carbon.policy.mgt.core
${carbon.devicemgt.version}
+
+
+ org.mockito
+ mockito-core
+
+
org.wso2.carbon.devicemgt
@@ -293,6 +299,12 @@
org.wso2.carbon.devicemgt
org.wso2.carbon.device.mgt.analytics.data.publisher
${carbon.devicemgt.version}
+
+
+ jboss
+ javassist
+
+
org.wso2.carbon.devicemgt
@@ -1114,6 +1126,36 @@
${junit.version}
test
+
+ org.powermock
+ powermock-module-testng
+ ${powermock.version}
+ test
+
+
+ org.powermock
+ powermock-api-mockito
+ ${powermock.version}
+ test
+
+
+ org.wso2.carbon
+ org.wso2.carbon.queuing
+ ${carbon.kernel.version}
+ test
+
+
+ commons-dbcp.wso2
+ commons-dbcp
+ ${commons.dbcp.version}
+ test
+
+
+ javassist
+ javassist
+ ${javassist.version}
+ test
+
@@ -1293,6 +1335,9 @@
0.7.8
0.7.5.201505241946
1.0b3
+ 1.4.0.wso2v1
+ 3.12.1.GA
+ 1.7.0