diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml index a5e7fde91b..3df63be036 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.core/pom.xml @@ -229,10 +229,7 @@ org.powermock powermock-module-testng - - - org.powermock - powermock-api-mockito + test org.wso2.carbon diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml index 112aa98d8c..9341a1aa60 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/pom.xml @@ -96,6 +96,12 @@ org.wso2.carbon.governance org.wso2.carbon.governance.registry.extensions test + + + jaxen + jaxen + + org.wso2.carbon.registry @@ -106,6 +112,14 @@ org.slf4j jcl-over-slf4j + + org.slf4j + slf4j-api + + + org.slf4j + log4j-over-slf4j + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java index 1f0915bd90..1f1ee0d868 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManager.java @@ -130,6 +130,17 @@ public class DeviceTypeManager implements DeviceManager { //Check whether device dao definition exist. String tableName = deviceTypeConfiguration.getDeviceDetails().getTableId(); if (tableName != null && !tableName.isEmpty()) { + DataSource dataSource = deviceTypeConfiguration.getDataSource(); + if (dataSource == null) { + throw new DeviceTypeDeployerPayloadException("Could not find the datasource related with the " + + "table id " + tableName + " for the device type " + deviceType); + } + TableConfig tableConfig = dataSource.getTableConfig(); + + if (tableConfig == null) { + throw new DeviceTypeDeployerPayloadException("Could not find the table config with the " + + "table id " + tableName + " for the device type " + deviceType); + } List tables = deviceTypeConfiguration.getDataSource().getTableConfig().getTable(); Table deviceDefinitionTable = null; for (Table table : tables) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java index d8f77a64a6..ab11f39de0 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinition.java @@ -41,17 +41,26 @@ public class DeviceDAODefinition { public DeviceDAODefinition(Table table) { + if (table == null) { + throw new DeviceTypeDeployerPayloadException("Table is null. Cannot create DeviceDAODefinition"); + } deviceTableName = table.getName(); primarykey = table.getPrimaryKey(); - List attributes = table.getAttributes().getAttribute(); + if (deviceTableName == null || deviceTableName.isEmpty()) { throw new DeviceTypeDeployerPayloadException("Missing deviceTableName"); } if (primarykey == null || primarykey.isEmpty()) { - throw new DeviceTypeDeployerPayloadException("Missing primaryKey "); + throw new DeviceTypeDeployerPayloadException("Missing primaryKey for the table " + deviceTableName); } + if (table.getAttributes() == null) { + throw new DeviceTypeDeployerPayloadException("Table " + deviceTableName + " attributes are not specified. " + + "Cannot created DeviceDAODefinition"); + } + + List attributes = table.getAttributes().getAttribute(); if (attributes == null || attributes.size() == 0) { throw new DeviceTypeDeployerPayloadException("Missing Attributes "); } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java index b25547950e..87f862277c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeDeployerPayloadException.java @@ -26,20 +26,9 @@ public class DeviceTypeDeployerPayloadException extends RuntimeException { super(msg, nestedEx); } - public DeviceTypeDeployerPayloadException(String message, Throwable cause) { - super(message, cause); - } - public DeviceTypeDeployerPayloadException(String msg) { super(msg); } - public DeviceTypeDeployerPayloadException() { - super(); - } - - public DeviceTypeDeployerPayloadException(Throwable cause) { - super(cause); - } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java index b1548eb65f..1919e88f42 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/main/java/org/wso2/carbon/device/mgt/extensions/device/type/template/exception/DeviceTypeMgtPluginException.java @@ -26,20 +26,4 @@ public class DeviceTypeMgtPluginException extends Exception{ super(msg, nestedEx); } - public DeviceTypeMgtPluginException(String message, Throwable cause) { - super(message, cause); - } - - public DeviceTypeMgtPluginException(String msg) { - super(msg); - } - - public DeviceTypeMgtPluginException() { - super(); - } - - public DeviceTypeMgtPluginException(Throwable cause) { - super(cause); - } - } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java index 8d69cac776..3ec819a10b 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/BaseExtensionsTest.java @@ -51,7 +51,7 @@ public class BaseExtensionsTest { @BeforeSuite public void init() throws RegistryException, IOException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("license.rxt"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "license.rxt"); String rxt = null; File carbonHome; if (resourceUrl != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java new file mode 100644 index 0000000000..d2d9060d12 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerNegativeTest.java @@ -0,0 +1,124 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.extensions.device.type.template; + +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DataSource; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; +import org.wso2.carbon.device.mgt.extensions.utils.Utils; +import org.xml.sax.SAXException; + +import javax.xml.bind.JAXBException; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; +import java.io.IOException; +import java.net.URL; + +/** + * This class tests the negative scenarios in {@link DeviceTypeManager} initialization; + */ +public class DeviceTypeManagerNegativeTest { + private DeviceTypeConfiguration defectiveDeviceTypeConfiguration1; + private DeviceTypeConfiguration defectiveDeviceTypeConfiguration2; + private DeviceTypeConfiguration androidDeviceTypeConfiguration; + private DeviceTypeConfigIdentifier deviceTypeConfigIdentifier; + private final String DEFECTIVE_DEVICE_TYPE = "defectiveDeviceType"; + private final String TABLE_NAME = "DEFECTIVE_DEVICE"; + + @BeforeTest + public void setup() + throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, + IOException { + ClassLoader classLoader = getClass().getClassLoader(); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype.xml"); + File configurationFile = null; + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + defectiveDeviceTypeConfiguration1 = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + deviceTypeConfigIdentifier = new DeviceTypeConfigIdentifier(DEFECTIVE_DEVICE_TYPE, + MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "defective-devicetype2.xml"); + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + defectiveDeviceTypeConfiguration2 = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); + if (resourceUrl != null) { + configurationFile = new File(resourceUrl.getFile()); + } + if (configurationFile != null) { + androidDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(configurationFile.getAbsoluteFile()); + } + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "datasource but by specifying the table id", expectedExceptions = { DeviceTypeDeployerPayloadException + .class}, expectedExceptionsMessageRegExp = "Could not find the datasource related with the table id " + + TABLE_NAME + " for the device type " + DEFECTIVE_DEVICE_TYPE) + public void testWithoutDataSource() { + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration1); + + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "table config",expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Could not find the table config with the table id " + TABLE_NAME + + " for the device type " + DEFECTIVE_DEVICE_TYPE, + dependsOnMethods = {"testWithoutDataSource"}) + public void testWithoutTableConfig() { + DataSource dataSource = new DataSource(); + defectiveDeviceTypeConfiguration1.setDataSource(dataSource); + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration1); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without defining the " + + "correct table as per the device details", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Could not find definition for table: " + TABLE_NAME) + public void testWithoutTable() { + new DeviceTypeManager(deviceTypeConfigIdentifier, defectiveDeviceTypeConfiguration2); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without having the " + + "actual datasource", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error while looking up the data source.*") + public void testWithoutProperDataSource() { + new DeviceTypeManager(deviceTypeConfigIdentifier, androidDeviceTypeConfiguration); + } + + @Test(description = "This test case tests the behaviour of the DeviceTypeManager creation without having the " + + "actual datasource", expectedExceptions = {DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Error while looking up the data source.*") + public void testWithSetupParameters() { + System.setProperty("setup", "true"); + new DeviceTypeManager(deviceTypeConfigIdentifier, androidDeviceTypeConfiguration); + + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java index 286f21c931..f90d33bd34 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerServiceTest.java @@ -124,7 +124,7 @@ public class DeviceTypeManagerServiceTest { operationMonitoringConfigs.set(rasberrypiDeviceTypeManagerService, new OperationMonitoringTaskConfig()); initialOperationConfig.set(rasberrypiDeviceTypeManagerService, new InitialOperationConfig()); - URL resourceUrl = classLoader.getResource("android.xml"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); File androidConfiguration = null; if (resourceUrl != null) { @@ -132,7 +132,7 @@ public class DeviceTypeManagerServiceTest { } androidDeviceConfiguration = Utils.getDeviceTypeConfiguration(androidConfiguration); - resourceUrl = classLoader.getResource("raspberrypi.xml"); + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "raspberrypi.xml"); File raspberrypiConfiguration = null; if (resourceUrl != null) { raspberrypiConfiguration = new File(resourceUrl.getFile()); @@ -304,7 +304,7 @@ public class DeviceTypeManagerServiceTest { throws RegistryException, IOException, SAXException, ParserConfigurationException, DeviceTypeConfigurationException, JAXBException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("arduino.xml"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "arduino.xml"); File arduinoConfiguration = null; if (resourceUrl != null) { arduinoConfiguration = new File(resourceUrl.getFile()); diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java index afdf2d560f..27ebd3f827 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/DeviceTypeManagerTest.java @@ -71,12 +71,13 @@ public class DeviceTypeManagerTest { private Field deviceTypePluginDAOField; private Field deviceTypeDAOHandlerField; private String[] customDeviceTypeProperties = {"custom_property", "custom_property2"}; + private final String SQL_FOLDER = "sql-files" + File.separator; @BeforeTest(description = "Mocking the classes for testing") public void setup() throws NoSuchFieldException, IllegalAccessException, IOException, SQLException, SAXException, ParserConfigurationException, DeviceTypeConfigurationException, JAXBException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("android_h2.sql"); + URL resourceUrl = classLoader.getResource(SQL_FOLDER + "android_h2.sql"); androidDeviceType = "android"; File androidDatabaseScript = null; javax.sql.DataSource dataSource = null; @@ -85,7 +86,7 @@ public class DeviceTypeManagerTest { if (resourceUrl != null) { androidDatabaseScript = new File(resourceUrl.getFile()); } - resourceUrl = classLoader.getResource("android.xml"); + resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android.xml"); if (resourceUrl != null) { androidConfiguration = new File(resourceUrl.getFile()); @@ -295,7 +296,7 @@ public class DeviceTypeManagerTest { private DeviceTypePluginDAOManager createPluginBasedDeviceTypeManager() throws IOException, SQLException, NoSuchFieldException, IllegalAccessException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("h2.sql"); + URL resourceUrl = classLoader.getResource(SQL_FOLDER + "h2.sql"); File cdmDataScript = null; javax.sql.DataSource dataSource = null; if (resourceUrl != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java index 14e87a6703..7c4ff9ec2c 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest.java @@ -24,6 +24,8 @@ import org.testng.annotations.Test; import org.wso2.carbon.device.mgt.common.Device; import org.wso2.carbon.device.mgt.common.DeviceIdentifier; import org.wso2.carbon.device.mgt.common.DeviceManagementException; +import org.wso2.carbon.device.mgt.common.configuration.mgt.ConfigurationEntry; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.common.license.mgt.License; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; import org.wso2.carbon.device.mgt.common.spi.DeviceManagementService; @@ -52,6 +54,7 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { private HTTPDeviceTypeManagerService httpDeviceTypeManagerService; private DeviceTypeGeneratorServiceImpl deviceTypeGeneratorService; private String androidSenseDeviceType = "androidsense"; + private DeviceManagementService generatedDeviceManagementService; @BeforeTest public void setup() throws RegistryException, IOException, SAXException, ParserConfigurationException, @@ -83,12 +86,37 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { @Test(description = "This test case tests the populate device management service method") public void testPopulateDeviceManagementService() { String sampleDeviceType = "sample"; - DeviceManagementService deviceManagementService = deviceTypeGeneratorService + generatedDeviceManagementService = deviceTypeGeneratorService .populateDeviceManagementService(sampleDeviceType, deviceTypeMetaDefinition); - Assert.assertEquals(deviceManagementService.getType(), sampleDeviceType, + Assert.assertEquals(generatedDeviceManagementService.getType(), sampleDeviceType, "DeviceTypeGeneration for the " + "sample device type failed"); } + @Test(description = "This test case tests the get configuration of the populated device management service though" + + " DeviceTypeGeneratorService", dependsOnMethods = {"testPopulateDeviceManagementService"}) + public void testGetConfiguration() throws DeviceManagementException, ClassNotFoundException, JAXBException { + PlatformConfiguration platformConfiguration = generatedDeviceManagementService.getDeviceManager() + .getConfiguration(); + Assert.assertNotNull(platformConfiguration, + "Default platform configuration is not added to sample device " + "type from the file system"); + + List configurationEntries = platformConfiguration.getConfiguration(); + Assert.assertNotNull(configurationEntries, + "Platform Configuration entries are not parsed and saved " + "correctly for device type sample"); + Assert.assertEquals(configurationEntries.size(), 1, + "Platform configuration is not saved correctly for " + "device type sample"); + + ConfigurationEntry configurationEntry = configurationEntries.get(0); + + Assert.assertEquals(configurationEntry.getName(), "test", + "Platform Configuration for device type " + "sample is not saved correctly"); + + String contentType = configurationEntry.getContentType(); + Assert.assertEquals(contentType, "String", + "Content type added in default platform configuration is different from the retrieved value"); + + } + @Test(description = "This test case tests the negative scenarios when saving the platform configurations", expectedExceptions = {DeviceManagementException.class}) @@ -126,7 +154,7 @@ public class HttpDeviceTypeManagerServiceAndDeviceTypeGeneratorServceTest { throws SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, IOException { ClassLoader classLoader = getClass().getClassLoader(); - URL resourceUrl = classLoader.getResource("android_sense.xml"); + URL resourceUrl = classLoader.getResource(Utils.DEVICE_TYPE_FOLDER + "android_sense.xml"); File androidSenseConfiguration = null; if (resourceUrl != null) { diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java new file mode 100644 index 0000000000..a96fb0d733 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/dao/DeviceDAODefinitionNegativeTest.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved. + * + * WSO2 Inc. licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.wso2.carbon.device.mgt.extensions.device.type.template.dao; + +import org.testng.annotations.Test; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Table; +import org.wso2.carbon.device.mgt.extensions.device.type.template.exception.DeviceTypeDeployerPayloadException; + +/** + * This class tests the negative scenarios related with {@link DeviceDAODefinition} + */ +public class DeviceDAODefinitionNegativeTest { + private final String DEVICE_TABLE_NAME = "DEVICE_TABLE"; + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the table is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Table is null. Cannot create DeviceDAODefinition") + public void testWhenTableIsNull() { + new DeviceDAODefinition(null); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the table name is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Missing deviceTableName") + public void testWhenTableNameIsNull() { + new DeviceDAODefinition(new Table()); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the primary key is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Missing primaryKey for the table " + DEVICE_TABLE_NAME) + public void testWhenPrimaryKeyIsEmpty() { + Table deviceTable = new Table(); + deviceTable.setName(DEVICE_TABLE_NAME); + deviceTable.setPrimaryKey(""); + new DeviceDAODefinition(deviceTable); + } + + @Test(description = "This test case tests the behavior of the DeviceDAODefinition when the attributes is null", + expectedExceptions = { DeviceTypeDeployerPayloadException.class}, + expectedExceptionsMessageRegExp = "Table " + DEVICE_TABLE_NAME + " attributes are not specified. " + + "Cannot created DeviceDAODefinition") + public void testWhenAttributesIsNull() { + Table deviceTable = new Table(); + deviceTable.setName(DEVICE_TABLE_NAME); + deviceTable.setPrimaryKey("primaryKey"); + new DeviceDAODefinition(deviceTable); + } +} diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java index 0e6c37cd1b..d35b8eba93 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/utils/Utils.java @@ -21,7 +21,6 @@ package org.wso2.carbon.device.mgt.extensions.utils; import org.h2.jdbcx.JdbcDataSource; import org.w3c.dom.Document; -import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceDetails; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; @@ -56,16 +55,18 @@ import java.util.List; * This class handles the test utility tasks. */ public class Utils { + public static final String DEVICE_TYPE_FOLDER = "device-types" + File.separator; /** * To get the device type configuration based on the configuration file + * * @param configurationFile Relevant configuration file of a device type * @return the DeviceTypeConfiguration object of the relevant Device Type * @throws DeviceTypeConfigurationException DeviceType Configuration Exception - * @throws IOException IO Exception - * @throws SAXException SAX Exception - * @throws ParserConfigurationException Parser Configuration Exception - * @throws JAXBException JAXB Exception + * @throws IOException IO Exception + * @throws SAXException SAX Exception + * @throws ParserConfigurationException Parser Configuration Exception + * @throws JAXBException JAXB Exception */ public static DeviceTypeConfiguration getDeviceTypeConfiguration(File configurationFile) throws DeviceTypeConfigurationException, IOException, SAXException, ParserConfigurationException, diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml new file mode 100644 index 0000000000..5c529cdfa9 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/carbon-home/repository/conf/etc/device-mgt-plugin-configs/mobile/sample-default-platform-configuration.xml @@ -0,0 +1,28 @@ + + + + + + sample + + test + String + test + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml similarity index 99% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml index 2cc394bde1..176469c329 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android.xml @@ -378,4 +378,4 @@ admin - \ No newline at end of file + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_sense.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android_sense.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_sense.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/android_sense.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/arduino.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/arduino.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/arduino.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/arduino.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml new file mode 100644 index 0000000000..965b0cebe2 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype.xml @@ -0,0 +1,45 @@ + + + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml new file mode 100644 index 0000000000..0f1baff1c3 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/defective-devicetype2.xml @@ -0,0 +1,55 @@ + + + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + + + jdbc/MobileAndroidDM_DS + + +
+
+ + + + diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/license.rxt b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/license.rxt similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/license.rxt rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/license.rxt diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/raspberrypi.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/raspberrypi.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/raspberrypi.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/raspberrypi.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sample.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/sample.xml similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sample.xml rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/device-types/sample.xml diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/android_h2.sql similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/android_h2.sql rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/android_h2.sql diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/h2.sql b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql similarity index 100% rename from components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/h2.sql rename to components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/sql-files/h2.sql diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml index bad5807be5..f37097fda1 100644 --- a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml @@ -27,6 +27,8 @@ + +