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 c770987e54..eef2c90d5c 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 76f5646e97..730d66c04b 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/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/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..0854202a07 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; @@ -36,8 +38,11 @@ import org.wso2.carbon.device.mgt.extensions.utils.Utils; import org.wso2.carbon.registry.core.exceptions.RegistryException; import org.xml.sax.SAXException; +import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; +import javax.xml.bind.Unmarshaller; import javax.xml.parsers.ParserConfigurationException; +import javax.xml.soap.Node; import java.io.File; import java.io.IOException; import java.net.URL; @@ -52,6 +57,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 +89,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}) 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/resources/android.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/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/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/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/testng.xml b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/testng.xml index bad5807be5..7bc3f5284b 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,7 @@ +