diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
index cd4cb7795dd..ed2d1a47334 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/pom.xml
@@ -74,6 +74,39 @@
org.wso2.carbon
org.wso2.carbon.ndatasource.core
+
+ org.testng
+ testng
+
+
+ org.powermock
+ powermock-module-testng
+ test
+
+
+ org.wso2.carbon.registry
+ org.wso2.carbon.registry.indexing
+ test
+
+
+ org.slf4j
+ jcl-over-slf4j
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ log4j-over-slf4j
+
+
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.core
+ test
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
index eb02504d975..82d039f53e3 100644
--- a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployer.java
@@ -51,8 +51,8 @@ public class DeviceTypePluginDeployer extends AbstractDeployer {
private static Log log = LogFactory.getLog(DeviceTypePluginDeployer.class);
private ConfigurationContext configurationContext;
- protected Map deviceTypeServiceRegistrations = new ConcurrentHashMap();
- protected Map deviceTypeConfigurationDataMap = new ConcurrentHashMap();
+ private Map deviceTypeServiceRegistrations = new ConcurrentHashMap();
+ private Map deviceTypeConfigurationDataMap = new ConcurrentHashMap();
@Override
public void init(ConfigurationContext configurationContext) {
@@ -118,7 +118,7 @@ public class DeviceTypePluginDeployer extends AbstractDeployer {
}
}
- private ServiceRegistration registerDeviceType(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
+ protected ServiceRegistration registerDeviceType(DeviceTypeConfigIdentifier deviceTypeConfigIdentifier,
DeviceTypeConfiguration deviceManagementConfiguration) {
DeviceTypeManagerService deviceTypeManagerService = new DeviceTypeManagerService(deviceTypeConfigIdentifier,
deviceManagementConfiguration);
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java
new file mode 100644
index 00000000000..7f158ff5692
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/deployer/DeviceTypePluginDeployerTest.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.wso2.carbon.device.mgt.extensions.device.type.deployer;
+
+import org.apache.axis2.deployment.DeploymentException;
+import org.apache.axis2.deployment.repository.util.DeploymentFileData;
+import org.junit.Assert;
+import org.mockito.Mockito;
+import org.osgi.framework.ServiceRegistration;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
+import org.wso2.carbon.device.mgt.extensions.device.type.template.DeviceTypeConfigIdentifier;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/*
+ Unit tests for DeviceTypePluginDeployer
+ */
+public class DeviceTypePluginDeployerTest {
+ private DeviceTypePluginDeployer deviceTypePluginDeployer;
+ private DeploymentFileData deploymentFileData;
+ private Field deviceTypeServiceRegistrations = null;
+ private Field deviceTypeConfigurationDataMap = null;
+ private ServiceRegistration serviceRegistration = null;
+
+ @BeforeClass
+ public void init() throws NoSuchFieldException, IllegalAccessException, IOException, RegistryException {
+ deviceTypePluginDeployer = Mockito.mock(DeviceTypePluginDeployer.class, Mockito.CALLS_REAL_METHODS);
+ serviceRegistration = Mockito.mock(ServiceRegistration.class, Mockito.CALLS_REAL_METHODS);
+ Mockito.doReturn(serviceRegistration).when(deviceTypePluginDeployer).registerDeviceType(Mockito.any(),
+ Mockito.any());
+ deviceTypeServiceRegistrations = DeviceTypePluginDeployer.class.getDeclaredField
+ ("deviceTypeServiceRegistrations");
+ deviceTypeServiceRegistrations.setAccessible(true);
+ deviceTypeServiceRegistrations.set(deviceTypePluginDeployer, new ConcurrentHashMap());
+ deviceTypeConfigurationDataMap = DeviceTypePluginDeployer.class.getDeclaredField
+ ("deviceTypeConfigurationDataMap");
+ deviceTypeConfigurationDataMap.setAccessible(true);
+ deviceTypeConfigurationDataMap.set(deviceTypePluginDeployer, new ConcurrentHashMap());
+ this.initializeCarbonContext();
+ }
+
+ private void initializeCarbonContext() throws IOException, RegistryException {
+
+ if (System.getProperty("carbon.home") == null) {
+ File file = new File("src/test/resources");
+ if (file.exists()) {
+ System.setProperty("carbon.home", file.getAbsolutePath());
+ }
+ }
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(
+ org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(
+ org.wso2.carbon.base.MultitenantConstants.SUPER_TENANT_ID);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test(description = "Testing deviceType deploy method by deploying Android device type")
+ public void deploy() throws DeploymentException, IllegalAccessException {
+ File file = new File("src/test/resources/android.xml");
+ if (file.exists()) {
+ deploymentFileData = new DeploymentFileData(file);
+ }
+ deviceTypePluginDeployer.deploy(deploymentFileData);
+ Map tempServiceRegistration = (Map)
+ deviceTypeServiceRegistrations.get(deviceTypePluginDeployer);
+ Assert.assertEquals(tempServiceRegistration.get(deploymentFileData.getAbsolutePath()), serviceRegistration);
+ Map tempDeviceTypeConfig = (Map)
+ deviceTypeConfigurationDataMap.get(deviceTypePluginDeployer);
+ DeviceTypeConfigIdentifier deviceTypeConfigIdentifier = tempDeviceTypeConfig.get(deploymentFileData
+ .getAbsolutePath());
+ Assert.assertEquals(deviceTypeConfigIdentifier.getDeviceType(), "android");
+ }
+}
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml
new file mode 100644
index 00000000000..21db962414d
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/android.xml
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+ en_US
+ 1.0.0
+ This End User License Agreement ("Agreement") is a legal agreement between you ("You") and WSO2,
+ Inc., regarding the enrollment of Your personal mobile device ("Device") in SoR's mobile device
+ management program, and the loading to and removal from Your Device and Your use of certain
+ applications and any associated software and user documentation, whether provided in "online" or
+ electronic format, used in connection with the operation of or provision of services to WSO2,
+ Inc., BY SELECTING "I ACCEPT" DURING INSTALLATION, YOU ARE ENROLLING YOUR DEVICE, AND THEREBY
+ AUTHORIZING SOR OR ITS AGENTS TO INSTALL, UPDATE AND REMOVE THE APPS FROM YOUR DEVICE AS DESCRIBED
+ IN THIS AGREEMENT. YOU ARE ALSO EXPLICITLY ACKNOWLEDGING AND AGREEING THAT (1) THIS IS A BINDING
+ CONTRACT AND (2) YOU HAVE READ AND AGREE TO THE TERMS OF THIS AGREEMENT.
+
+ IF YOU DO NOT ACCEPT THESE TERMS, DO NOT ENROLL YOUR DEVICE AND DO NOT PROCEED ANY FURTHER.
+
+ You agree that: (1) You understand and agree to be bound by the terms and conditions contained in
+ this Agreement, and (2) You are at least 21 years old and have the legal capacity to enter into
+ this Agreement as defined by the laws of Your jurisdiction. SoR shall have the right, without
+ prior notice, to terminate or suspend (i) this Agreement, (ii) the enrollment of Your Device, or
+ (iii) the functioning of the Apps in the event of a violation of this Agreement or the cessation
+ of Your relationship with SoR (including termination of Your employment if You are an employee or
+ expiration or termination of Your applicable franchise or supply agreement if You are a franchisee
+ of or supplier to the WSO2 WSO2, Inc., system). SoR expressly reserves all rights not expressly
+ granted herein.
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+ jdbc/MobileAndroidDM_DS
+
+
+
+ DEVICE_ID
+
+ FCM_TOKEN
+ DEVICE_INFO
+ IMEI
+ IMSI
+ OS_VERSION
+ DEVICE_MODEL
+ VENDOR
+ LATITUDE
+ LONGITUDE
+ SERIAL
+ MAC_ADDRESS
+ DEVICE_NAME
+ OS_BUILD_DATE
+
+
+
+
+
+
+
+ Ring
+ Ring the device
+
+
+
+
+ Device Lock
+ Lock the device
+
+
+
+
+ Location
+ Request coordinates of device location
+
+
+
+
+ Clear Password
+ Clear current password
+
+
+
+
+ Reboot
+ Reboot the device
+
+
+
+
+ Upgrade Firmware
+ Upgrade Firmware
+
+
+
+
+ Mute
+ Enable mute in the device
+
+
+
+
+ Message
+ Send message
+
+
+
+
+ Change Lock-code
+ Change current lock code
+
+
+
+
+ Enterprise Wipe
+ Remove enterprise applications
+
+
+
+
+ Wipe Data
+ Factory reset the device
+
+
+
+
+ Wifi
+ Setting up wifi configuration
+
+
+ Camera
+ Enable or disable camera
+
+
+ Email
+ Configure email settings
+
+
+ Device info
+ Request device information
+
+
+ Application List
+ Request list of current installed applications
+
+
+ Install App
+ Install App
+
+
+ Uninstall App
+ Uninstall App
+
+
+ Blacklist app
+ Blacklist applications
+
+
+ Encrypt Storage
+ Encrypt storage
+
+
+ Password Policy
+ Set passcode policy
+
+
+ Configure VPN
+ Configure VPN settings
+
+
+ Disallow user to change volume
+ Allow or disallow user to change volume"
+
+
+ Disallow bluetooth configuration
+ Allow or disallow bluetooth configuration
+
+
+ Disallow user to change cell broadcast configurations
+ Allow or disallow user to change cell broadcast configurations
+
+
+ Disallow user to change user credentials
+ Allow or disallow user to change user credentials
+
+
+ Disallow user to change mobile networks configurations
+ Allow or disallow user to change mobile networks configurations
+
+
+ Disallow user to change tethering configurations
+ Allow or disallow user to change tethering configurations
+
+
+ Disallow user to change VPN configurations
+ Allow or disallow user to change VPN configurations
+
+
+ Disallow user to change WIFI configurations
+ Allow or disallow user to change WIFI configurations
+
+
+ Disallow user to change app control
+ Allow or disallow user to change app control
+
+
+ Disallow window creation
+ Allow or disallow window creation
+
+
+ Disallow user to change app control configurations
+ Allow or disallow user to change app control configurations
+
+
+ Disallow cross profile copy paste
+ Allow or disallow cross profile copy paste
+
+
+ Disallow debugging features
+ Allow or disallow debugging features
+
+
+ Disallow factory reset
+ Allow or disallow factory reset
+
+
+ Disallow add user
+ Allow or disallow add user
+
+
+ Disallow install apps
+ Allow or disallow install apps
+
+
+ Disallow install unknown sources
+ Allow or disallow install unknown sources
+
+
+ Disallow modify account
+ Allow or disallow modify account
+
+
+ Disallow mount physical media
+ Allow or disallow mount physical media
+
+
+ Disallow network reset
+ Allow or disallow network reset
+
+
+ Disallow outgoing beam
+ Allow or disallow outgoing beam
+
+
+ Disallow outgoing calls
+ Allow or disallow outgoing calls
+
+
+ Disallow remove users
+ Allow or disallow remove users
+
+
+ Disallow safe boot
+ Allow or disallow safe boot
+
+
+ Disallow share location
+ Allow or disallow share location
+
+
+ Disallow sms
+ Allow or disallow sms
+
+
+ Disallow uninstall app
+ Allow or disallow uninstall app
+
+
+ Disallow unmute mic
+ Allow or disallow unmute mic
+
+
+ Disallow usb file transfer
+ Allow or disallow usb file transfer
+
+
+ Disallow parent profile app linking
+ Allow or disallow parent profile app linking
+
+
+ Disallow ensure verify apps
+ Allow or disallow ensure verify apps
+
+
+ Disallow auto timing
+ Allow or disallow auto timing
+
+
+ Remove device owner
+ Remove device owner
+
+
+ Fetch device logcat
+ Fetch device logcat
+
+
+ Unlock the device
+ Unlock the device
+
+
+
+ true
+ 60000
+
+
+ DEVICE_INFO
+ 1
+
+
+ APPLICATION_LIST
+ 5
+
+
+ DEVICE_LOCATION
+ 1
+
+
+
+
+
+
+ DEVICE_INFO
+ APPLICATION_LIST
+ DEVICE_LOCATION
+
+
+
+
+ true
+ 300
+ 900
+ 600
+
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties
new file mode 100644
index 00000000000..e415fd607d3
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/log4j.properties
@@ -0,0 +1,34 @@
+#
+# Copyright (c) 2016, 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/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml
new file mode 100644
index 00000000000..f24ee57be23
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/repository/conf/carbon.xml
@@ -0,0 +1,656 @@
+
+
+
+
+
+
+
+
+ ${product.name}
+
+
+ ${product.key}
+
+
+ ${product.version}
+
+
+
+
+
+
+
+
+ local:/${carbon.context}/services/
+
+
+
+
+
+
+ ${default.server.role}
+
+
+
+
+
+
+ org.wso2.carbon
+
+
+ /
+
+
+
+
+
+
+
+
+ 15
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ 9999
+
+ 11111
+
+
+
+
+
+ 10389
+
+ 8000
+
+
+
+
+
+ 10500
+
+
+
+
+
+
+ org.wso2.carbon.tomcat.jndi.CarbonJavaURLContextFactory
+
+
+
+
+
+
+
+
+ java
+
+
+
+
+
+
+
+
+
+ false
+
+
+ false
+
+
+ 600
+
+
+
+ false
+
+
+
+
+
+
+
+ 30
+
+
+
+
+
+
+
+
+ 15
+
+
+
+
+
+ ${carbon.home}/repository/deployment/server/
+
+
+ 15
+
+
+ ${carbon.home}/repository/conf/axis2/axis2.xml
+
+
+ 30000
+
+
+ ${carbon.home}/repository/deployment/client/
+
+ ${carbon.home}/repository/conf/axis2/axis2_client.xml
+
+ true
+
+
+
+
+
+
+
+
+
+ admin
+ Default Administrator Role
+
+
+ user
+ Default User Role
+
+
+
+
+
+
+
+
+
+
+
+ ${carbon.home}/repository/resources/security/wso2carbon.jks
+
+ JKS
+
+ wso2carbon
+
+ wso2carbon
+
+ wso2carbon
+
+
+
+
+
+ ${carbon.home}/repository/resources/security/client-truststore.jks
+
+ JKS
+
+ wso2carbon
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UserManager
+
+
+ false
+
+
+
+
+
+
+ ${carbon.home}/tmp/work
+
+
+
+
+
+ true
+
+
+ 10
+
+
+ 30
+
+
+
+
+
+ 100
+
+
+
+ keystore
+ certificate
+ *
+
+ org.wso2.carbon.ui.transports.fileupload.AnyFileUploadExecutor
+
+
+
+
+ jarZip
+
+ org.wso2.carbon.ui.transports.fileupload.JarZipUploadExecutor
+
+
+
+ dbs
+
+ org.wso2.carbon.ui.transports.fileupload.DBSFileUploadExecutor
+
+
+
+ tools
+
+ org.wso2.carbon.ui.transports.fileupload.ToolsFileUploadExecutor
+
+
+
+ toolsAny
+
+ org.wso2.carbon.ui.transports.fileupload.ToolsAnyFileUploadExecutor
+
+
+
+
+
+
+ - info
+ org.wso2.carbon.core.transports.util.InfoProcessor
+
+
+ - wsdl
+ org.wso2.carbon.core.transports.util.Wsdl11Processor
+
+
+ - wsdl2
+ org.wso2.carbon.core.transports.util.Wsdl20Processor
+
+
+ - xsd
+ org.wso2.carbon.core.transports.util.XsdProcessor
+
+
+
+
+
+ false
+ false
+ true
+ svn
+ http://svnrepo.example.com/repos/
+ username
+ password
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${require.carbon.servlet}
+
+
+
+
+ true
+
+
+
+
+
+
+ default repository
+ ${p2.repo.url}
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+ true
+
+
diff --git a/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml
new file mode 100644
index 00000000000..d0ea4e8805f
--- /dev/null
+++ b/components/device-mgt-extensions/org.wso2.carbon.device.mgt.extensions.device.type.deployer/src/test/resources/testng.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/components/test-coverage/pom.xml b/components/test-coverage/pom.xml
index 3a63e1a0876..ac05f968d39 100644
--- a/components/test-coverage/pom.xml
+++ b/components/test-coverage/pom.xml
@@ -192,7 +192,9 @@
-
+
+
+