diff --git a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java
index b0b2552c..7a7442c2 100644
--- a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java
+++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java
@@ -68,32 +68,32 @@ public final class Constants {
+ " \"applicationName\":\"app_123456\",\n" + " \"isAllowedToAllDomains\":false,\n"
+ " \"tags\":[\"android\", \"device_management\"],\n" + " \"isMappingAnExistingOAuthApp\":false\n"
+ "}").toString();
- public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view " +
- "perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete " +
- "perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view " +
- "perm:admin:devices:view perm:android:blacklist-applications perm:android:change-lock-code " +
- "perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi " +
- "perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage " +
- "perm:android:enroll perm:android:enterprise-wipe perm:android:info perm:android:install-application " +
- "perm:android:location perm:android:lock-devices perm:android:logcat perm:android:manage-configuration " +
- "perm:android:mute perm:android:reboot perm:android:ring perm:android:send-notification " +
- "perm:android:set-password-policy perm:android:set-webclip perm:android:uninstall-application " +
- "perm:android:unlock-devices perm:android:update-application perm:android:upgrade-firmware " +
- "perm:android:view-configuration perm:android:wipe perm:applications:install perm:applications:uninstall " +
- "perm:device-types:features perm:device-types:types perm:devices:applications " +
- "perm:devices:compliance-data perm:devices:delete perm:devices:details perm:devices:effective-policy " +
- "perm:devices:features perm:devices:operations perm:devices:search perm:devices:update " +
- "perm:devices:view perm:get-activity perm:groups:add perm:groups:assign perm:groups:count " +
- "perm:groups:device perm:groups:devices perm:groups:devices-add perm:groups:devices-count " +
- "perm:groups:devices-remove perm:groups:groups perm:groups:groups-view perm:groups:remove " +
- "perm:groups:roles perm:groups:share perm:groups:update perm:manage-configuration " +
- "perm:notifications:mark-checked perm:notifications:view perm:policies:activate " +
- "perm:policies:changes perm:policies:deactivate perm:policies:get-details perm:policies:get-policy-details " +
- "perm:policies:manage perm:policies:priorities perm:policies:remove perm:policies:update perm:roles:add" +
- " perm:roles:add-users perm:roles:create-combined-role perm:roles:delete perm:roles:details " +
- "perm:roles:permissions perm:roles:update perm:roles:view perm:users:add perm:users:count " +
- "perm:users:credentials perm:users:delete perm:users:details perm:users:is-exist perm:users:roles " +
- "perm:users:search perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration";
+ public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view "
+ + "perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete "
+ + "perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view "
+ + "perm:admin:devices:view perm:android:applications perm:android:blacklist-applications "
+ + "perm:android:change-lock-code perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi "
+ + "perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage "
+ + "perm:android:enroll perm:android:enterprise-wipe perm:android:info perm:android:install-application "
+ + "perm:android:location perm:android:lock-devices perm:android:logcat perm:android:manage-configuration "
+ + "perm:android:mute perm:android:reboot perm:android:ring perm:android:send-notification "
+ + "perm:android:set-password-policy perm:android:set-webclip perm:android:uninstall-application "
+ + "perm:android:unlock-devices perm:android:update-application perm:android:upgrade-firmware "
+ + "perm:android:view-configuration perm:android:wipe perm:applications:install perm:applications:uninstall "
+ + "perm:device-types:features perm:device-types:types perm:devices:applications "
+ + "perm:devices:compliance-data perm:devices:delete perm:devices:details perm:devices:effective-policy "
+ + "perm:devices:features perm:devices:operations perm:devices:search perm:devices:update "
+ + "perm:devices:view perm:get-activity perm:groups:add perm:groups:assign perm:groups:count "
+ + "perm:groups:device perm:groups:devices perm:groups:devices-add perm:groups:devices-count "
+ + "perm:groups:devices-remove perm:groups:groups perm:groups:groups-view perm:groups:remove "
+ + "perm:groups:roles perm:groups:share perm:groups:update perm:manage-configuration "
+ + "perm:notifications:mark-checked perm:notifications:view perm:policies:activate "
+ + "perm:policies:changes perm:policies:deactivate perm:policies:get-details perm:policies:get-policy-details "
+ + "perm:policies:manage perm:policies:priorities perm:policies:remove perm:policies:update perm:roles:add"
+ + " perm:roles:add-users perm:roles:create-combined-role perm:roles:delete perm:roles:details "
+ + "perm:roles:permissions perm:roles:update perm:roles:view perm:users:add perm:users:count "
+ + "perm:users:credentials perm:users:delete perm:users:details perm:users:is-exist perm:users:roles "
+ + "perm:users:search perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration";
private APIApplicationRegistration() {
throw new AssertionError();
@@ -204,6 +204,7 @@ public final class Constants {
public static final String MUTE_PAYLOAD = PAYLOAD_COMMON;
public static final String INSTALL_APPS_ENDPOINT = "install-application";
+ public static final String UPDATE_APPS_ENDPOINT = "update-application";
public static final String INSTALL_APPS_PAYLOAD = "{\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n"
+ " ],\n" + " \"operation\": {\n" + " \"appIdentifier\": \"string\",\n"
+ " \"type\": \"string\",\n" + " \"url\": \"string\"\n" + " }\n" + "}";
@@ -211,10 +212,16 @@ public final class Constants {
public static final String UNINSTALL_APPS_ENDPOINT = "uninstall-application";
public static final String UNINSTALL_APPS_PAYLOAD = "{\n" + " \"deviceIDs\": [\n"
+ " \"" + DEVICE_ID + "\"\n" + " ],\n" + " \"operation\": {\n"
- + " \"appIdentifier\": \"string\",\n" + " \"type\": \"string\",\n" + " \"url\": \"string\",\n"
- + " \"name\": \"string\"\n" + " }\n" + "}";
+ + " \"appIdentifier\": \"string\",\n" + " \"type\": \"enterprise\"} }";
public static final String BLACKLIST_APPS_ENDPOINT = "blacklist-applications";
+ public static final String BLACKLIST_OPERATION = "black_list_application";
+
+ public static final String UPGRADE_FIRMWARE_ENDPOINT = "upgrade-firmware";
+ public static final String UPGRADE_FIRMWARE_OPERATION = "upgrade-firmware";
+
+ public static final String VPN_ENDPOINT = "configure-vpn";
+ public static final String VPN_OPERATION = "vpn";
public static final String NOTIFICATION_ENDPOINT = "send-notification";
public static final String NOTIFICATION_PAYLOAD = "{\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n"
@@ -278,7 +285,8 @@ public final class Constants {
public static final class AndroidConfigurationManagement {
public static final String DEVICE_CONFIGURATION_GROUP = "android-config-mgt";
- public static final String CONFIG_MGT_ENDPOINT = "/mdm-android-agent/configuration/";
+ public static final String CONFIG_MGT_ENDPOINT = "/api/device-mgt/android/v1.0/configuration/";
+ public static final String LICENSE_ENDPOINT = "license";
public static final String PAYLOAD_FILE_NAME = "android-configuration-payloads.json";
public static final String RESPONSE_PAYLOAD_FILE_NAME = "android-config-response-payloads.json";
diff --git a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java
index e092cbb9..8915356a 100644
--- a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java
+++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java
@@ -17,8 +17,11 @@
*/
package org.wso2.iot.integration.common;
+import org.apache.commons.net.util.Base64;
+import org.testng.annotations.DataProvider;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.TestUserMode;
+import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.carbon.automation.engine.frameworkutils.FrameworkPathUtil;
import org.wso2.carbon.integration.common.utils.LoginLogoutClient;
@@ -31,6 +34,8 @@ public class TestBase {
protected AutomationContext automationContext;
protected String backendHTTPSURL;
protected String backendHTTPURL;
+ protected String accessTokenString;
+ protected TestUserMode userMode;
protected void init(TestUserMode userMode) throws Exception {
automationContext = new AutomationContext(Constants.AUTOMATION_CONTEXT, userMode);
@@ -39,6 +44,13 @@ public class TestBase {
.HTTPS_GATEWAY_PORT)).replace("/t/" + tenantDomain , "");
backendHTTPURL = automationContext.getContextUrls().getWebAppURL().replace("9763", String.valueOf(Constants
.HTTP_GATEWAY_PORT)).replace("/t/" + tenantDomain , "");
+ User currentUser = getAutomationContext().getContextTenant().getContextUser();
+ byte[] bytesEncoded = Base64
+ .encodeBase64((currentUser.getUserName() + ":" + currentUser.getPassword()).getBytes());
+ String encoded = new String(bytesEncoded);
+ accessTokenString = "Bearer " + OAuthUtil
+ .getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
+ currentUser.getPassword());
}
protected void initPublisher(String productGroupName, String instanceName,
@@ -76,4 +88,12 @@ public class TestBase {
protected String getTestArtifactLocation() {
return FrameworkPathUtil.getSystemResourceLocation();
}
+
+ @DataProvider
+ public static Object[][] userModeProvider() {
+ return new TestUserMode[][]{
+ new TestUserMode[]{TestUserMode.SUPER_TENANT_ADMIN},
+ new TestUserMode[]{TestUserMode.TENANT_ADMIN}
+ };
+ }
}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/configuration/AndroidConfigurationManagement.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/configuration/AndroidConfigurationManagement.java
index 11d8ca8a..e9758754 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/configuration/AndroidConfigurationManagement.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/configuration/AndroidConfigurationManagement.java
@@ -20,9 +20,13 @@ package org.wso2.iot.integration.device.configuration;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.net.util.Base64;
import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
+import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.iot.integration.common.*;
@@ -30,55 +34,45 @@ import org.wso2.iot.integration.common.*;
* This class contains integration tests for Android configuration management backend services.
*/
public class AndroidConfigurationManagement extends TestBase {
-
private RestClient client;
- @BeforeClass(alwaysRun = true, groups = { Constants.AndroidConfigurationManagement.DEVICE_CONFIGURATION_GROUP})
- public void initTest() throws Exception {
- super.init(TestUserMode.SUPER_TENANT_ADMIN);
- String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);
- this.client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON, accessTokenString);
+ @Factory(dataProvider = "userModeProvider")
+ public AndroidConfigurationManagement(TestUserMode testUserMode) {
+ this.userMode = testUserMode;
}
- @Test(description = "Test add android platform configuration.")
- public void testAddConfiguration() throws Exception {
- HttpResponse response = client.post(Constants.AndroidConfigurationManagement.CONFIG_MGT_ENDPOINT,
- PayloadGenerator.getJsonPayload(
- Constants.AndroidConfigurationManagement.PAYLOAD_FILE_NAME,
- Constants.HTTP_METHOD_POST).toString()
- );
- Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
- Constants.AndroidConfigurationManagement.RESPONSE_PAYLOAD_FILE_NAME,
- Constants.HTTP_METHOD_POST).toString(),
- response.getData().toString(), true
- );
+ @BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
+ public void initTest() throws Exception {
+ super.init(userMode);
+ this.client = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
- @Test(description = "Test update android configuration.", dependsOnMethods = {"testAddConfiguration"})
+ @Test(description = "Test update android configuration.")
public void testModifyConfiguration() throws Exception {
HttpResponse response = client.put(Constants.AndroidConfigurationManagement.CONFIG_MGT_ENDPOINT,
- PayloadGenerator.getJsonPayload(
- Constants.AndroidConfigurationManagement.PAYLOAD_FILE_NAME,
- Constants.HTTP_METHOD_PUT).toString()
- );
+ PayloadGenerator.getJsonPayload(Constants.AndroidConfigurationManagement.PAYLOAD_FILE_NAME,
+ Constants.HTTP_METHOD_PUT).toString());
Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
- Constants.AndroidConfigurationManagement.RESPONSE_PAYLOAD_FILE_NAME,
- Constants.HTTP_METHOD_PUT).toString(),
- response.getData().toString(), true
- );
+ Assert.assertEquals("Android configuration update message is not received properly",
+ "Android platform " + "configuration has been updated successfully.",
+ response.getData().replaceAll("\"", ""));
}
-// @Test(description = "Test get android configuration.",
-// dependsOnMethods = { "testAddConfiguration", "testModifyConfiguration" })
-// public void testGetConfiguration() throws Exception {
-// HttpResponse response = client.get(Constants.AndroidConfigurationManagement.CONFIG_MGT_ENDPOINT);
-// Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
-// AssertUtil.jsonPayloadCompare(
-// PayloadGenerator.getJsonPayload(Constants.AndroidConfigurationManagement.PAYLOAD_FILE_NAME,
-// Constants.HTTP_METHOD_PUT).toString(),
-// response.getData().toString(), true
-// );
-// }
+ @Test(description = "Test get android configuration.", dependsOnMethods = { "testModifyConfiguration" })
+ public void testGetConfiguration() throws Exception {
+ HttpResponse response = client.get(Constants.AndroidConfigurationManagement.CONFIG_MGT_ENDPOINT);
+ Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
+ AssertUtil.jsonPayloadCompare(PayloadGenerator
+ .getJsonPayload(Constants.AndroidConfigurationManagement.PAYLOAD_FILE_NAME, Constants.HTTP_METHOD_PUT)
+ .toString(), response.getData(), true);
+ }
+
+ @Test(description = "Test get android license.", dependsOnMethods = { "testModifyConfiguration" })
+ public void testGetLicense() throws Exception {
+ HttpResponse response = client.get(Constants.AndroidConfigurationManagement.CONFIG_MGT_ENDPOINT
+ + Constants.AndroidConfigurationManagement.LICENSE_ENDPOINT);
+ Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
+ Assert.assertEquals("Expected android license agreement is not received",
+ "This End User License Agreement is " + "Eula.", response.getData());
+ }
}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidEnrollment.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidEnrollment.java
index 03fb3733..671e5122 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidEnrollment.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidEnrollment.java
@@ -23,17 +23,13 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.net.util.Base64;
import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.iot.integration.common.AssertUtil;
import org.wso2.iot.integration.common.Constants;
-import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.PayloadGenerator;
import org.wso2.iot.integration.common.RestClient;
import org.wso2.iot.integration.common.TestBase;
@@ -45,7 +41,6 @@ import org.wso2.iot.integration.common.TestBase;
public class AndroidEnrollment extends TestBase {
private RestClient client;
private String deviceId;
- private TestUserMode userMode;
@Factory(dataProvider = "userModeProvider")
public AndroidEnrollment(TestUserMode userMode) {
@@ -55,13 +50,6 @@ public class AndroidEnrollment extends TestBase {
@BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(userMode);
- User currentUser = getAutomationContext().getContextTenant().getContextUser();
- byte[] bytesEncoded = Base64
- .encodeBase64((currentUser.getUserName() + ":" + currentUser.getPassword()).getBytes());
- String encoded = new String(bytesEncoded);
- String accessTokenString = "Bearer " + OAuthUtil
- .getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
- currentUser.getPassword());
this.client = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@@ -144,11 +132,4 @@ public class AndroidEnrollment extends TestBase {
Constants.HTTP_METHOD_DELETE).toString(), response.getData(), true);
}
- @DataProvider
- private static Object[][] userModeProvider() {
- return new TestUserMode[][]{
- new TestUserMode[]{TestUserMode.SUPER_TENANT_ADMIN},
- new TestUserMode[]{TestUserMode.TENANT_ADMIN}
- };
- }
}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/mgt/AndroidDeviceManagement.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/mgt/AndroidDeviceManagement.java
deleted file mode 100644
index 7aae9173..00000000
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/mgt/AndroidDeviceManagement.java
+++ /dev/null
@@ -1,85 +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.iot.integration.device.mgt;
-
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import com.google.gson.JsonParser;
-import junit.framework.Assert;
-import org.apache.commons.httpclient.HttpStatus;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
-import org.wso2.iot.integration.common.*;
-
-/**
- * This class contains integration tests for Android device management backend services.
- */
-public class AndroidDeviceManagement extends TestBase {
- private RestClient client;
- private JsonObject device;
-
- @BeforeClass(alwaysRun = true, groups = {Constants.AndroidDeviceManagement.DEVICE_MANAGEMENT_GROUP})
- public void initTest() throws Exception {
- super.init(TestUserMode.SUPER_TENANT_ADMIN);
- String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);
- this.client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON, accessTokenString);
- }
-
- @Test(description = "Test get all android devices.", groups = Constants.AndroidDeviceManagement.DEVICE_MANAGEMENT_GROUP)
- public void testGetAllDevices() throws Exception {
- HttpResponse response = client.get(Constants.AndroidDeviceManagement.DEVICE_MGT_ENDPOINT);
- JsonArray jsonArray = new JsonParser().parse(response.getData()).getAsJsonArray();
- Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- Assert.assertEquals(jsonArray.size(), 1);
- }
-
- @Test(description = "Test get android device.", groups = Constants.AndroidDeviceManagement.DEVICE_MANAGEMENT_GROUP)
- public void testGetDevice() throws Exception {
- HttpResponse response = client.get(Constants.AndroidDeviceManagement.DEVICE_MGT_ENDPOINT + Constants.DEVICE_ID);
- device = new JsonParser().parse(response.getData()).getAsJsonObject();
- Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- Assert.assertEquals(device.get(Constants.AndroidDeviceManagement.KEY_DEVICE_ID).getAsString(), Constants.DEVICE_ID);
- }
-
- @Test(description = "Test update android device.", groups = Constants.AndroidDeviceManagement.DEVICE_MANAGEMENT_GROUP,
- dependsOnMethods = {"testGetDevice"})
- public void testUpdateDevice() throws Exception {
- device.addProperty(Constants.AndroidDeviceManagement.KEY_DEVICE_NAME, "UpdatedName");
- HttpResponse response = client.put(Constants.AndroidDeviceManagement.DEVICE_MGT_ENDPOINT + Constants.DEVICE_ID,
- device.toString());
- Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
- Constants.AndroidDeviceManagement.RESPONSE_PAYLOAD_FILE_NAME,
- Constants.HTTP_METHOD_PUT).toString(),
- response.getData().toString(), true);
- }
-
-
- @Test(description = "Test get android license.", groups = Constants.AndroidDeviceManagement.DEVICE_MANAGEMENT_GROUP)
- public void testGetLicense() throws Exception {
- HttpResponse response = client.get(Constants.AndroidDeviceManagement.LICENSE_ENDPOINT);
- CharSequence sequence = Constants.AndroidDeviceManagement.LICENSE_SECTION;
- Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
- Assert.assertTrue(response.getData().contains(sequence));
- }
-
-
-}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/operation/AndroidOperation.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/operation/AndroidOperation.java
index f01bc303..5195fb4d 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/operation/AndroidOperation.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/operation/AndroidOperation.java
@@ -20,29 +20,25 @@ package org.wso2.iot.integration.device.operation;
import com.google.gson.JsonObject;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.net.util.Base64;
-import org.testng.annotations.*;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Factory;
+import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.iot.integration.common.Constants;
-import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.PayloadGenerator;
import org.wso2.iot.integration.common.RestClient;
import org.wso2.iot.integration.common.TestBase;
-import java.io.File;
import java.io.FileNotFoundException;
import java.net.MalformedURLException;
-import java.net.URL;
/**
* This contain tests to check operations supported by Android. Test are executed against a previously enrolled device
*/
public class AndroidOperation extends TestBase {
private RestClient client;
- private TestUserMode userMode;
@Factory(dataProvider = "userModeProvider")
public AndroidOperation(TestUserMode userMode) {
@@ -52,13 +48,6 @@ public class AndroidOperation extends TestBase {
@BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(userMode);
- User currentUser = getAutomationContext().getContextTenant().getContextUser();
- byte[] bytesEncoded = Base64
- .encodeBase64((currentUser.getUserName() + ":" + currentUser.getPassword()).getBytes());
- String encoded = new String(bytesEncoded);
- String accessTokenString = "Bearer " + OAuthUtil
- .getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
- currentUser.getPassword());
this.client = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
//Enroll a device
JsonObject enrollmentData = PayloadGenerator.getJsonPayload(
@@ -69,9 +58,9 @@ public class AndroidOperation extends TestBase {
@Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test Android device lock operation.")
public void testLock() throws MalformedURLException, AutomationFrameworkException {
- HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT +
- Constants.AndroidOperations.LOCK_ENDPOINT,
- Constants.AndroidOperations.LOCK_OPERATION_PAYLOAD);
+ HttpResponse response = client
+ .post(Constants.AndroidOperations.OPERATION_ENDPOINT + Constants.AndroidOperations.LOCK_ENDPOINT,
+ Constants.AndroidOperations.LOCK_OPERATION_PAYLOAD);
Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
}
@@ -160,6 +149,58 @@ public class AndroidOperation extends TestBase {
Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
}
+ @Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test Android app update operation")
+ public void testUpdateApplication()
+ throws FileNotFoundException, MalformedURLException, AutomationFrameworkException {
+ JsonObject installApplicationPayload = PayloadGenerator.getJsonPayload(Constants.AndroidOperations
+ .OPERATION_PAYLOAD_FILE_NAME, Constants.AndroidOperations.INSTALL_APPS_OPERATION);
+ HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT +
+ Constants.AndroidOperations.UPDATE_APPS_ENDPOINT, installApplicationPayload.toString());
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ }
+
+ @Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test Android app un-install "
+ + "operation")
+ public void testUninstallApplication() throws MalformedURLException, AutomationFrameworkException {
+ HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT
+ + Constants.AndroidOperations.UNINSTALL_APPS_ENDPOINT,
+ Constants.AndroidOperations.UNINSTALL_APPS_PAYLOAD);
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ }
+
+ @Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test black list application "
+ + "operation")
+ public void testBlackListApplication()
+ throws FileNotFoundException, MalformedURLException, AutomationFrameworkException {
+ JsonObject blackListApplicationPayload = PayloadGenerator.getJsonPayload(Constants.AndroidOperations
+ .OPERATION_PAYLOAD_FILE_NAME, Constants.AndroidOperations.BLACKLIST_OPERATION);
+ HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT +
+ Constants.AndroidOperations.BLACKLIST_APPS_ENDPOINT, blackListApplicationPayload.toString());
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ }
+
+ @Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test upgrade firmware operation")
+ public void testUpgradeFirmware()
+ throws FileNotFoundException, MalformedURLException, AutomationFrameworkException {
+ JsonObject upgradeFirmWarePayload = PayloadGenerator
+ .getJsonPayload(Constants.AndroidOperations.OPERATION_PAYLOAD_FILE_NAME,
+ Constants.AndroidOperations.UPGRADE_FIRMWARE_OPERATION);
+ HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT
+ + Constants.AndroidOperations.UPGRADE_FIRMWARE_ENDPOINT, upgradeFirmWarePayload.toString());
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ }
+
+ @Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test configure VPN operation")
+ public void testConfigureVPN()
+ throws FileNotFoundException, MalformedURLException, AutomationFrameworkException {
+ JsonObject configureVPNPayload = PayloadGenerator
+ .getJsonPayload(Constants.AndroidOperations.OPERATION_PAYLOAD_FILE_NAME,
+ Constants.AndroidOperations.VPN_OPERATION);
+ HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT
+ + Constants.AndroidOperations.VPN_ENDPOINT, configureVPNPayload.toString());
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ }
+
@Test(groups = {Constants.AndroidOperations.OPERATIONS_GROUP}, description = "Test Android reboot operation")
public void testReboot() throws Exception {
HttpResponse response = client.post(Constants.AndroidOperations.OPERATION_ENDPOINT +
@@ -230,12 +271,4 @@ public class AndroidOperation extends TestBase {
Constants.AndroidOperations.WEB_CLIP_PAYLOAD);
Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
}
-
- @DataProvider
- private static Object[][] userModeProvider() {
- return new TestUserMode[][]{
- new TestUserMode[]{TestUserMode.SUPER_TENANT_ADMIN},
- new TestUserMode[]{TestUserMode.TENANT_ADMIN}
- };
- }
-}
\ No newline at end of file
+}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
index eeaa37a9..d4c40827 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
@@ -20,12 +20,16 @@ package org.wso2.iot.integration.mobileDevice;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
-import org.junit.experimental.theories.Theories;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.iot.integration.common.*;
+import org.wso2.iot.integration.common.Constants;
+import org.wso2.iot.integration.common.IOTHttpClient;
+import org.wso2.iot.integration.common.IOTResponse;
+import org.wso2.iot.integration.common.OAuthUtil;
+import org.wso2.iot.integration.common.TestBase;
import java.util.concurrent.TimeUnit;
@@ -35,26 +39,35 @@ import java.util.concurrent.TimeUnit;
public class MobileDeviceManagementWithNoDevices extends TestBase {
private IOTHttpClient client;
+ @Factory(dataProvider = "userModeProvider")
+ public MobileDeviceManagementWithNoDevices(TestUserMode userMode) {
+ this.userMode = userMode;
+ }
+
/**
* @BeforeSuite annotation is added to run this verification before the test suite starts.
* As in IoT server, apis are published after the server startup. Due to that the generated token doesn't get
* required scope.
* This method delays test suit startup until the tokens get required scopes.
- * @throws Exception
+ * @throws Exception Exception
*/
@BeforeSuite
public void verifyApiPublishing() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
+ long startTime = System.currentTimeMillis();
while (!checkScopes(Constants.APIApplicationRegistration.PERMISSION_LIST)) {
TimeUnit.SECONDS.sleep(5);
+ long WAIT_TIME = 30000;
+ if (System.currentTimeMillis() - startTime > WAIT_TIME) {
+ Assert.fail("Required APIs are not deployed after waiting for " + WAIT_TIME + " time-out has happened");
+ }
}
}
- @BeforeClass(alwaysRun = true, groups = { Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP})
+ @BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
public void initTest() throws Exception {
-
- String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
+ super.init(userMode);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@@ -70,4 +83,6 @@ public class MobileDeviceManagementWithNoDevices extends TestBase {
return tokenString.contains(permissionsList);
}
+
+
}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/role/RoleManagement.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/role/RoleManagement.java
index 0b6e9feb..7c266812 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/role/RoleManagement.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/role/RoleManagement.java
@@ -21,18 +21,14 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonParser;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.net.util.Base64;
import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.iot.integration.common.AssertUtil;
import org.wso2.iot.integration.common.Constants;
import org.wso2.iot.integration.common.IOTHttpClient;
import org.wso2.iot.integration.common.IOTResponse;
-import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.PayloadGenerator;
import org.wso2.iot.integration.common.TestBase;
@@ -44,7 +40,6 @@ import java.io.FileNotFoundException;
*/
public class RoleManagement extends TestBase {
private IOTHttpClient client;
- private TestUserMode userMode;
private static final String ROLE_NAME = "administration";
@Factory(dataProvider = "userModeProvider")
@@ -55,13 +50,6 @@ public class RoleManagement extends TestBase {
@BeforeClass(alwaysRun = true, groups = { Constants.RoleManagement.ROLE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(userMode);
- User currentUser = getAutomationContext().getContextTenant().getContextUser();
- byte[] bytesEncoded = Base64
- .encodeBase64((currentUser.getUserName() + ":" + currentUser.getPassword()).getBytes());
- String encoded = new String(bytesEncoded);
- String accessTokenString = "Bearer " + OAuthUtil
- .getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
- currentUser.getPassword());
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@@ -138,12 +126,4 @@ public class RoleManagement extends TestBase {
IOTResponse response = client.delete(Constants.RoleManagement.ROLE_MANAGEMENT_END_POINT +"/" + ROLE_NAME);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
}
-
- @DataProvider
- private static Object[][] userModeProvider() {
- return new TestUserMode[][]{
- new TestUserMode[]{TestUserMode.SUPER_TENANT_ADMIN},
- new TestUserMode[]{TestUserMode.TENANT_ADMIN}
- };
- }
-}
\ No newline at end of file
+}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/user/UserManagement.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/user/UserManagement.java
index bee86d5e..ef00d78b 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/user/UserManagement.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/user/UserManagement.java
@@ -23,17 +23,13 @@ import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.net.util.Base64;
import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
-import org.wso2.carbon.automation.engine.context.beans.User;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.iot.integration.common.AssertUtil;
import org.wso2.iot.integration.common.Constants;
-import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.PayloadGenerator;
import org.wso2.iot.integration.common.RestClient;
import org.wso2.iot.integration.common.TestBase;
@@ -44,7 +40,6 @@ import org.wso2.iot.integration.common.TestBase;
public class UserManagement extends TestBase {
private String NON_EXISTING_USERNAME = "non_exiting";
private RestClient client;
- private TestUserMode userMode;
@Factory(dataProvider = "userModeProvider")
public UserManagement(TestUserMode userMode) {
@@ -54,13 +49,6 @@ public class UserManagement extends TestBase {
@BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(userMode);
- User currentUser = getAutomationContext().getContextTenant().getContextUser();
- byte[] bytesEncoded = Base64
- .encodeBase64((currentUser.getUserName() + ":" + currentUser.getPassword()).getBytes());
- String encoded = new String(bytesEncoded);
- String accessTokenString = "Bearer " + OAuthUtil
- .getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
- currentUser.getPassword());
this.client = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@@ -186,12 +174,4 @@ public class UserManagement extends TestBase {
Assert.assertEquals("Password of the user cannot be changed",
"\"UserImpl password by " + "username: admin was successfully changed.\"", response.getData());
}
-
- @DataProvider
- private static Object[][] userModeProvider() {
- return new TestUserMode[][]{
- new TestUserMode[]{TestUserMode.SUPER_TENANT_ADMIN},
- new TestUserMode[]{TestUserMode.TENANT_ADMIN}
- };
- }
}
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json b/modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json
index 5e8353b5..693c0e85 100644
--- a/modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json
+++ b/modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json
@@ -1,3 +1,4 @@
+
{
"POST": {
"responseCode": "Created",
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json b/modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json
index dc1b8f9e..655c0318 100644
--- a/modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json
+++ b/modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json
@@ -18,7 +18,7 @@
"url": "https://www.youtube.com",
"name": "youtube"
},
- "deviceIDs": []
+ "deviceIDs": ["d24f870f390352a41234"]
},
"notification": {
"operation": {
@@ -64,5 +64,34 @@
"type": "install"
},
"deviceIDs": []
+ },
+ "black_list_application": {
+ "operation": {
+ "appIdentifiers": ["com.google", "android.studio"]
+ },
+ "deviceIDs": [
+ "d24f870f390352a41234"
+ ]
+ },
+ "upgrade-firmware" : {
+ "operation": {
+ "schedule": "",
+ "server" : "http://www.google.lk"
+ },
+ "deviceIDs": [
+ "d24f870f390352a41234"
+ ]
+ },
+ "vpn" : {
+ "operation": {
+ "serverAddress": "localhost",
+ "serverPort" : "9763",
+ "sharedSecret" : "helloWorld",
+ "dnsServer" : "testserver.com"
+ },
+ "deviceIDs": [
+ "d24f870f390352a41234"
+ ]
+
}
}
\ No newline at end of file
diff --git a/modules/integration/tests-integration/src/test/resources/testng.xml b/modules/integration/tests-integration/src/test/resources/testng.xml
index fb3c0230..b1c4252f 100644
--- a/modules/integration/tests-integration/src/test/resources/testng.xml
+++ b/modules/integration/tests-integration/src/test/resources/testng.xml
@@ -43,20 +43,15 @@
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -108,4 +103,4 @@
-
\ No newline at end of file
+