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 9efe6983..282d3577 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
@@ -23,7 +23,6 @@ import java.io.File;
* Constants used through out the test suite are defined here.
*/
public final class Constants {
-
public static final String DEVICE_ID = "d24f870f390352a41234";
public static final String NUMBER_NOT_EQUAL_TO_DEVICE_ID = "1111";
public static final String DEVICE_IMEI = "123123123";
@@ -44,9 +43,7 @@ public final class Constants {
public static final String CONTENT_TYPE = "Content-Type";
public static final String APPLICATION_SOAP_XML = "application/soap+xml; charset=utf-8";
public static final String UTF8 = "UTF-8";
- public static final String ZERO = "0";
- public static final String NULL = "[]";
- public static final String INACTIVE = "INACTIVE";
+ public static final int HTTPS_ANALYTICS_PORT = 9445;
public static final String HTTPS = "https";
public static final String HTTP = "http";
@@ -59,7 +56,10 @@ public final class Constants {
public static final String TOKEN_ENDPOINT = "/token";
public static final String MULTI_TENANT_OAUTH_TOKEN_PAYLOAD = "&grant_type=password&scope=perm:android:enroll"
+ " perm:android:wipe perm:android:ring perm:android:lock-devices perm:android:configure-vpn "
- + "perm:android:configure-wifi perm:android:enroll perm:android:uninstall-application perm:android:manage-configuration perm:android:location perm:android:install-application perm:android:mute perm:android:change-lock-code perm:android:blacklist-applications perm:android:set-password-policy perm:android:encrypt-storage perm:android:clear-password perm:android:enterprise-wipe perm:android:info perm:android:view-configuration perm:android:upgrade-firmware perm:android:set-webclip perm:android:send-notification perm:android:disenroll perm:android:update-application perm:android:unlock-devices perm:android:control-camera perm:android:reboot perm:android:logcat appm:subscribe perm:sign-csr perm:admin:devices:view perm:roles:add perm:roles:add-users perm:roles:update perm:roles:permissions perm:roles:details perm:roles:view perm:roles:create-combined-role perm:roles:delete perm:dashboard:vulnerabilities perm:dashboard:non-compliant-count perm:dashboard:non-compliant perm:dashboard:by-groups perm:dashboard:device-counts perm:dashboard:feature-non-compliant perm:dashboard:count-overview perm:dashboard:filtered-count perm:dashboard:details perm:get-activity perm:devices:delete perm:devices:applications perm:devices:effective-policy perm:devices:compliance-data perm:devices:features perm:devices:operations perm:devices:search perm:devices:details perm:devices:update perm:devices:view perm:view-configuration perm:manage-configuration perm:policies:remove perm:policies:priorities perm:policies:deactivate perm:policies:get-policy-details perm:policies:manage perm:policies:activate perm:policies:update perm:policies:changes perm:policies:get-details perm:users:add perm:users:details perm:users:count perm:users:delete perm:users:roles perm:users:user-details perm:users:credentials perm:users:search perm:users:is-exist perm:users:update perm:users:send-invitation perm:admin-users:view perm:groups:devices perm:groups:update perm:groups:add perm:groups:device perm:groups:devices-count perm:groups:remove perm:groups:groups perm:groups:groups-view perm:groups:share perm:groups:count perm:groups:roles perm:groups:devices-remove perm:groups:devices-add perm:groups:assign perm:device-types:features perm:device-types:types perm:applications:install perm:applications:uninstall perm:admin-groups:count perm:admin-groups:view perm:notifications:mark-checked perm:notifications:view perm:admin:certificates:delete perm:admin:certificates:details perm:admin:certificates:view perm:admin:certificates:add perm:admin:certificates:verify perm:ios:enroll perm:ios:view-device perm:ios:apn perm:ios:ldap perm:ios:enterprise-app perm:ios:store-application perm:ios:remove-application perm:ios:app-list perm:ios:profile-list perm:ios:lock perm:ios:enterprise-wipe perm:ios:device-info perm:ios:restriction perm:ios:email perm:ios:cellular perm:ios:applications perm:ios:wifi perm:ios:ring perm:ios:location perm:ios:notification perm:ios:airplay perm:ios:caldav perm:ios:cal-subscription perm:ios:passcode-policy perm:ios:webclip perm:ios:vpn perm:ios:per-app-vpn perm:ios:app-to-per-app-vpn perm:ios:app-lock perm:ios:clear-passcode perm:ios:remove-profile perm:ios:get-restrictions perm:ios:wipe-data perm:admin perm:android:applications";
+ + "perm:android:configure-wifi perm:android:enroll perm:android:uninstall-application "
+ + "perm:android:manage-configuration perm:android:location perm:android:install-application "
+ + "perm:android:mute perm:android:change-lock-code perm:android:blacklist-applications "
+ + "perm:android:set-password-policy perm:android:encrypt-storage perm:android:clear-password perm:android:enterprise-wipe perm:android:info perm:android:view-configuration perm:android:upgrade-firmware perm:android:set-webclip perm:android:send-notification perm:android:disenroll perm:android:update-application perm:android:unlock-devices perm:android:control-camera perm:android:reboot perm:android:logcat appm:subscribe perm:sign-csr perm:admin:devices:view perm:roles:add perm:roles:add-users perm:roles:update perm:roles:permissions perm:roles:details perm:roles:view perm:roles:create-combined-role perm:roles:delete perm:dashboard:vulnerabilities perm:dashboard:non-compliant-count perm:dashboard:non-compliant perm:dashboard:by-groups perm:dashboard:device-counts perm:dashboard:feature-non-compliant perm:dashboard:count-overview perm:dashboard:filtered-count perm:dashboard:details perm:get-activity perm:devices:delete perm:devices:applications perm:devices:effective-policy perm:devices:compliance-data perm:devices:features perm:devices:operations perm:devices:search perm:devices:details perm:devices:update perm:devices:view perm:view-configuration perm:manage-configuration perm:policies:remove perm:policies:priorities perm:policies:deactivate perm:policies:get-policy-details perm:policies:manage perm:policies:activate perm:policies:update perm:policies:changes perm:policies:get-details perm:users:add perm:users:details perm:users:count perm:users:delete perm:users:roles perm:users:user-details perm:users:credentials perm:users:search perm:users:is-exist perm:users:update perm:users:send-invitation perm:admin-users:view perm:groups:devices perm:groups:update perm:groups:add perm:groups:device perm:groups:devices-count perm:groups:remove perm:groups:groups perm:groups:groups-view perm:groups:share perm:groups:count perm:groups:roles perm:groups:devices-remove perm:groups:devices-add perm:groups:assign perm:device-types:features perm:device-types:types perm:applications:install perm:applications:uninstall perm:admin-groups:count perm:admin-groups:view perm:notifications:mark-checked perm:notifications:view perm:admin:certificates:delete perm:admin:certificates:details perm:admin:certificates:view perm:admin:certificates:add perm:admin:certificates:verify perm:ios:enroll perm:ios:view-device perm:ios:apn perm:ios:ldap perm:ios:enterprise-app perm:ios:store-application perm:ios:remove-application perm:ios:app-list perm:ios:profile-list perm:ios:lock perm:ios:enterprise-wipe perm:ios:device-info perm:ios:restriction perm:ios:email perm:ios:cellular perm:ios:applications perm:ios:wifi perm:ios:ring perm:ios:location perm:ios:notification perm:ios:airplay perm:ios:caldav perm:ios:cal-subscription perm:ios:passcode-policy perm:ios:webclip perm:ios:vpn perm:ios:per-app-vpn perm:ios:app-to-per-app-vpn perm:ios:app-lock perm:ios:clear-passcode perm:ios:remove-profile perm:ios:get-restrictions perm:ios:wipe-data perm:admin perm:android:applications perm:devicetype:deployment perm:android-sense:enroll";
public static final String OAUTH_TOKEN_PAYLOAD = "username=admin&password=admin" +
MULTI_TENANT_OAUTH_TOKEN_PAYLOAD;
@@ -71,19 +71,21 @@ public final class Constants {
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:admin:devices:view perm:android-sense:enroll 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: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:devicetype:deployment "
+ + "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 "
@@ -298,8 +300,6 @@ public final class Constants {
public static final String REQUEST_PAYLOAD_FILE_NAME = "mobile-device-mgt-payloads.json";
public static final String UPDATE_PAYLOAD_OPERATION = "UPDATE_DEVICE_INFO";
public static final String VIEW_DEVICE_TYPES_ENDPOINT = "/mdm-admin/devices/types";
- public static final String VIEW_DEVICE_RESPONSE_PAYLOAD_FILE_NAME =
- "mobile-device-mgt-view-device-types-response-payloads.json";
public static final String NO_DEVICE = "{\"devices\":[],\"count\":0}";
private MobileDeviceManagement() {
@@ -391,6 +391,19 @@ public final class Constants {
private NotificationManagement() {
throw new AssertionError();
}
+ }
+ public static final class AndroidSenseEnrollment {
+ public static final String ENROLLMENT_ENDPOINT = "/android_sense/1.0.0/device/";
+ public static final String RETRIEVER_ENDPOINT = "analytics/tables/";
+ public static final String ANALYTICS_ARTIFACTS_DEPLOYMENT_ENDPOINT = "/api/device-mgt/v1.0/admin/devicetype/1.0.0/deploy/android_sense";
+ public static final String ENROLLMENT_PAYLOAD_FILE_NAME = "android-sense-enrollment-payloads.json";
+ public static final String PUBLISH_DATA_OPERATION = "PUBLISH_DATA";
+ public static final String BATTERY_STATS_TABLE_NAME = "ORG_WSO2_IOT_ANDROID_BATTERY_STATS";
+ public static final String IS_TABLE_EXIST_CHECK_URL = "analytics/table_exists";
+ private AndroidSenseEnrollment() {
+ throw new AssertionError();
+ }
}
+
}
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 8915356a..0219aba2 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
@@ -35,6 +35,7 @@ public class TestBase {
protected String backendHTTPSURL;
protected String backendHTTPURL;
protected String accessTokenString;
+ protected String accessToken;
protected TestUserMode userMode;
protected void init(TestUserMode userMode) throws Exception {
@@ -48,9 +49,9 @@ public class TestBase {
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());
+ accessToken = OAuthUtil.getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(),
+ currentUser.getPassword());
+ accessTokenString = "Bearer " + accessToken;
}
protected void initPublisher(String productGroupName, String instanceName,
diff --git a/modules/integration/tests-integration/pom.xml b/modules/integration/tests-integration/pom.xml
index 346a1fcb..b2ace0cb 100644
--- a/modules/integration/tests-integration/pom.xml
+++ b/modules/integration/tests-integration/pom.xml
@@ -269,6 +269,10 @@
org.wso2.carbon.automation
org.wso2.carbon.automation.extensions
+
+ org.eclipse.paho
+ org.eclipse.paho.client.mqttv3
+
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidSenseEnrollment.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidSenseEnrollment.java
new file mode 100644
index 00000000..1c35f4f4
--- /dev/null
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/device/enrollment/AndroidSenseEnrollment.java
@@ -0,0 +1,146 @@
+/*
+ * 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.iot.integration.device.enrollment;
+
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import junit.framework.Assert;
+import org.apache.commons.httpclient.HttpStatus;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.commons.net.util.Base64;
+import org.eclipse.paho.client.mqttv3.MqttClient;
+import org.eclipse.paho.client.mqttv3.MqttConnectOptions;
+import org.eclipse.paho.client.mqttv3.MqttMessage;
+import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
+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.test.utils.http.client.HttpResponse;
+import org.wso2.iot.integration.common.Constants;
+import org.wso2.iot.integration.common.PayloadGenerator;
+import org.wso2.iot.integration.common.RestClient;
+import org.wso2.iot.integration.common.TestBase;
+
+import java.sql.Timestamp;
+
+/**
+ * This class tests the android sense enrollment.
+ */
+public class AndroidSenseEnrollment extends TestBase {
+ private static Log log = LogFactory.getLog(AndroidSenseEnrollment.class);
+ private RestClient client;
+ private String DEVICE_ID = "AS101";
+ private RestClient analyticsClient;
+
+ @Factory(dataProvider = "userModeProvider")
+ public AndroidSenseEnrollment(TestUserMode userMode) {
+ this.userMode = userMode;
+ }
+
+ @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 auth_string = "Basic " + encoded;
+ String anaytics_https_url = automationContext.getContextUrls().getWebAppURLHttps()
+ .replace("9443", String.valueOf(Constants.HTTPS_ANALYTICS_PORT))
+ .replace("/t/" + automationContext.getContextTenant().getDomain(), "") + "/";
+ this.client = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
+ this.analyticsClient = new RestClient(anaytics_https_url, Constants.APPLICATION_JSON, auth_string);
+ if (this.userMode == TestUserMode.TENANT_ADMIN) {
+ HttpResponse response = client
+ .post(Constants.AndroidSenseEnrollment.ANALYTICS_ARTIFACTS_DEPLOYMENT_ENDPOINT, "");
+ Assert.assertEquals(HttpStatus.SC_CREATED, response.getResponseCode());
+ // Time for deploying the carbon apps
+ Thread.sleep(30000);
+ }
+ }
+
+ @Test(description = "Test an Android sense device enrollment.")
+ public void testEnrollment() throws Exception {
+ HttpResponse response = client.post(Constants.AndroidSenseEnrollment.ENROLLMENT_ENDPOINT + DEVICE_ID
+ + "/register?deviceName=android_sense_test", "");
+ // Time for deploying the carbon apps
+ Thread.sleep(30000);
+ Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
+ JsonElement jsonElement = new JsonParser().parse(response.getData());
+ JsonObject expectedPayloadObject = jsonElement.getAsJsonObject();
+ Assert.assertNotNull("Mqtt end-point is returned with the android sense enrollment " + "payload",
+ expectedPayloadObject.get("mqttEndpoint"));
+ Assert.assertNotNull("Tenant domain is returned with the android sense enrollment " + "payload",
+ expectedPayloadObject.get("tenantDomain"));
+
+ }
+
+ @Test(description = "Test an Android sense device data publishing.", dependsOnMethods = {"testEnrollment"} )
+ public void testEventPublishing() throws Exception {
+ String DEVICE_TYPE = "android_sense";
+ String topic = automationContext.getContextTenant().getDomain() + "/" + DEVICE_TYPE + "/" + DEVICE_ID + "/data";
+ int qos = 2;
+ String broker = "tcp://localhost:1886";
+ String clientId = DEVICE_ID + ":" + DEVICE_TYPE;
+ MemoryPersistence persistence = new MemoryPersistence();
+ MqttClient sampleClient = new MqttClient(broker, clientId, persistence);
+ MqttConnectOptions connOpts = new MqttConnectOptions();
+ connOpts.setUserName(accessToken);
+ connOpts.setPassword("".toCharArray());
+ connOpts.setKeepAliveInterval(120);
+ connOpts.setCleanSession(true);
+ log.info("Connecting to broker: " + broker);
+ sampleClient.connect(connOpts);
+ log.info("Connected");
+ MqttMessage message = new MqttMessage(PayloadGenerator
+ .getJsonArray(Constants.AndroidSenseEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME,
+ Constants.AndroidSenseEnrollment.PUBLISH_DATA_OPERATION).toString().getBytes());
+ message.setQos(qos);
+ sampleClient.publish(topic, message);
+ log.info("Message is published to Mqtt Client");
+ Thread.sleep(30000);
+ HttpResponse response = analyticsClient
+ .get(Constants.AndroidSenseEnrollment.IS_TABLE_EXIST_CHECK_URL + "?table="
+ + Constants.AndroidSenseEnrollment.BATTERY_STATS_TABLE_NAME);
+ Assert.assertEquals("ORG_WSO2_IOT_ANDROID_BATTERY_STATS table does not exist. Problem with the android sense "
+ + "analytics", HttpStatus.SC_OK, response.getResponseCode());
+ // Allow some time to perform the analytics tasks.
+ Thread.sleep(30000);
+ sampleClient.disconnect();
+ log.info("Mqtt Client is Disconnected");
+
+ String url = Constants.AndroidSenseEnrollment.RETRIEVER_ENDPOINT
+ + Constants.AndroidSenseEnrollment.BATTERY_STATS_TABLE_NAME + "/";
+ Timestamp timestamp = new Timestamp(System.currentTimeMillis() - 3600000);
+ url += timestamp.getTime() + "/" + new Timestamp(System.currentTimeMillis()).getTime() + "/0/100";
+ response = analyticsClient.get(url);
+ JsonArray jsonArray = new JsonParser().parse(response.getData()).getAsJsonArray();
+ Assert.assertEquals(
+ "Published event for the device with the id " + DEVICE_ID + " is not inserted to analytics table",
+ HttpStatus.SC_OK, response.getResponseCode());
+ Assert.assertEquals(
+ "Published event for the device with the id " + DEVICE_ID + " is not inserted to analytics table", 1,
+ jsonArray.size());
+ }
+}
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/jmeter/AppManagerJmeterTestCase.java b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/jmeter/AppManagerJmeterTestCase.java
index 6a729d59..dc03b500 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/jmeter/AppManagerJmeterTestCase.java
+++ b/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/jmeter/AppManagerJmeterTestCase.java
@@ -35,7 +35,7 @@ public class AppManagerJmeterTestCase {
private static Log log = LogFactory.getLog(AppManagerJmeterTestCase.class);
@Test(description = "This test case tests the flow of App Manager mobile-app creation and lifecycle")
- public void GroupManagementTest() throws AutomationFrameworkException {
+ public void AppManagementTest() throws AutomationFrameworkException {
URL url = Thread.currentThread().getContextClassLoader()
.getResource("jmeter-scripts" + File.separator + "AppManagerTest.jmx");
JMeterTest script = new JMeterTest(new File(url.getPath()));
diff --git a/modules/integration/tests-integration/src/test/resources/automation.xml b/modules/integration/tests-integration/src/test/resources/automation.xml
index eddb09c1..249ba192 100644
--- a/modules/integration/tests-integration/src/test/resources/automation.xml
+++ b/modules/integration/tests-integration/src/test/resources/automation.xml
@@ -189,9 +189,9 @@
-
+ org.wso2.iot.integration.common.extensions.BrokerServerExtension
org.wso2.iot.integration.common.extensions.IOTServerExtension
-
+ org.wso2.iot.integration.common.extensions.AnalyticsServerExtension
org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension
diff --git a/modules/integration/tests-integration/src/test/resources/jmeter-scripts/AppManagerTest.jmx b/modules/integration/tests-integration/src/test/resources/jmeter-scripts/AppManagerTest.jmx
index 8d937ed7..1710b70a 100644
--- a/modules/integration/tests-integration/src/test/resources/jmeter-scripts/AppManagerTest.jmx
+++ b/modules/integration/tests-integration/src/test/resources/jmeter-scripts/AppManagerTest.jmx
@@ -434,60 +434,6 @@ vars.put("encoded", encoded);
-
-
-
-
- true
- ${RelayState}
- =
- true
- RelayState
-
-
- true
- ${SAMLRequest}
- =
- true
- SAMLRequest
-
-
- true
- ${SSOAuthSessionID}
- =
- true
- SSOAuthSessionID
-
-
-
- ${server}
- ${port}
-
-
- https
-
- samlsso
- POST
- true
- false
- true
- false
- HttpClient4
- false
-
-
-
-
-
- sessionDataKey
- //input[@type='hidden'][@name='sessionDataKey']/@value
- false
- true
- false
- all
-
-
-
@@ -1112,7 +1058,7 @@ vars.put("encoded", encoded);
-
+
@@ -1122,8 +1068,8 @@ vars.put("encoded", encoded);
https
UTF-8
- publisher/api/mobile/delete/${id}
- DELETE
+ publisher/api/lifecycle/Approve/mobileapp/${id}
+ PUT
true
false
true
@@ -1145,8 +1091,17 @@ vars.put("encoded", encoded);
+
+
+ '${mobile-app}' mobileapp approved successfully
+
+ Assertion.response_data
+ false
+ 16
+
+
-
+
@@ -1156,8 +1111,8 @@ vars.put("encoded", encoded);
https
UTF-8
- publisher/logout
- GET
+ publisher/api/lifecycle/${encoded}/mobileapp/${id}
+ PUT
true
false
true
@@ -1179,166 +1134,26 @@ vars.put("encoded", encoded);
+
+
+ Cannot perform action 'Submit for Review'
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+ 500
+
+ Assertion.response_code
+ true
+ 1
+
+
-
- false
- true
- false
-
-
-
- false
-
- saveConfig
-
-
- true
- true
- true
-
- true
- true
- true
- true
- false
- true
- true
- false
- false
- false
- true
- false
- false
- false
- true
- 0
- true
- true
- true
-
-
-
-
-
-
- false
-
- saveConfig
-
-
- true
- true
- true
-
- true
- true
- true
- true
- false
- true
- true
- false
- false
- false
- true
- false
- false
- false
- true
- 0
- true
- true
- true
-
-
-
- true
-
-
-
- false
-
- saveConfig
-
-
- true
- true
- true
-
- true
- true
- true
- true
- false
- true
- true
- false
- false
- false
- true
- false
- false
- false
- true
- 0
- true
- true
- true
-
-
-
-
-
-
-
- continue
-
- false
- 1
-
- 1
- 1
- 1443769286000
- 1443769286000
- false
-
-
-
-
-
- false
-
-
- import org.apache.jmeter.services.FileServer;
-
-String basePath = FileServer.getFileServer().getBaseDir() + File.separator;
-vars.put("script-path", basePath);
-
-
-
-
-
-
- var encoded = encodeURIComponent('Submit for Review');
-vars.put("encoded", encoded);
- javascript
-
-
-
-
- true
-
-
-
- 12
-
- 1
- id
- #
- false
-
-
-
+
@@ -1347,68 +1162,1271 @@ vars.put("encoded", encoded);
https
-
- publisher
- GET
+ UTF-8
+ publisher/api/lifecycle/Publish/mobileapp/${id}
+ PUT
true
false
true
- false
+ true
false
-
-
- SAMLRequest
- //input[@type='hidden'][@name='SAMLRequest']/@value
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ '${mobile-app}' mobileapp published successfully
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/lifecycle/Deprecate/mobileapp/${id}
+ PUT
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ '${mobile-app}' mobileapp deprecated successfully
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/lifecycle/Retire/mobileapp/${id}
+ PUT
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ '${mobile-app}' mobileapp retired successfully
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${script-path}image.png
+ bannerFile
+ image/png
+
+
+ ${script-path}image.png
+ screenshot1File
+ image/png
+
+
+ ${script-path}image.png
+ iconFile
+ image/png
+
+
+
+
+
+
+ true
+ ${response}
+ =
+ true
+ appmeta
+
+
+ false
+ 1WSO2Mobile
+ =
+ true
+ provider
+
+
+ false
+ enterprise
+ =
+ true
+ markettype
+
+
+ false
+ android
+ =
+ true
+ platform
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ name
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ displayName
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ description
+
+
+ false
+ 1.1.10
+ =
+ true
+ version
+
+
+ false
+ business
+ =
+ true
+ category
+
+
+ false
+ mobileapp
+ =
+ true
+ mobileapp
+
+
+ true
+
+ =
+ true
+ visibility
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/asset/mobileapp
+ POST
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ App with identifer com.apkpure.aegon and version 1.1.10 already exists
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobile/delete/${id}
+ DELETE
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+
+
+
+ ${script-path}test.apk
+ file
+ application/vnd.android.package-archive,.apk
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobileapp/upload
+ POST
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+ false
+ response
+ (?s)(^.*)
+ $1$
+
+ 1
+
+
+
+
+ "package" : "com.apkpure.aegon", "version" : "1.1.10"
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${script-path}image.png
+ bannerFile
+ image/png
+
+
+ ${script-path}image.png
+ screenshot1File
+ image/png
+
+
+ ${script-path}image.png
+ iconFile
+ image/png
+
+
+
+
+
+
+ true
+ ${response}
+ =
+ true
+ appmeta
+
+
+ false
+ 1WSO2Mobile
+ =
+ true
+ provider
+
+
+ false
+ enterprise
+ =
+ true
+ markettype
+
+
+ false
+ android
+ =
+ true
+ platform
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ name
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ displayName
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ description
+
+
+ false
+ 1.1.10
+ =
+ true
+ version
+
+
+ false
+ business
+ =
+ true
+ category
+
+
+ false
+ mobileapp
+ =
+ true
+ mobileapp
+
+
+ true
+
+ =
+ true
+ visibility
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/asset/mobileapp
+ POST
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ "ok" : "true", "message" : "Asset created."
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+ false
+ id
+ "id" : "(.*)"
+ $1$
+
+
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/lifecycle/${encoded}/mobileapp/${id}
+ PUT
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ '${mobile-app}' mobileapp submitted for review successfully
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+ false
+ id
+ "id":"(.*)"
+ $1$
+
+
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobile/delete/${id}
+ DELETE
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/logout
+ GET
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ false
+ true
+ false
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+
+
+
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+
+
+
+ true
+
+
+
+ false
+
+ saveConfig
+
+
+ true
+ true
+ true
+
+ true
+ true
+ true
+ true
+ false
+ true
+ true
+ false
+ false
+ false
+ true
+ false
+ false
+ false
+ true
+ 0
+ true
+ true
+ true
+
+
+
+
+
+
+
+ continue
+
+ false
+ 1
+
+ 1
+ 1
+ 1443769286000
+ 1443769286000
+ false
+
+
+
+
+
+ false
+
+
+ import org.apache.jmeter.services.FileServer;
+
+String basePath = FileServer.getFileServer().getBaseDir() + File.separator;
+vars.put("script-path", basePath);
+
+
+
+
+
+
+ var encoded = encodeURIComponent('Submit for Review');
+vars.put("encoded", encoded);
+ javascript
+
+
+
+
+ true
+
+
+
+ 12
+
+ 1
+ id
+ #
+ false
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ publisher
+ GET
+ true
+ false
+ true
+ false
+ false
+
+
+
+
+
+ SAMLRequest
+ //input[@type='hidden'][@name='SAMLRequest']/@value
+ false
+ true
+ false
+
+
+
+
+ RelayState
+ //input[@type='hidden'][@name='RelayState']/@value
+ false
+ true
+ false
+
+
+
+
+ SSOAuthSessionID
+ //input[@type='hidden'][@name='SSOAuthSessionID']/@value
+ false
+ true
+ false
+
+
+
+
+
+
+
+ true
+ ${RelayState}
+ =
+ true
+ RelayState
+
+
+ true
+ ${SAMLRequest}
+ =
+ true
+ SAMLRequest
+
+
+ true
+ ${SSOAuthSessionID}
+ =
+ true
+ SSOAuthSessionID
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ samlsso
+ POST
+ true
+ false
+ true
+ false
+ HttpClient4
+ false
+
+
+
+
+
+ sessionDataKey
+ //input[@type='hidden'][@name='sessionDataKey']/@value
+ false
+ true
+ false
+ all
+
+
+
+
+
+
+
+ false
+ ${RelayState}
+ =
+ true
+ RelayState
+
+
+ false
+ ${sessionDataKey}
+ =
+ true
+ sessionDataKey
+
+
+ false
+ ${username}@${domain_name}
+ =
+ true
+ username
+
+
+ false
+ ${password}
+ =
+ true
+ password
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ commonauth
+ GET
+ true
+ false
+ true
+ false
+ false
+
+
+
+
+
+ RelayState1
+ //input[@type='hidden'][@name='RelayState']/@value
+ false
+ true
+ false
+
+
+
+
+ SAMLResponse
+ //input[@type='hidden'][@name='SAMLResponse']/@value
false
true
false
-
-
- RelayState
- //input[@type='hidden'][@name='RelayState']/@value
- false
- true
- false
-
+
+
+ You are now redirected back to
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ true
+ ${RelayState1}
+ =
+ true
+ RelayState
+
+
+ true
+ ${SAMLResponse}
+ =
+ true
+ SAMLResponse
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ publisher/acs
+ POST
+ true
+ false
+ true
+ false
+ false
+
+
+
+
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ /publisher/csrf.js
+ GET
+ true
+ false
+ true
+ false
+ false
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+
+ /publisher/csrf.js
+ POST
+ true
+ false
+ true
+ false
+ false
+
+
+
+
+
+
+ FETCH-CSRF-TOKEN
+ 1
+
+
+
-
-
- SSOAuthSessionID
- //input[@type='hidden'][@name='SSOAuthSessionID']/@value
- false
- true
- false
-
+
+ false
+ X-CSRF-Token
+ X-CSRF-Token:(.*)
+ $1$
+ no_token
+
+
-
+
+
+
+
+ ${script-path}test.apk
+ file
+ application/vnd.android.package-archive,.apk
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobileapp/upload
+ POST
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+ false
+ response
+ (?s)(^.*)
+ $1$
+
+ 1
+
+
+
+
+ "package" : "com.apkpure.aegon", "version" : "1.1.10"
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobile/isexist?name=${mobile-app}
+ GET
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ {"isExist" : false}
+
+ Assertion.response_data
+ false
+ 8
+
+
+
+
+
+
+
+ ${script-path}image.png
+ bannerFile
+ image/png
+
+
+ ${script-path}image.png
+ screenshot1File
+ image/png
+
+
+ ${script-path}image.png
+ iconFile
+ image/png
+
+
+
-
+
true
- ${RelayState}
+ ${response}
+ =
+ true
+ appmeta
+
+
+ false
+ 1WSO2Mobile
+ =
+ true
+ provider
+
+
+ false
+ enterprise
+ =
+ true
+ markettype
+
+
+ false
+ android
+ =
+ true
+ platform
+
+
+ false
+ ${invalid-mobile-app}
+ =
+ true
+ name
+
+
+ false
+ ${invalid-mobile-app}
=
true
- RelayState
+ displayName
-
- true
- ${SAMLRequest}
+
+ false
+ ${invalid-mobile-app}
=
true
- SAMLRequest
+ description
-
+
+ false
+ 1.1.10
+ =
+ true
+ version
+
+
+ false
+ business
+ =
+ true
+ category
+
+
+ false
+ mobileapp
+ =
+ true
+ mobileapp
+
+
true
- ${SSOAuthSessionID}
+
=
true
- SSOAuthSessionID
+ visibility
@@ -1417,59 +2435,138 @@ vars.put("encoded", encoded);
https
-
- samlsso
+ UTF-8
+ publisher/api/asset/mobileapp
POST
true
false
true
- false
- HttpClient4
+ true
false
-
-
- sessionDataKey
- //input[@type='hidden'][@name='sessionDataKey']/@value
- false
- true
- false
- all
-
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ "Special characters found in name"
+
+ Assertion.response_data
+ false
+ 16
+
-
+
+
+
+
+ ${script-path}image.png
+ bannerFile
+ image/png
+
+
+ ${script-path}image.png
+ screenshot1File
+ image/png
+
+
+ ${script-path}image.png
+ iconFile
+ image/png
+
+
+
-
+
+ true
+ ${response}
+ =
+ true
+ appmeta
+
+
false
- ${RelayState}
+ 1WSO2Mobile
=
true
- RelayState
+ provider
-
+
false
- ${sessionDataKey}
+ enterprise
=
true
- sessionDataKey
+ markettype
-
+
false
- ${username}@${domain_name}
+ android
=
true
- username
+ platform
-
+
false
- ${password}
+ ${mobile-app}
=
true
- password
+ name
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ displayName
+
+
+ false
+ ${mobile-app}
+ =
+ true
+ description
+
+
+ false
+ 1.1.10
+ =
+ true
+ version
+
+
+ false
+ business
+ =
+ true
+ category
+
+
+ false
+ mobileapp
+ =
+ true
+ mobileapp
+
+
+ true
+
+ =
+ true
+ visibility
@@ -1478,89 +2575,145 @@ vars.put("encoded", encoded);
https
-
- commonauth
- GET
+ UTF-8
+ publisher/api/asset/mobileapp
+ POST
true
false
true
- false
+ true
false
-
-
- RelayState1
- //input[@type='hidden'][@name='RelayState']/@value
- false
- true
- false
-
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
-
-
- SAMLResponse
- //input[@type='hidden'][@name='SAMLResponse']/@value
- false
- true
- false
-
+
+
+ "ok" : "true", "message" : "Asset created."
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+ false
+ id
+ "id" : "(.*)"
+ $1$
+
+
+
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/lifecycle/${encoded}/mobileapp/${id}
+ PUT
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
- You are now redirected back to
+ '${mobile-app}' mobileapp submitted for review successfully
Assertion.response_data
false
16
+
+ false
+ id
+ "id":"(.*)"
+ $1$
+
+
+
+
-
+
-
-
- true
- ${RelayState1}
- =
- true
- RelayState
-
-
- true
- ${SAMLResponse}
- =
- true
- SAMLResponse
-
-
+
${server}
${port}
https
-
- publisher/acs
- POST
+ UTF-8
+ publisher/api/lifecycle/Approve/mobileapp/${id}
+ PUT
true
false
true
- false
+ true
false
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
-
+
+ '${mobile-app}' mobileapp approved successfully
+
Assertion.response_data
false
16
-
+
@@ -1569,18 +2722,50 @@ vars.put("encoded", encoded);
https
-
- /publisher/csrf.js
- GET
+ UTF-8
+ publisher/api/lifecycle/${encoded}/mobileapp/${id}
+ PUT
true
false
true
- false
+ true
false
-
-
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+ Cannot perform action 'Submit for Review'
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
+ 500
+
+ Assertion.response_code
+ true
+ 1
+
+
+
+
@@ -1589,13 +2774,13 @@ vars.put("encoded", encoded);
https
-
- /publisher/csrf.js
- POST
+ UTF-8
+ publisher/api/lifecycle/Publish/mobileapp/${id}
+ PUT
true
false
true
- false
+ true
false
@@ -1603,32 +2788,27 @@ vars.put("encoded", encoded);
- FETCH-CSRF-TOKEN
- 1
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
-
- false
- X-CSRF-Token
- X-CSRF-Token:(.*)
- $1$
- no_token
-
-
+
+
+ '${mobile-app}' mobileapp published successfully
+
+ Assertion.response_data
+ false
+ 16
+
-
-
-
-
- ${script-path}test.apk
- file
- application/vnd.android.package-archive,.apk
-
-
-
+
@@ -1638,8 +2818,8 @@ vars.put("encoded", encoded);
https
UTF-8
- publisher/api/mobileapp/upload
- POST
+ publisher/api/lifecycle/Deprecate/mobileapp/${id}
+ PUT
true
false
true
@@ -1661,18 +2841,9 @@ vars.put("encoded", encoded);
-
- false
- response
- (?s)(^.*)
- $1$
-
- 1
-
-
- "package" : "com.apkpure.aegon", "version" : "1.1.10"
+ '${mobile-app}' mobileapp deprecated successfully
Assertion.response_data
false
@@ -1680,7 +2851,7 @@ vars.put("encoded", encoded);
-
+
@@ -1690,8 +2861,8 @@ vars.put("encoded", encoded);
https
UTF-8
- publisher/api/mobile/isexist?name=${mobile-app}
- GET
+ publisher/api/lifecycle/Retire/mobileapp/${id}
+ PUT
true
false
true
@@ -1715,15 +2886,15 @@ vars.put("encoded", encoded);
- {"isExist" : false}
+ '${mobile-app}' mobileapp retired successfully
Assertion.response_data
false
- 8
+ 16
-
+
@@ -1775,21 +2946,21 @@ vars.put("encoded", encoded);
false
- ${invalid-mobile-app}
+ ${mobile-app}
=
true
name
false
- ${invalid-mobile-app}
+ ${mobile-app}
=
true
displayName
false
- ${invalid-mobile-app}
+ ${mobile-app}
=
true
description
@@ -1855,7 +3026,7 @@ vars.put("encoded", encoded);
- "Special characters found in name"
+ App with identifer com.apkpure.aegon and version 1.1.10 already exists
Assertion.response_data
false
@@ -1863,7 +3034,102 @@ vars.put("encoded", encoded);
-
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobile/delete/${id}
+ DELETE
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+
+
+
+
+ ${script-path}test.apk
+ file
+ application/vnd.android.package-archive,.apk
+
+
+
+
+
+
+ ${server}
+ ${port}
+
+
+ https
+ UTF-8
+ publisher/api/mobileapp/upload
+ POST
+ true
+ false
+ true
+ true
+ false
+
+
+
+
+
+
+ X-CSRF-Token
+ ${X-CSRF-Token}
+
+
+ X-Requested-With
+ XmlHttpRequest
+
+
+
+
+
+ false
+ response
+ (?s)(^.*)
+ $1$
+
+ 1
+
+
+
+
+ "package" : "com.apkpure.aegon", "version" : "1.1.10"
+
+ Assertion.response_data
+ false
+ 16
+
+
+
+
diff --git a/modules/integration/tests-integration/src/test/resources/jmeter-scripts/NotificationManagementAPI.jmx b/modules/integration/tests-integration/src/test/resources/jmeter-scripts/NotificationManagementAPI.jmx
index ced0e6a2..f1c88d16 100644
--- a/modules/integration/tests-integration/src/test/resources/jmeter-scripts/NotificationManagementAPI.jmx
+++ b/modules/integration/tests-integration/src/test/resources/jmeter-scripts/NotificationManagementAPI.jmx
@@ -776,7 +776,7 @@ vars.put("base64encodedId",new String(encryptedId));
- "DEVICE_LOCATION operation did fail to execute on device androiddevice${DeviceID} with identifier notifiction_device"
+ DEVICE_LOCATION operation failed to execute on device androiddevice${DeviceID}
Assertion.response_data
false
@@ -1364,7 +1364,7 @@ vars.put("base64encodedId",new String(encryptedId));
- "DEVICE_LOCATION operation did fail to execute on device androiddevice${DeviceID} with identifier notifiction_device"
+ DEVICE_LOCATION operation failed to execute on device androiddevice${DeviceID}
Assertion.response_data
false
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-sense-enrollment-payloads.json b/modules/integration/tests-integration/src/test/resources/payloads/android-sense-enrollment-payloads.json
new file mode 100644
index 00000000..879be2d4
--- /dev/null
+++ b/modules/integration/tests-integration/src/test/resources/payloads/android-sense-enrollment-payloads.json
@@ -0,0 +1,63 @@
+{
+ "PUBLISH_DATA": [{
+ "event": {
+ "metaData": {
+ "owner": "admin",
+ "deviceId": "AS101",
+ "type": "battery",
+ "timestamp": 1494315475
+ },
+ "payloadData": {
+ "battery": 4,
+ "battery_state": "abc",
+ "battery_status": 90,
+ "battery_temperature": 100,
+ "gps_lat": 4.504343,
+ "gps_long": 4.504343,
+ "accelerometer_x": 6.6,
+ "accelerometer_y": 2.3,
+ "accelerometer_z": 4.5,
+ "speed_limit": 9.8,
+ "turn_way": "data5",
+ "magnetic_x": 8.9,
+ "magnetic_y": 6.6,
+ "magnetic_z": 6.6,
+ "gyroscope_x": 6.6,
+ "gyroscope_y": 8.9,
+ "gyroscope_z": 9.8,
+ "light": 2.3,
+ "pressure": 8.9,
+ "proximity": 6.6,
+ "gravity_x": 2.3,
+ "gravity_y": 6.6,
+ "gravity_z": 2.3,
+ "rotation_x": 6.6,
+ "rotation_y": 4.5,
+ "rotation_z": 6.6,
+ "word": "data1",
+ "word_sessionId": "data2",
+ "word_status": "data1",
+ "beacon_major": 70,
+ "beacon_minor": 45,
+ "beacon_proximity": "data4",
+ "beacon_uuid": 4,
+ "call_number": "data3",
+ "call_type": "data3",
+ "call_start_time": 4354643,
+ "call_end_time": 4354643,
+ "screen_state": "data1",
+ "audio_playing": true,
+ "headset_on": true,
+ "music_volume": 4,
+ "activity_type": 50,
+ "confidence": 45,
+ "sms_number": "data2",
+ "application_name": "data1",
+ "action": "data5",
+ "data_type": "data3",
+ "data_sent": 323232,
+ "data_received": 645565
+ }
+ }
+ }]
+}
\ 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 bdc46f60..1c58a477 100644
--- a/modules/integration/tests-integration/src/test/resources/testng.xml
+++ b/modules/integration/tests-integration/src/test/resources/testng.xml
@@ -89,6 +89,11 @@
+
+
+
+
+