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 c028609c86..4cb30e4de5 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 @@ -86,12 +86,36 @@ commons-dbcp.wso2 commons-dbcp 1.4.0.wso2v1 + test commons-pool.wso2 commons-pool 1.5.6.wso2v1 + + org.wso2.carbon.governance + org.wso2.carbon.governance.registry.extensions + 4.7.8 + test + + + org.slf4j + jcl-over-slf4j + + + + + org.wso2.carbon.registry + org.wso2.carbon.registry.indexing + test + + + org.slf4j + jcl-over-slf4j + + + 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 f261f98374..ea60f2b5e3 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 @@ -23,7 +23,11 @@ import org.mockito.Mockito; import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; +import org.wso2.carbon.CarbonConstants; import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.context.RegistryType; +import org.wso2.carbon.context.internal.OSGiDataHolder; import org.wso2.carbon.device.mgt.common.DeviceManagementException; import org.wso2.carbon.device.mgt.common.DeviceStatusTaskPluginConfig; import org.wso2.carbon.device.mgt.common.InitialOperationConfig; @@ -31,15 +35,20 @@ import org.wso2.carbon.device.mgt.common.OperationMonitoringTaskConfig; import org.wso2.carbon.device.mgt.common.ProvisioningConfig; 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.license.mgt.LicenseManagementException; import org.wso2.carbon.device.mgt.common.push.notification.PushNotificationConfig; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceStatusTaskConfiguration; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.PolicyMonitoring; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.PullNotificationSubscriberConfig; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.PushNotificationProvider; -import org.wso2.carbon.device.mgt.extensions.device.type.template.config.TaskConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.*; import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; +import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; import org.wso2.carbon.device.mgt.extensions.utils.Utils; +import org.wso2.carbon.governance.api.util.GovernanceArtifactConfiguration; +import org.wso2.carbon.governance.api.util.GovernanceUtils; +import org.wso2.carbon.registry.core.Registry; +import org.wso2.carbon.registry.core.exceptions.RegistryException; +import org.wso2.carbon.registry.core.service.RegistryService; +import org.wso2.carbon.registry.core.session.UserRegistry; +import org.wso2.carbon.utils.FileUtil; import org.xml.sax.SAXException; import javax.xml.bind.JAXBException; @@ -54,6 +63,7 @@ import java.util.ArrayList; import java.util.List; import static org.powermock.api.mockito.PowerMockito.when; +import static org.wso2.carbon.governance.api.util.GovernanceUtils.getGovernanceArtifactConfiguration; /** * This is the test class for {@link DeviceTypeManagerService} @@ -63,6 +73,8 @@ public class DeviceTypeManagerServiceTest { private DeviceTypeConfiguration androidDeviceConfiguration; private DeviceTypeManagerService rasberrypiDeviceTypeManagerService; private DeviceTypeConfiguration rasberrypiDeviceConfiguration; + private DeviceTypeManagerService arduinoDeviceTypeManagerService; + private DeviceTypeConfiguration arduinoDeviceTypeConfiguration; private Method setProvisioningConfig; private Method setOperationMonitoringConfig; private Method setDeviceStatusTaskPluginConfig; @@ -73,7 +85,9 @@ public class DeviceTypeManagerServiceTest { @BeforeTest public void setup() throws NoSuchMethodException, SAXException, JAXBException, ParserConfigurationException, DeviceTypeConfigurationException, IOException, NoSuchFieldException, IllegalAccessException, - DeviceManagementException { + DeviceManagementException, RegistryException { + ClassLoader classLoader = getClass().getClassLoader(); + File carbonHome = new File(classLoader.getResource("carbon-home").getFile()); setProvisioningConfig = DeviceTypeManagerService.class .getDeclaredMethod("setProvisioningConfig", String.class, DeviceTypeConfiguration.class); setProvisioningConfig.setAccessible(true); @@ -117,7 +131,6 @@ public class DeviceTypeManagerServiceTest { operationMonitoringConfigs.set(rasberrypiDeviceTypeManagerService, new OperationMonitoringTaskConfig()); initialOperationConfig.set(rasberrypiDeviceTypeManagerService, new InitialOperationConfig()); - ClassLoader classLoader = getClass().getClassLoader(); URL resourceUrl = classLoader.getResource("android.xml"); File androidConfiguration = null; @@ -144,13 +157,15 @@ public class DeviceTypeManagerServiceTest { configurationEntries.add(configurationEntry); platformConfiguration.setConfiguration(configurationEntries); + if (androidConfiguration != null) { // This is needed for DeviceTypeManager Initialization - System.setProperty("carbon.home", androidConfiguration.getAbsolutePath()); + System.setProperty("carbon.home", carbonHome.getAbsolutePath()); } DeviceTypeManager deviceTypeManager = Mockito.mock(DeviceTypeManager.class); when(deviceTypeManager.getConfiguration()).thenReturn(platformConfiguration); deviceManager.set(androidDeviceTypeManagerService, deviceTypeManager); + setupArduinoDeviceType(); } @Test(description = "This test cases tests the retrieval of provisioning config after providing the configurations " @@ -273,4 +288,60 @@ public class DeviceTypeManagerServiceTest { rasberrypiDeviceConfiguration.getPullNotificationSubscriberConfig() != null); } + + @Test (description = "This test case tests the addition and retrieval of the license") + public void testGetLicense () throws LicenseManagementException { + License license = arduinoDeviceTypeManagerService.getDeviceManager().getLicense("en_Us"); + Assert.assertEquals(license.getText(), arduinoDeviceTypeConfiguration.getLicense().getText(), + "The retrieved" + " license is different from added license"); + license.setLanguage("eu"); + license.setText("This is a EU License"); + arduinoDeviceTypeManagerService.getDeviceManager().addLicense(license); + License newLicense = arduinoDeviceTypeManagerService.getDeviceManager().getLicense("eu"); + Assert.assertEquals(newLicense.getText(), license.getText(), + "The retrieved license is different from added license"); + Assert.assertNull(arduinoDeviceTypeManagerService.getDeviceManager().getLicense("tn"), + "License is retrieved for a non-existing language code"); + } + + /** + * Setting the Arduino Device Type + * @throws RegistryException Registry Exception + * @throws IOException IO Exception + * @throws SAXException SAX Exception + * @throws ParserConfigurationException Parser Configuration Exception + * @throws DeviceTypeConfigurationException Device Type Configuration Exception + * @throws JAXBException JAXB Exception + */ + private void setupArduinoDeviceType() + throws RegistryException, IOException, SAXException, ParserConfigurationException, + DeviceTypeConfigurationException, JAXBException { + PrivilegedCarbonContext.getThreadLocalCarbonContext() + .setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME); + PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(MultitenantConstants.SUPER_TENANT_ID); + RegistryService registryService = Utils.getRegistryService(); + OSGiDataHolder.getInstance().setRegistryService(registryService); + UserRegistry systemRegistry = + registryService.getRegistry(CarbonConstants.REGISTRY_SYSTEM_USERNAME); + ClassLoader classLoader = getClass().getClassLoader(); + URL resourceUrl = classLoader.getResource("license.rxt"); + String rxt = FileUtil.readFileToString(resourceUrl.getFile()); + GovernanceArtifactConfiguration configuration = getGovernanceArtifactConfiguration(rxt); + List configurations = new ArrayList<>(); + configurations.add(configuration); + GovernanceUtils.loadGovernanceArtifacts(systemRegistry, configurations); + Registry governanceSystemRegistry = registryService.getConfigSystemRegistry(); + DeviceTypeExtensionDataHolder.getInstance().setRegistryService(registryService); + + PrivilegedCarbonContext.getThreadLocalCarbonContext() + .setRegistry(RegistryType.SYSTEM_CONFIGURATION, governanceSystemRegistry); + resourceUrl = classLoader.getResource("arduino.xml"); + File raspberrypiConfiguration = null; + if (resourceUrl != null) { + raspberrypiConfiguration = new File(resourceUrl.getFile()); + } + arduinoDeviceTypeConfiguration = Utils.getDeviceTypeConfiguration(raspberrypiConfiguration); + arduinoDeviceTypeManagerService = new DeviceTypeManagerService(new + DeviceTypeConfigIdentifier("arduino", "carbon.super"), arduinoDeviceTypeConfiguration); + } } diff --git a/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceTest.java b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceTest.java new file mode 100644 index 0000000000..20f41a7698 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/java/org/wso2/carbon/device/mgt/extensions/device/type/template/HttpDeviceTypeManagerServiceTest.java @@ -0,0 +1,65 @@ +package org.wso2.carbon.device.mgt.extensions.device.type.template; + +import org.testng.Assert; +import org.testng.annotations.BeforeTest; +import org.wso2.carbon.CarbonConstants; +import org.wso2.carbon.base.MultitenantConstants; +import org.wso2.carbon.context.PrivilegedCarbonContext; +import org.wso2.carbon.context.RegistryType; +import org.wso2.carbon.context.internal.OSGiDataHolder; +import org.wso2.carbon.device.mgt.common.configuration.mgt.PlatformConfiguration; +import org.wso2.carbon.device.mgt.common.type.mgt.DeviceTypeMetaDefinition; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.DeviceTypeConfiguration; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Feature; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.Operation; +import org.wso2.carbon.device.mgt.extensions.device.type.template.config.exception.DeviceTypeConfigurationException; +import org.wso2.carbon.device.mgt.extensions.internal.DeviceTypeExtensionDataHolder; +import org.wso2.carbon.device.mgt.extensions.license.mgt.registry.RegistryBasedLicenseManager; +import org.wso2.carbon.device.mgt.extensions.utils.Utils; +import org.wso2.carbon.governance.api.util.GovernanceArtifactConfiguration; +import org.wso2.carbon.governance.api.util.GovernanceUtils; +import org.wso2.carbon.registry.core.Registry; +import org.wso2.carbon.registry.core.exceptions.RegistryException; +import org.wso2.carbon.registry.core.service.RegistryService; +import org.wso2.carbon.registry.core.session.UserRegistry; +import org.wso2.carbon.utils.FileUtil; +import org.xml.sax.SAXException; + +import javax.xml.bind.JAXBException; +import javax.xml.parsers.ParserConfigurationException; +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; + +import static org.wso2.carbon.governance.api.util.GovernanceUtils.getGovernanceArtifactConfiguration; + +/** + * This test case contains the tests for {@link HTTPDeviceTypeManagerService} + */ +public class HttpDeviceTypeManagerServiceTest { + + @BeforeTest + public void setup() throws RegistryException, IOException, SAXException, ParserConfigurationException, + DeviceTypeConfigurationException, JAXBException { + + + } + + private DeviceTypeMetaDefinition sampleDeviceTypeMetaDefinition() { + DeviceTypeMetaDefinition deviceTypeMetaDefinition = new DeviceTypeMetaDefinition(); + Feature feature = new Feature(); + Operation operation = new Operation(); + operation.setContext("/test"); + operation.setMethod("Get"); + operation.setType("COMMAND"); + feature.setCode("TEST"); + feature.setDescription("This is a test feature"); + feature.setName("TEST"); + deviceTypeMetaDefinition.setClaimable(true); + deviceTypeMetaDefinition.setDescription("This is a new device type"); +// deviceTypeMetaDefinition.setInitialOperationConfig(); + return deviceTypeMetaDefinition; + } +} 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/arduino.xml new file mode 100644 index 0000000000..c651c04e7f --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/arduino.xml @@ -0,0 +1,43 @@ + + + + + + + Control Bulb + Control Bulb on Arduino Uno + + + state + + + + + + + true + + + + en_US + 1.0.0 + This is license text + + + \ No newline at end of file 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/license.rxt new file mode 100644 index 0000000000..3fa9d8b7c9 --- /dev/null +++ b/components/device-mgt/org.wso2.carbon.device.mgt.extensions/src/test/resources/license.rxt @@ -0,0 +1,41 @@ + + + /device-mgt/license/@{overview_name}/@{overview_language}/@{overview_version} + overview_name + + + + + + + + + + + + + + + + + Name + + + Language + + + Version + + + Validity From + + + Validity To + + + License + +
+
+