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
+
+
+
+