forked from community/device-mgt-core
commit
50eea6f804
@ -0,0 +1,244 @@
|
|||||||
|
/*
|
||||||
|
* 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.core.geo.service;
|
||||||
|
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
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.DeviceManagementConstants;
|
||||||
|
import org.wso2.carbon.device.mgt.common.DeviceManagementException;
|
||||||
|
import org.wso2.carbon.device.mgt.common.geo.service.Alert;
|
||||||
|
import org.wso2.carbon.device.mgt.common.geo.service.GeoFence;
|
||||||
|
import org.wso2.carbon.device.mgt.common.geo.service.GeoLocationBasedServiceException;
|
||||||
|
import org.wso2.carbon.device.mgt.core.TestDeviceManagementService;
|
||||||
|
import org.wso2.carbon.device.mgt.core.common.TestDataHolder;
|
||||||
|
import org.wso2.carbon.device.mgt.core.internal.DeviceManagementDataHolder;
|
||||||
|
import org.wso2.carbon.device.mgt.core.service.DeviceManagementProviderService;
|
||||||
|
import org.wso2.carbon.event.processor.stub.EventProcessorAdminServiceStub;
|
||||||
|
import org.wso2.carbon.identity.jwt.client.extension.exception.JWTClientException;
|
||||||
|
import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
|
||||||
|
|
||||||
|
import java.rmi.RemoteException;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class GeoLocationProviderServiceTest {
|
||||||
|
|
||||||
|
private static final String DEVICE_TYPE = "GL_TEST_TYPE";
|
||||||
|
private static final String DEVICE_ID = "GL-TEST-DEVICE-ID-1";
|
||||||
|
private static final String SAMPLE_GEO_JSON = "12121";
|
||||||
|
private static final String SAMPLE_AREA_NAME = "CUSTOM_NAME";
|
||||||
|
private static final String SAMPLE_QUERY_NAME = "QUERY_NAME";
|
||||||
|
private static final String SAMPLE_PROXIMITY_DISATANCE = "100";
|
||||||
|
private static final String SAMPLE_PROXIMITY_TIME = "50";
|
||||||
|
private static final String SAMPLE_SPEED_ALERT_VALUE = "120";
|
||||||
|
private static final String SAMPLE_STATIONARY_TIME = "1500";
|
||||||
|
private static final String SAMPLE_FLUCTUATION_RADIUS = "2000";
|
||||||
|
|
||||||
|
private EventProcessorAdminServiceStub mockEventProcessorAdminServiceStub;
|
||||||
|
private GeoLocationProviderServiceImpl geoLocationProviderServiceImpl;
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public void init() throws Exception {
|
||||||
|
initMocks();
|
||||||
|
enrollDevice();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo exit-alert with relevant details.")
|
||||||
|
public void createGeoExitAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getExitAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_EXIT);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo within-alert with relevant details.")
|
||||||
|
public void createGeoWithinAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getWithinAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_WITHIN);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo proximity-alert with relevant details.")
|
||||||
|
public void createGeoProximityAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getProximityAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_PROXIMITY);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo speed-alert with relevant details.")
|
||||||
|
public void createGeoSpeedAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getSpeedAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_SPEED);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo stationary-alert with relevant details.")
|
||||||
|
public void createGeoStationaryAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getStationaryAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_STATIONARY);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test (description = "Create a sample geo traffic-alert with relevant details.")
|
||||||
|
public void createGeoTrafficAlert() throws GeoLocationBasedServiceException {
|
||||||
|
Boolean result = geoLocationProviderServiceImpl.
|
||||||
|
createGeoAlert(getTrafficAlert(), getDeviceIdentifier(), DeviceManagementConstants.GeoServices.ALERT_TYPE_TRAFFIC);
|
||||||
|
Assert.assertEquals(result, Boolean.TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = "createGeoSpeedAlert", description = "retrieve saved geo speed-alert.")
|
||||||
|
public void getGeoSpeedAlerts() throws GeoLocationBasedServiceException {
|
||||||
|
String result;
|
||||||
|
result = geoLocationProviderServiceImpl.getSpeedAlerts(getDeviceIdentifier());
|
||||||
|
Assert.assertNotNull(result);
|
||||||
|
Assert.assertEquals(result, "{'speedLimit':" + SAMPLE_SPEED_ALERT_VALUE + "}");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = "createGeoTrafficAlert" , description = "retrieve saved geo exit-alert.")
|
||||||
|
public void getGeoTrafficAlerts() throws GeoLocationBasedServiceException {
|
||||||
|
List<GeoFence> geoFences;
|
||||||
|
geoFences = geoLocationProviderServiceImpl.getTrafficAlerts(getDeviceIdentifier());
|
||||||
|
Assert.assertNotNull(geoFences);
|
||||||
|
GeoFence geoFenceNode = geoFences.get(0);
|
||||||
|
Assert.assertEquals(geoFenceNode.getGeoJson(), "{\n" +
|
||||||
|
" \"" + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(dependsOnMethods = "createGeoStationaryAlert", description = "retrieve saved geo stationary-alert.")
|
||||||
|
public void getGeoStationaryAlerts() throws GeoLocationBasedServiceException {
|
||||||
|
List<GeoFence> geoFences;
|
||||||
|
geoFences = geoLocationProviderServiceImpl.getStationaryAlerts(getDeviceIdentifier());
|
||||||
|
Assert.assertNotNull(geoFences);
|
||||||
|
GeoFence geoFenceNode = geoFences.get(0);
|
||||||
|
Assert.assertEquals(geoFenceNode.getAreaName(), SAMPLE_AREA_NAME);
|
||||||
|
Assert.assertEquals(geoFenceNode.getQueryName(), SAMPLE_QUERY_NAME);
|
||||||
|
Assert.assertEquals(geoFenceNode.getStationaryTime(), SAMPLE_STATIONARY_TIME);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initMocks() throws JWTClientException, RemoteException {
|
||||||
|
mockEventProcessorAdminServiceStub = Mockito.mock(EventProcessorAdminServiceStub.class);
|
||||||
|
geoLocationProviderServiceImpl = Mockito.mock(GeoLocationProviderServiceImpl.class, Mockito.CALLS_REAL_METHODS);
|
||||||
|
Mockito.doReturn(mockEventProcessorAdminServiceStub).
|
||||||
|
when(geoLocationProviderServiceImpl).getEventProcessorAdminServiceStub();
|
||||||
|
Mockito.doReturn("success").
|
||||||
|
when(mockEventProcessorAdminServiceStub).validateExecutionPlan(Mockito.anyString());
|
||||||
|
}
|
||||||
|
|
||||||
|
private DeviceIdentifier getDeviceIdentifier() {
|
||||||
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier();
|
||||||
|
deviceIdentifier.setId("1234");
|
||||||
|
deviceIdentifier.setType("TEST");
|
||||||
|
return deviceIdentifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getWithinAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setCepAction("CEP_ACTION");
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \" " + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
alert.setCustomName(SAMPLE_AREA_NAME);
|
||||||
|
alert.setExecutionPlan("EXECUTION_PLAN");
|
||||||
|
alert.setQueryName(SAMPLE_QUERY_NAME);
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getExitAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setQueryName(SAMPLE_QUERY_NAME);
|
||||||
|
alert.setCustomName(SAMPLE_AREA_NAME);
|
||||||
|
alert.setStationeryTime(SAMPLE_STATIONARY_TIME);
|
||||||
|
alert.setFluctuationRadius(SAMPLE_FLUCTUATION_RADIUS);
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \" " + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
alert.setExecutionPlan("EXECUTION_PLAN");
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getProximityAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setProximityTime(SAMPLE_PROXIMITY_TIME);
|
||||||
|
alert.setProximityDistance(SAMPLE_PROXIMITY_DISATANCE);
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \" " + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getSpeedAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \"" + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\",\n" +
|
||||||
|
" \"" + DeviceManagementConstants.GeoServices.SPEED_ALERT_VALUE + "\": \"" + SAMPLE_SPEED_ALERT_VALUE + "\"\n" +
|
||||||
|
"}");
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getStationaryAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setQueryName(SAMPLE_QUERY_NAME);
|
||||||
|
alert.setCustomName(SAMPLE_AREA_NAME);
|
||||||
|
alert.setStationeryTime(SAMPLE_STATIONARY_TIME);
|
||||||
|
alert.setFluctuationRadius(SAMPLE_FLUCTUATION_RADIUS);
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \"" + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON + "\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Alert getTrafficAlert() {
|
||||||
|
Alert alert = new Alert();
|
||||||
|
alert.setDeviceId(DEVICE_ID);
|
||||||
|
alert.setParseData("{\n" +
|
||||||
|
" \"" + DeviceManagementConstants.GeoServices.GEO_FENCE_GEO_JSON +"\": \"" + SAMPLE_GEO_JSON + "\"\n" +
|
||||||
|
"}");
|
||||||
|
alert.setCustomName(SAMPLE_AREA_NAME);
|
||||||
|
alert.setExecutionPlan("EXECUTION_PLAN");
|
||||||
|
alert.setQueryName(SAMPLE_QUERY_NAME);
|
||||||
|
return alert;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void enrollDevice() throws Exception {
|
||||||
|
DeviceIdentifier deviceIdentifier = new DeviceIdentifier(DEVICE_ID, DEVICE_TYPE);
|
||||||
|
Device device = TestDataHolder.generateDummyDeviceData(deviceIdentifier);
|
||||||
|
DeviceManagementProviderService deviceMgtService = DeviceManagementDataHolder.getInstance().
|
||||||
|
getDeviceManagementProvider();
|
||||||
|
deviceMgtService.registerDeviceType(new TestDeviceManagementService(DEVICE_TYPE,
|
||||||
|
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME));
|
||||||
|
deviceMgtService.enrollDevice(device);
|
||||||
|
|
||||||
|
Device returnedDevice = deviceMgtService.getDevice(deviceIdentifier);
|
||||||
|
|
||||||
|
if (!returnedDevice.getDeviceIdentifier().equals(deviceIdentifier.getId())) {
|
||||||
|
throw new Exception("Incorrect device with ID - " + device.getDeviceIdentifier() + " returned!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2015, 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.config.exception;
|
|
||||||
|
|
||||||
public class InvalidConfigurationStateException extends RuntimeException {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -3151279411229070297L;
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(int errorCode, String message) {
|
|
||||||
super(message);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(int errorCode, String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(String msg, Exception nestedEx) {
|
|
||||||
super(msg, nestedEx);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(String message, Throwable cause) {
|
|
||||||
super(message, cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(String msg) {
|
|
||||||
super(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public InvalidConfigurationStateException(Throwable cause) {
|
|
||||||
super(cause);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* 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.utils;
|
||||||
|
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.BeforeTest;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.wso2.carbon.base.MultitenantConstants;
|
||||||
|
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.extensions.device.type.template.util.DeviceSchemaInitializer;
|
||||||
|
import org.wso2.carbon.device.mgt.extensions.license.mgt.file.FileSystemBasedLicenseManager;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a test case for testing common utilities used.
|
||||||
|
*/
|
||||||
|
public class UtilsTest {
|
||||||
|
private FileSystemBasedLicenseManager fileSystemBasedLicenseManager;
|
||||||
|
|
||||||
|
@BeforeTest
|
||||||
|
public void setup() {
|
||||||
|
fileSystemBasedLicenseManager = new FileSystemBasedLicenseManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This testcase tests the functionality of the DeviceSchemaInitializer")
|
||||||
|
public void testDeviceSchemaInitializer()
|
||||||
|
throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
|
||||||
|
String deviceType = "sample2";
|
||||||
|
String expectedDBLocation =
|
||||||
|
System.getProperty("carbon.home") + File.separator + "dbscripts" + File.separator + "cdm"
|
||||||
|
+ File.separator + "plugins" + File.separator + deviceType + File.separator + "h2.sql";
|
||||||
|
DeviceSchemaInitializer deviceSchemaInitializer = new DeviceSchemaInitializer(null, deviceType,
|
||||||
|
MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
|
||||||
|
Method getDbScriptLocation = DeviceSchemaInitializer.class
|
||||||
|
.getDeclaredMethod("getDbScriptLocation", String.class);
|
||||||
|
getDbScriptLocation.setAccessible(true);
|
||||||
|
|
||||||
|
String dbLocation = (String) getDbScriptLocation.invoke(deviceSchemaInitializer, "h2");
|
||||||
|
Assert.assertEquals(dbLocation, expectedDBLocation,
|
||||||
|
"Expected DB location for the device type is not retrieved");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This test case tests the getLicense method of the FileBasedLicenseManager")
|
||||||
|
public void testFileBasedLicenseManagerGetLicense() throws LicenseManagementException {
|
||||||
|
License fileBasedLicense = fileSystemBasedLicenseManager.getLicense("test","en_US");
|
||||||
|
Assert.assertEquals(fileBasedLicense.getText(), "This is a file based license",
|
||||||
|
"FileBased License cannot " + "be retrieved by FileBasedLicenseManager");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This test case tests the behaviour of file based license manager when the relevant license "
|
||||||
|
+ "is missing in file system", expectedExceptions = {LicenseManagementException.class},
|
||||||
|
expectedExceptionsMessageRegExp = "License file not found in the path for the device type test2")
|
||||||
|
public void testFileBasedLicenseManagerGetNonExistingLicense() throws LicenseManagementException {
|
||||||
|
fileSystemBasedLicenseManager.getLicense("test2","en_US");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "This test case make sure the File Based License cannot be added without adding directly to "
|
||||||
|
+ "file system", expectedExceptions = {UnsupportedOperationException.class},
|
||||||
|
expectedExceptionsMessageRegExp = "'addLicense' method is not supported in FileSystemBasedLicenseManager")
|
||||||
|
public void testFileBasedLicenseManagerAddLicense() throws LicenseManagementException {
|
||||||
|
fileSystemBasedLicenseManager.addLicense("test", null);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<PlatformConfiguration>
|
||||||
|
<type>sample</type>
|
||||||
|
<configuration>
|
||||||
|
<name>test</name>
|
||||||
|
<contentType>String</contentType>
|
||||||
|
<value>test</value>
|
||||||
|
</configuration>
|
||||||
|
</PlatformConfiguration>
|
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<License>
|
||||||
|
<Language>en_US</Language>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
<Text>This is a file based license</Text>
|
||||||
|
</License>
|
@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<DeviceTypeConfiguration name="defective-devicetype">
|
||||||
|
<DeviceDetails table-id="DEFECTIVE_DEVICE"/>
|
||||||
|
|
||||||
|
<Features>
|
||||||
|
<Feature code="bulb">
|
||||||
|
<Name>Control Bulb</Name>
|
||||||
|
<Description>Control Bulb on Arduino Uno</Description>
|
||||||
|
<Operation context="/arduino/device/{deviceId}/bulb" method="POST">
|
||||||
|
<QueryParameters>
|
||||||
|
<Parameter>state</Parameter>
|
||||||
|
</QueryParameters>
|
||||||
|
</Operation>
|
||||||
|
</Feature>
|
||||||
|
</Features>
|
||||||
|
|
||||||
|
<ProvisioningConfig>
|
||||||
|
<SharedWithAllTenants>true</SharedWithAllTenants>
|
||||||
|
</ProvisioningConfig>
|
||||||
|
|
||||||
|
<License>
|
||||||
|
<Language>en_US</Language>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
<Text>This is license text</Text>
|
||||||
|
</License>
|
||||||
|
|
||||||
|
</DeviceTypeConfiguration>
|
@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
~ 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.
|
||||||
|
-->
|
||||||
|
<DeviceTypeConfiguration name="defective-devicetype">
|
||||||
|
<DeviceDetails table-id="DEFECTIVE_DEVICE"/>
|
||||||
|
|
||||||
|
<Features>
|
||||||
|
<Feature code="bulb">
|
||||||
|
<Name>Control Bulb</Name>
|
||||||
|
<Description>Control Bulb on Arduino Uno</Description>
|
||||||
|
<Operation context="/arduino/device/{deviceId}/bulb" method="POST">
|
||||||
|
<QueryParameters>
|
||||||
|
<Parameter>state</Parameter>
|
||||||
|
</QueryParameters>
|
||||||
|
</Operation>
|
||||||
|
</Feature>
|
||||||
|
</Features>
|
||||||
|
|
||||||
|
<ProvisioningConfig>
|
||||||
|
<SharedWithAllTenants>true</SharedWithAllTenants>
|
||||||
|
</ProvisioningConfig>
|
||||||
|
|
||||||
|
<License>
|
||||||
|
<Language>en_US</Language>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
|
<Text>This is license text</Text>
|
||||||
|
</License>
|
||||||
|
|
||||||
|
<DataSource>
|
||||||
|
<JndiConfig>
|
||||||
|
<Name>jdbc/MobileAndroidDM_DS</Name>
|
||||||
|
</JndiConfig>
|
||||||
|
<TableConfig>
|
||||||
|
<Table name="AD_DEVICE">
|
||||||
|
</Table>
|
||||||
|
</TableConfig>
|
||||||
|
</DataSource>
|
||||||
|
|
||||||
|
</DeviceTypeConfiguration>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue