From ae9d376c78402fa91b71a5db30d9a5949ddd34ba Mon Sep 17 00:00:00 2001 From: gimhan_minion Date: Thu, 16 Feb 2023 03:49:36 +0530 Subject: [PATCH] Add integration test to iot-community --- integration-test/iot-community/pom.xml | 238 ++++++ .../iot/integration/common/AssertUtil.java | 49 ++ .../iot/integration/common/Constants.java | 510 ++++++++++++ .../iot/integration/common/IOTHttpClient.java | 189 +++++ .../iot/integration/common/IOTResponse.java | 45 + .../iot/integration/common/OAuthUtil.java | 84 ++ .../integration/common/PayloadGenerator.java | 69 ++ .../iot/integration/common/RestClient.java | 221 +++++ .../wso2/iot/integration/common/TestBase.java | 102 +++ .../extensions/AnalyticsServerExtension.java | 83 ++ .../extensions/BrokerServerExtension.java | 85 ++ .../CarbonServerManagerExtension.java | 428 ++++++++++ .../extensions/CustomTestServerManager.java | 182 ++++ .../common/extensions/IOTServerExtension.java | 88 ++ .../DeviceMgtCoreAPIJmeterTestCase.java | 47 ++ .../src/test/resources/automation.xml | 225 +++++ .../src/test/resources/automationSchema.xsd | 565 +++++++++++++ .../modules/addressing-1.6.1-wso2v20.mar | Bin 0 -> 31342 bytes .../src/test/resources/filters.txt | 23 + .../src/test/resources/instrumentation.txt | 8 + .../jmeter-scripts/DeviceMgtCoreTestPlan.jmx | 788 ++++++++++++++++++ .../keystores/products/client-truststore.jks | Bin 0 -> 100420 bytes .../keystores/products/client-truststores.jks | Bin 0 -> 101446 bytes .../keystores/products/wso2carbon.jks | Bin 0 -> 98772 bytes .../keystores/products/wso2certs.jks | Bin 0 -> 9521 bytes .../resources/keystores/products/wso2mdm.jks | Bin 0 -> 9485 bytes .../keystores/stratos/client-truststore.jks | Bin 0 -> 100420 bytes .../keystores/stratos/client-truststores.jks | Bin 0 -> 101446 bytes .../keystores/stratos/wso2carbon.jks | Bin 0 -> 98772 bytes .../resources/keystores/stratos/wso2certs.jks | Bin 0 -> 9521 bytes .../resources/keystores/stratos/wso2emm.jks | Bin 0 -> 4993 bytes .../src/test/resources/log4j.properties | 37 + .../src/test/resources/testng-server-mgt.xml | 24 + .../src/test/resources/testng.xml | 37 + integration-test/pom.xml | 39 + pom.xml | 255 ++++++ 36 files changed, 4421 insertions(+) create mode 100644 integration-test/iot-community/pom.xml create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/AssertUtil.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/Constants.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTResponse.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/RestClient.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/TestBase.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CarbonServerManagerExtension.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java create mode 100644 integration-test/iot-community/src/test/java/org/wso2/iot/integration/jmeter/DeviceMgtCoreAPIJmeterTestCase.java create mode 100644 integration-test/iot-community/src/test/resources/automation.xml create mode 100644 integration-test/iot-community/src/test/resources/automationSchema.xsd create mode 100644 integration-test/iot-community/src/test/resources/client/modules/addressing-1.6.1-wso2v20.mar create mode 100644 integration-test/iot-community/src/test/resources/filters.txt create mode 100644 integration-test/iot-community/src/test/resources/instrumentation.txt create mode 100644 integration-test/iot-community/src/test/resources/jmeter-scripts/DeviceMgtCoreTestPlan.jmx create mode 100644 integration-test/iot-community/src/test/resources/keystores/products/client-truststore.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/products/client-truststores.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/products/wso2carbon.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/products/wso2certs.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/products/wso2mdm.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/stratos/client-truststore.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/stratos/client-truststores.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/stratos/wso2carbon.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/stratos/wso2certs.jks create mode 100644 integration-test/iot-community/src/test/resources/keystores/stratos/wso2emm.jks create mode 100644 integration-test/iot-community/src/test/resources/log4j.properties create mode 100644 integration-test/iot-community/src/test/resources/testng-server-mgt.xml create mode 100644 integration-test/iot-community/src/test/resources/testng.xml create mode 100644 integration-test/pom.xml diff --git a/integration-test/iot-community/pom.xml b/integration-test/iot-community/pom.xml new file mode 100644 index 0000000..71974af --- /dev/null +++ b/integration-test/iot-community/pom.xml @@ -0,0 +1,238 @@ + + + + + io.entgra.product.community + integration-test + 5.1.3-SNAPSHOT + ../pom.xml + + + 4.0.0 + io.entgra.product.community.iot.test.integration + Entgra IoT Community - Integration Test Module + Integration Tests for Entgra IoT Community Product + jar + + + + + maven-surefire-plugin + false + + -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m + + + src/test/resources/testng-server-mgt.xml + src/test/resources/testng.xml + + + ${skipTests} + + + + maven.test.haltafterfailure + false + + + java.io.tmpdir + ${project.build.directory}/ + + + carbon.zip + + ${basedir}/../../distribution/iot-community/target/${entgra-iot-community}.zip + + + + framework.resource.location + + ${basedir}/src/test/resources/ + + + + server.list + + IOT + + + + usedefaultlisteners + false + + ${project.build.directory}/security-verifier/ + ${basedir}/src/test/resources/instrumentation.txt + ${basedir}/src/test/resources/filters.txt + + ${basedir}/target + + + + maven-dependency-plugin + + + copy-secVerifier + compile + + copy-dependencies + + + ${project.build.directory}/security-verifier + aar + SecVerifier + true + + + + + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + test-jar + + + + + + maven-resources-plugin + 2.6 + + + copy-resources-jks + compile + + copy-resources + + + ${basedir}/src/test/resources/keystores/products + + + + + ${project.build.directory}/tobeCopied/${entgra-iot-community}/repository/resources/security/ + + + **/*.jks + + + + + + + copy-stratos-jks + compile + + copy-resources + + + ${basedir}/src/test/resources/keystores/stratos + + + + + ${project.build.directory}/tobeCopied/${entgra-iot-community}/repository/resources/security/ + + + **/*.jks + + + + + + + copy-axis2files + compile + + copy-resources + + + ${basedir}/src/test/resources/axis2config + + + + + ${project.build.directory}/tobeCopied/${entgra-iot-community}/repository/conf/axis2/ + + + **/*.xml + + + + + + + copy-resources-mar + compile + + copy-resources + + + ${basedir}/src/test/resources/client/modules + + + + + ${project.build.directory}/tobeCopied/${entgra-iot-community}/repository/deployment/client/modules + + + **/*.mar + + + + + + + + + + + + + org.wso2.carbon.automation + org.wso2.carbon.automation.engine + + + org.wso2.carbon.automation + org.wso2.carbon.automation.test.utils + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.extensions + + + com.google.code.gson + gson + + + org.wso2.carbon.automation + org.wso2.carbon.automation.extensions + + + + + false + + + diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/AssertUtil.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/AssertUtil.java new file mode 100644 index 0000000..8736739 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/AssertUtil.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.testng.Assert; + +/** + * This class contains methods to make assertions easier and which are not available out of the box, from testng. + */ +public class AssertUtil { + /** + * This can be used to compare if to json strings are matched or not. + * + * @param expectedJsonPayload the expected json string. + * @param realPayload real json string. + * @param mustMatch If the real and expected must match, in order to become the test successful or not. + */ + public static void jsonPayloadCompare(String expectedJsonPayload, String realPayload, boolean mustMatch) { + JsonElement jsonElement = new JsonParser().parse(expectedJsonPayload); + JsonObject expectedPayloadObject = jsonElement.getAsJsonObject(); + jsonElement = new JsonParser().parse(realPayload); + JsonObject realPayloadObject = jsonElement.getAsJsonObject(); + if (mustMatch) { + Assert.assertTrue(realPayloadObject.equals(expectedPayloadObject)); + } else { + Assert.assertFalse(realPayloadObject.equals(expectedPayloadObject)); + } + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/Constants.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/Constants.java new file mode 100644 index 0000000..c1ec412 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/Constants.java @@ -0,0 +1,510 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +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"; + public static final String AUTOMATION_CONTEXT = "IOT"; + public static final String APPLICATION_JSON = "application/json"; + public static final String APPLICATION_ZIP = "application/zip"; + public static final String APPLICATION_URL_ENCODED = "application/x-www-form-urlencoded"; + public static final String OAUTH_CLIENT_ID = "client_id"; + public static final String OAUTH_CLIENT_SECRET = "client_secret"; + public static final String OAUTH_ACCESS_TOKEN = "access_token"; + public static final String SCOPE = "scope"; + public static final String ANDROID_DEVICE_TYPE = "android"; + public static final String HTTP_METHOD_POST = "POST"; + public static final String HTTP_METHOD_PUT = "PUT"; + public static final String HTTP_METHOD_GET = "GET"; + public static final String HTTP_METHOD_DELETE = "DELETE"; + public static final String DEVICE_IDENTIFIER_KEY = "deviceIdentifier"; + public static final String DEVICE_IDENTIFIERS_KEY = "deviceIDs"; + 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 int HTTPS_ANALYTICS_PORT = 9445; + + public static final String HTTPS = "https"; + public static final String HTTP = "http"; + + public static final int HTTPS_GATEWAY_PORT = 8243; + public static final int HTTP_GATEWAY_PORT = 8280; + + public static final class APIApplicationRegistration { + public static final String API_APP_REGISTRATION_ENDPOINT = "/api-application-registration/register"; + 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:read 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 perm:admin:device-type perm:device-types:events " + + "perm:device-types:events:view perm:device-types:types perm:device:enroll perm:device:disenroll " + + + "perm:device:modify perm:device:operations perm:device:publish-event perm:devices:operations " + + "perm:devices:operations perm:firealarm:enroll "; + + public static final String OAUTH_TOKEN_PAYLOAD = "username=admin&password=admin" + + MULTI_TENANT_OAUTH_TOKEN_PAYLOAD; + private static StringBuffer dynamicClientPayloadBuffer = new StringBuffer(); + public static final String API_APP_REGISTRATION_PAYLOAD = dynamicClientPayloadBuffer.append("{ \n" + + + " \"applicationName\":\"app_123456\",\n" + + " \"isAllowedToAllDomains\":false,\n" + + + " \"tags\":[\"android\", \"device_management\"],\n" + + " \"isMappingAnExistingOAuthApp\":false\n" + + "}") + .toString(); + public static final String PERMISSION_LIST = + "appm:read appm:subscribe 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:device-type " + + "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:events perm:device-types:events:view " + + "perm:device-types:features perm:device-types:types perm:device:disenroll perm:device:enroll " + + "perm:device:modify perm:device:operations perm:device:publish-event " + + "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:firealarm:enroll 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(); + } + } + + public static final class AndroidEnrollment { + public static final String ENROLLMENT_PAYLOAD_FILE_NAME = "android-enrollment-payloads.json"; + public static final String ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME = "android-enrollment-response-payloads.json"; + public static final String ENROLLMENT_ENDPOINT = "/api/device-mgt/android/v1.0/devices"; + public static final String ENROLLMENT_GROUP = "android-enrollment"; + public static final String UPDATE_APPLICATION_METHOD = "UPDATE_APPLICATIONS"; + public static final String ANDROID_DEVICE_TYPE = "android"; + public static final String GET_PENDING_OPERATIONS_METHOD = "GET_PENDING_OPERATIONS"; + + private AndroidEnrollment() { + throw new AssertionError(); + } + } + + public static final class AndroidPolicy { + public static final String POLICY_RESPONSE_PAYLOAD_FILE_NAME = "android-policy-response-payloads.json"; + public static final String POLICY_ENDPOINT = "/mdm-android-agent/policy/"; + public static final String POLICY_GROUP = "android-policy"; + public static final String GET_EFFECTIVE_POLICY = "getEffectivePolicy"; + + private AndroidPolicy() { + throw new AssertionError(); + } + } + + public static final class WindowsEnrollment { + public static final String DISCOVERY_GET_URL = "/mdm-windows-agent/services/discovery/get"; + public static final String DISCOVERY_POST_URL = "/mdm-windows-agent/services/discovery/post"; + public static final String BSD_URL = "/mdm-windows-agent/services/federated/bst/authentication"; + public static final String MS_EXCEP = "/mdm-windows-agent/services/certificatepolicy/xcep"; + public static final String WINDOWS_ENROLLMENT_GROUP = "windows-enrollment"; + public static final String WSTEP_URL = "/mdm-windows-agent/services/deviceenrolment/wstep"; + public static final String SYNC_ML_URL = "/mdm-windows-agent/services/syncml/devicemanagement/request"; + public static final String DISCOVERY_POST_FILE = "windows" + File.separator + "enrollment" + File + .separator + "discovery-post.xml"; + public static final String MS_XCEP_FILE = + "windows" + File.separator + "enrollment" + File.separator + "ms_xcep.xml"; + public static final String WS_STEP_FILE = + "windows" + File.separator + "enrollment" + File.separator + "wstep.xml"; + public static final String BSD_PAYLOAD = + "{\"credentials\" : {\"username\" : \"admin\", \"email\" : \"admin@wso2.com\", " + + "\"password\" : \"admin\", \"ownership\" : \"BYOD\", " + + "\"token\" : \"cbe53efd46ec612c456540f8dfef5428\"}}"; + + private WindowsEnrollment() { + throw new AssertionError(); + } + } + + public static final class AndroidOperations { + public static final String PAYLOAD_COMMON = "[" + DEVICE_ID + "]"; + + public static final String OPERATION_PAYLOAD_FILE_NAME = "android-operation-payloads.json"; + public static final String OPERATIONS_GROUP = "operations"; + + public static final String CAMERA_OPERATION = "control-camera"; + public static final String CAMERA_OPERATION_PAYLOAD = "{\n" + " \"operation\": {\n" + + " \"enabled\": false\n" + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\" \n" + + " ]\n" + "}"; + + public static final String WIPE_DATA_OPERATION = "wipe_data"; + public static final String WIPE_DATA_OPERATION_PAYLOAD = "wipe_data"; + + public static final String INSTALL_APPS_OPERATION = "install_apps"; + public static final String NOTIFICATION_OPERATION = "notification"; + public static final String WIFI_OPERATION = "wifi"; + public static final String ENCRYPT_OPERATION = "encrypt"; + public static final String CHANGE_LOCK_OPERATION = "unlock-devices"; + public static final String PASSWORD_POLICY_OPERATION = "password_policy"; + public static final String WEB_CLIP_OPERATION = "web_clip"; + public static final String OPERATION_ENDPOINT = "/api/device-mgt/android/v1.0/admin/devices/"; + public static final String UNLOCK_ENDPOINT = "unlock-devices"; + public static final String UNLOCK_OPERATION_PAYLOAD = PAYLOAD_COMMON; + + public static final String LOCK_ENDPOINT = "lock-devices"; + public static final String LOCK_OPERATION_PAYLOAD = "{ \"deviceIDs\": [\"" + DEVICE_ID + "\"]," + + "\"operation\": { \"message\": \"string\", \"hardLockEnabled\": false }}"; + + public static final String LOCATION_ENDPOINT = "location"; + public static final String LOCATION_PAYLOAD = PAYLOAD_COMMON; + + public static final String CLEAR_PASSWORD_ENDPOINT = "clear-password"; + public static final String CLEAR_PASSWORD_PAYLOAD = PAYLOAD_COMMON; + + public static final String DEVICE_INFO_ENDPOINT = "info"; + public static final String DEVICE_INFO_PAYLOAD = "[\"" + DEVICE_ID + "\"]"; + + public static final String DEVICE_LOGCAT_ENDPOINT = "logcat"; + + public static final String ENTERPRISE_WIPE_ENDPOINT = "enterprise-wipe"; + public static final String ENTERPRISE_WIPE_PAYLOAD = PAYLOAD_COMMON; + + public static final String WIPE_DATA_ENDPOINT = "wipe"; + public static final String WIPE_DATA_PAYLOAD = "{\n" + " \"operation\": {\n" + " \"pin\": \"string\"\n" + + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; + + public static final String APPLICATION_LIST_ENDPOINT = "applications"; + public static final String APPLICATION_LIST_PAYLOAD = PAYLOAD_COMMON; + + public static final String RING_ENDPOINT = "ring"; + public static final String RING_PAYLOAD = PAYLOAD_COMMON; + + public static final String MUTE_ENDPOINT = "mute"; + 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" + "}"; + + 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\": \"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" + + " ],\n" + " \"operation\": {\n" + " \"messageText\": \"string\",\n" + + " \"messageTitle\": \"string\"\n" + " }\n" + "}"; + + public static final String WIFI_ENDPOINT = "configure-wifi"; + public static final String WIFI_PAYLOAD = "{\n" + " \"operation\": {\n" + " \"ssid\": \"string\",\n" + + " \"password\": \"string\"\n" + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + + " ]\n" + "}"; + + public static final String ENCRYPT_ENDPOINT = "encrypt-storage"; + public static final String ENCRYPT_PAYLOAD = "{\n" + " \"operation\": {\n" + " \"encrypted\": false\n" + + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; + + public static final String REBOOT_ENDPOINT = "reboot"; + public static final String REBOOT_PAYLOAD = PAYLOAD_COMMON; + ; + + public static final String CHANGE_LOCK_ENDPOINT = "change-lock-code"; + public static final String CHANGE_LOCK_PAYLOAD = "{\n" + " \"operation\": {\n" + " \"lockCode\": \"0000\"\n" + + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}\n"; + + public static final String PASSWORD_POLICY_ENDPOINT = "set-password-policy"; + public static final String PASSWORD_POLICY_PAYLOAD = "{\n" + " \"operation\": {\n" + + " \"maxFailedAttempts\": 0,\n" + " \"minLength\": 0,\n" + " \"pinHistory\": 0,\n" + + " \"minComplexChars\": 0,\n" + " \"maxPINAgeInDays\": 0,\n" + + " \"requireAlphanumeric\": false,\n" + " \"allowSimple\": false\n" + " },\n" + + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; + + public static final String WEB_CLIP_ENDPOINT = "set-webclip"; + public static final String WEB_CLIP_PAYLOAD = "{\n" + " \"operation\": {\n" + " \"identity\": \"string\",\n" + + " \"title\": \"string\",\n" + " \"type\": \"string\"\n" + " },\n" + " \"deviceIDs\": [\n" + + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; + + private AndroidOperations() { + throw new AssertionError(); + } + } + + + public static final class AndroidConfigurationManagement { + public static final String DEVICE_CONFIGURATION_GROUP = "android-config-mgt"; + 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"; + + private AndroidConfigurationManagement() { + throw new AssertionError(); + } + } + + public static final class OperationManagement { + public static final String PATH_APPS = "/apps"; + public static final String OPERATION_MANAGEMENT_GROUP = "api-policy-mgt"; + public static final String GET_DEVICE_APPS_ENDPOINT = "/mdm-admin/operations/android/"; + public static final String GET_DEVICE_OPERATIONS_ENDPOINT = "/mdm-admin/operations/android/"; + + private OperationManagement() { + throw new AssertionError(); + } + } + + public static final class MobileDeviceManagement { + public static final String MOBILE_DEVICE_MANAGEMENT_GROUP = "mobile-device-mgt"; + public static final String GET_DEVICE_COUNT_ENDPOINT = "/api/device-mgt/v1.0/devices"; + public static final String CHANGE_DEVICE_STATUS_ENDPOINT = "/api/device-mgt/v1.0/devices/"; + public static final String NO_OF_DEVICES = "1"; + public static final String GET_ALL_DEVICES_ENDPOINT = "/api/device-mgt/v1.0/devices/"; + public static final String USER_DEVICE_ENDPOINT = "user-devices"; + public static final String ADVANCE_SEARCH_ENDPOINT = "search-devices"; + public static final String ADVANCE_SEARCH_OPERATION = "ADVANCE_SEARCH"; + 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 NO_DEVICE = "{\"devices\":[],\"count\":0}"; + + private MobileDeviceManagement() { + throw new AssertionError(); + } + } + + + public static final class UserManagement { + public static final String USER_MANAGEMENT_GROUP = "user-mgt"; + public static final String USER_NAME = "username123"; + public static final String USER_ENDPOINT = "/api/device-mgt/v1.0/users"; + public static final String USER_PAYLOAD_FILE_NAME = "user-payloads.json"; + public static final String USER_RESPONSE_PAYLOAD_FILE_NAME = "user-response-payloads.json"; + public static final String GET_ROLES_METHOD = "GET_ROLES"; + public static final String RESET_PASSWORD_PAYLOAD = "RESET_PASSWORD"; + + private UserManagement() { + throw new AssertionError(); + } + + } + + public static final class RoleManagement { + public static final String ROLE_MANAGEMENT_GROUP = "role-mgt"; + public static final String ROLE_MANAGEMENT_END_POINT = "/api/device-mgt/v1.0/roles"; + public static final String ROLE_PAYLOAD_FILE_NAME = "role-payloads.json"; + public static final String ROLE_RESPONSE_PAYLOAD_FILE_NAME = "role-response-payloads.json"; + public static final String GET_FILTERED_ROLED_METHOD = "GET_FILTERED_ROLES"; + public static final String UPDATE_ROLES_METHOD = "UPDATE_USERS"; + + private RoleManagement() { + throw new AssertionError(); + } + + } + + public static final class PolicyManagement { + public static final String POLICY_MANAGEMENT_GROUP = "policy-mgt"; + public static final String ADD_POLICY_ENDPOINT = "/mdm-admin/policies/active-policy"; + public static final String POLICY_PAYLOAD_FILE_NAME = "policy-payloads.json"; + public static final String POLICY_RESPONSE_PAYLOAD_FILE_NAME = "policy-response-payloads.json"; + public static final String UPDATE_POLICY_ENDPOINT = "/mdm-admin/policies/1"; + public static final String REMOVE_POLICY_ENDPOINT = "/mdm-admin/policies/bulk-remove"; + public static final String REMOVE_POLICY_PAYLOAD_FILE_NAME = "[1]"; + public static final String VIEW_POLICY_LIST_ENDPOINT = "/api/device-mgt/v1.0/policies"; + + private PolicyManagement() { + throw new AssertionError(); + } + } + + public static final class FeatureManagement { + public static final String FEATURE_MANAGEMENT_GROUP = "feature-mgt"; + public static final String VIEW_FEATURES_ENDPOINT = "/mdm-admin/features/android"; + + private FeatureManagement() { + throw new AssertionError(); + } + } + + public static final class LicenseManagement { + public static final String LICENSE_MANAGEMENT_GROUP = "license-mgt"; + public static final String GET_LICENSE_ENDPOINT = "/mdm-admin/license/android/en_US"; + public static final String LICENSE_RESPONSE_PAYLOAD_FILE_NAME = "license-response-payloads.json"; + + private LicenseManagement() { + throw new AssertionError(); + } + + } + + public static final class ConfigurationManagement { + public static final String CONFIGURATION_MANAGEMENT_GROUP = "configuration-mgt"; + public static final String CONFIGURATION_ENDPOINT = "/mdm-admin/configuration"; + public static final String CONFIGURATION_PAYLOAD_FILE_NAME = "configuration-payloads.json"; + public static final String CONFIGURATION_RESPONSE_PAYLOAD_FILE_NAME = "configuration-response-payloads.json"; + + private ConfigurationManagement() { + throw new AssertionError(); + } + } + + public static final class NotificationManagement { + public static final String NOTIFICATION_MANAGEMENT_GROUP = "notification-mgt"; + public static final String NOTIFICATION_ENDPOINT = "/mdm-admin/notifications"; + public static final String NOTIFICATION_PAYLOAD_FILE_NAME = "notification-payloads.json"; + public static final String NOTIFICATION_RESPONSE_PAYLOAD_FILE_NAME = "notification-response-payloads.json"; + public static final String NOTIFICATION_UPDATE_ENDPOINT = "/mdm-admin/notifications/1234/NEW"; + + 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/publish-artifact/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(); + } + } + + public static final class QSGManagement { + public static final String GET_MOBILE_APPS_ENDPONT = "/api/appm/publisher/v1.1/apps/mobileapp"; + + private QSGManagement() { + throw new AssertionError(); + } + } + + public static final class VirtualFireAlarmConstants { + public static final String ENROLLMENT_ENDPOINT = "/virtual_firealarm/1.0.0/device/download"; + public static final String STATS_ENDPOINT = "/virtual_firealarm/1.0.0/device/stats"; + public static final String PAYLOAD_FILE = "virtual-fire-alarm-enrollment-payloads.json"; + public static final String ANALYTICS_ARTIFACTS_DEPLOYMENT_ENDPOINT = + "/api/device-mgt/v1.0/admin/publish-artifact/1.0.0/deploy/virtual_firealarm"; + public static final String POLICY_DATA = "POLICY_DATA"; + public static final String ACTIVATE_POLICY_ENDPOINT = "/api/device-mgt/v1.0/policies/activate-policy"; + public static final String APPLY_CHANGES_ENDPOINT = "/api/device-mgt/v1.0/policies/apply-changes"; + + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java new file mode 100644 index 0000000..4f6b518 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java @@ -0,0 +1,189 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + + +import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.contrib.ssl.EasySSLProtocolSocketFactory; +import org.apache.commons.httpclient.methods.DeleteMethod; +import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.commons.httpclient.methods.PutMethod; +import org.apache.commons.httpclient.methods.StringRequestEntity; +import org.apache.commons.httpclient.params.HttpMethodParams; +import org.apache.commons.httpclient.protocol.Protocol; +import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.io.IOException; +import java.security.GeneralSecurityException; +import java.util.HashMap; +import java.util.Map; + +/** + * This class creates a customised Http Client Class + */ +public class IOTHttpClient { + + private static final String AUTHORIZATION = "Authorization"; + private static Log log = LogFactory.getLog(IOTHttpClient.class); + private String backEndUrl; + private String authorizationString; + private Map requestHeaders = new HashMap(); + + public IOTHttpClient(String backEndUrl, String contentType, String authorization) { + + this.backEndUrl = backEndUrl; + this.requestHeaders.put(Constants.CONTENT_TYPE, contentType); + if (authorization != null || !authorization.isEmpty()) { + this.authorizationString = authorization; + this.requestHeaders.put(AUTHORIZATION, authorization); + } + } + + public String getAuthorizationString() { + return authorizationString; + } + + public void setAuthorizationString(String authorizationString) { + this.authorizationString = authorizationString; + } + + public void setHttpHeader(String headerName, String value) { + this.requestHeaders.put(headerName, value); + } + + public String getHttpHeader(String headerName) { + return this.requestHeaders.get(headerName); + } + + public void removeHttpHeader(String headerName) { + this.requestHeaders.remove(headerName); + } + + public IOTResponse post(String endpoint, String body) { + HttpClient client = new HttpClient(); + try { + ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory(); + Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT); + Protocol.registerProtocol(Constants.HTTPS, https); + String url = backEndUrl + endpoint; + PostMethod method = new PostMethod(url); + method.setRequestHeader(AUTHORIZATION, authorizationString); + StringRequestEntity requestEntity = new StringRequestEntity(body, + requestHeaders.get(Constants.CONTENT_TYPE), Constants.UTF8); + method.setRequestEntity(requestEntity); + IOTResponse iotResponse = new IOTResponse(); + iotResponse.setStatus(client.executeMethod(method)); + iotResponse.setBody(method.getResponseBodyAsString()); + return iotResponse; + + } catch (GeneralSecurityException e) { + log.error("Failure occurred at IOTResponse post for GeneralSecurityException", e); + } catch (IOException e) { + log.error("Failure occurred at IOTResponse post for IOException", e); + } + return null; + } + + public IOTResponse put(String endpoint, String body) { + HttpClient client = new HttpClient(); + try { + ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory(); + Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT); + Protocol.registerProtocol(Constants.HTTPS, https); + String url = backEndUrl + endpoint; + PutMethod method = new PutMethod(url); + method.setRequestHeader(AUTHORIZATION, authorizationString); + StringRequestEntity requestEntity = new StringRequestEntity( + body, requestHeaders.get(Constants.CONTENT_TYPE), Constants.UTF8); + method.setRequestEntity(requestEntity); + IOTResponse iotResponse = new IOTResponse(); + iotResponse.setStatus(client.executeMethod(method)); + iotResponse.setBody(method.getResponseBodyAsString()); + return iotResponse; + + } catch (GeneralSecurityException e) { + log.error("Failure occurred at IOTResponse put for GeneralSecurityException", e); + } catch (IOException e) { + log.error("Failure occurred at IOTResponse put for IO Exception", e); + } + return null; + } + + public IOTResponse get(String endpoint) { + HttpClient client = new HttpClient(); + try { + ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory(); + + Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT); + Protocol.registerProtocol(Constants.HTTPS, https); + String url = backEndUrl + endpoint; + GetMethod method = new GetMethod(url); + method.setRequestHeader(AUTHORIZATION, authorizationString); + method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, + new DefaultHttpMethodRetryHandler(3, false)); + IOTResponse iotResponse = new IOTResponse(); + iotResponse.setStatus(client.executeMethod(method)); + iotResponse.setBody(new String(method.getResponseBody())); + return iotResponse; + + } catch (GeneralSecurityException e) { + log.error("Failure occurred at IOTResponse get for GeneralSecurityException", e); + } catch (IOException e) { + log.error("Failure occurred at IOTResponse get for IOException", e); + } + + return null; + } + + public IOTResponse delete(String endpoint) { + + HttpClient client = new HttpClient(); + + try { + ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory(); + + Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT); + Protocol.registerProtocol(Constants.HTTPS, https); + + String url = backEndUrl + endpoint; + + DeleteMethod method = new DeleteMethod(url); + method.setRequestHeader(AUTHORIZATION, authorizationString); + method.setRequestHeader(Constants.CONTENT_TYPE, requestHeaders.get(Constants.CONTENT_TYPE)); + method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, + new DefaultHttpMethodRetryHandler(3, false)); + + IOTResponse iotResponse = new IOTResponse(); + iotResponse.setStatus(client.executeMethod(method)); + iotResponse.setBody(method.getResponseBodyAsString()); + return iotResponse; + + } catch (GeneralSecurityException e) { + log.error("Failure occurred at IOTResponse delete for GeneralSecurityException", e); + } catch (IOException e) { + log.error("Failure occurred at IOTResponse delete for IOException", e); + } + return null; + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTResponse.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTResponse.java new file mode 100644 index 0000000..732d5a3 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/IOTResponse.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +/** + * This class contains the functions to handle a HTTP Response + */ +public class IOTResponse { + + private int status; + private String body; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java new file mode 100644 index 0000000..2b162b1 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +import org.apache.commons.net.util.Base64; +import org.json.JSONObject; +import org.wso2.carbon.automation.test.utils.http.client.HttpResponse; + +/** + * This Util class holds method necessary to get an OAuth token. + */ +public class OAuthUtil { + + + public static String getScopes(String backendHTTPURL, String backendHTTPSURL) throws Exception { + return getOAuthTokenPair(backendHTTPURL, backendHTTPSURL).get(Constants.SCOPE).toString(); + } + + public static String getOAuthToken(String backendHTTPURL, String backendHTTPSURL) throws Exception { + return getOAuthTokenPair(backendHTTPURL, backendHTTPSURL).get(Constants.OAUTH_ACCESS_TOKEN).toString(); + } + + public static JSONObject getOAuthTokenPair(String backendHTTPURL, String backendHTTPSURL) throws Exception { + String AuthString = "Basic YWRtaW46YWRtaW4="; + RestClient client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON, AuthString); + HttpResponse oAuthData = client.post(Constants.APIApplicationRegistration.API_APP_REGISTRATION_ENDPOINT, + Constants.APIApplicationRegistration.API_APP_REGISTRATION_PAYLOAD); + JSONObject jsonObj = new JSONObject(oAuthData.getData()); + String clientId = jsonObj.get(Constants.OAUTH_CLIENT_ID).toString(); + String clientSecret = jsonObj.get(Constants.OAUTH_CLIENT_SECRET).toString(); + byte[] bytesEncoded = Base64.encodeBase64((clientId + ":" + clientSecret).getBytes()); + String basicAuthString = "Basic " + new String(bytesEncoded); + //Initiate a RestClient to get OAuth token + client = new RestClient(backendHTTPSURL, Constants.APPLICATION_URL_ENCODED, basicAuthString); + oAuthData = client.post(Constants.APIApplicationRegistration.TOKEN_ENDPOINT, + Constants.APIApplicationRegistration.OAUTH_TOKEN_PAYLOAD); + jsonObj = new JSONObject(oAuthData.getData()); + return jsonObj; + } + + /** + * To get the oauth token pair for the given auth string which is encoded in base64 format. + * @param authString encoded auth string + * @param backendHTTPURL backend http URL + * @param backendHTTPSURL backend https URL + * @return a JSON object which consist of oauth token pair + * @throws Exception Exception + */ + public static String getOAuthTokenPair(String authString, String backendHTTPURL, String backendHTTPSURL, + String username, String password) throws Exception { + RestClient client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON, "Basic " + authString); + HttpResponse oAuthData = client.post(Constants.APIApplicationRegistration.API_APP_REGISTRATION_ENDPOINT, + Constants.APIApplicationRegistration.API_APP_REGISTRATION_PAYLOAD); + JSONObject jsonObj = new JSONObject(oAuthData.getData()); + String clientId = jsonObj.get(Constants.OAUTH_CLIENT_ID).toString(); + String clientSecret = jsonObj.get(Constants.OAUTH_CLIENT_SECRET).toString(); + byte[] bytesEncoded = Base64.encodeBase64((clientId + ":" + clientSecret).getBytes()); + String basicAuthString = "Basic " + new String(bytesEncoded); + //Initiate a RestClient to get OAuth token + client = new RestClient(backendHTTPSURL, Constants.APPLICATION_URL_ENCODED, basicAuthString); + oAuthData = client.post(Constants.APIApplicationRegistration.TOKEN_ENDPOINT, + "username=" + username + "&password=" + password + Constants.APIApplicationRegistration.MULTI_TENANT_OAUTH_TOKEN_PAYLOAD); + jsonObj = new JSONObject(oAuthData.getData()); + return jsonObj.get(Constants.OAUTH_ACCESS_TOKEN).toString(); + + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java new file mode 100644 index 0000000..9f3a6ce --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import org.apache.commons.io.IOUtils; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.net.URL; + +/** + * This class is used to load the necessary payloads from payload files for integration tests. + */ +public class PayloadGenerator { + + private static final String PAYLOAD_LOCATION = "payloads/"; + private static JsonParser parser = new JsonParser(); + + public static JsonObject getJsonPayload(String fileName, String method) + throws FileNotFoundException { + URL url = PayloadGenerator.class.getClassLoader().getResource(PAYLOAD_LOCATION + fileName); + JsonObject jsonObject = parser.parse(new FileReader(url.getPath())).getAsJsonObject(); + return jsonObject.get(method).getAsJsonObject(); + } + + public static String getJsonPayloadToString(String fileName) throws IOException { + URL url = Thread.currentThread().getContextClassLoader().getResource(PAYLOAD_LOCATION + fileName); + FileInputStream fisTargetFile = new FileInputStream(new File(url.getPath())); + String returnString = IOUtils.toString(fisTargetFile, Constants.UTF8); + return returnString; + } + + /** + * Create a Json Array from a specific method in the file + * @param fileName Name of the file + * @param method Method name + * @return Json Arry created from the specific method in the file + * @throws FileNotFoundException File Not found exception + */ + public static JsonArray getJsonArray(String fileName, String method) + throws FileNotFoundException { + URL url = PayloadGenerator.class.getClassLoader().getResource(PAYLOAD_LOCATION + fileName); + JsonObject jsonObject = parser.parse(new FileReader(url.getPath())).getAsJsonObject(); + return jsonObject.get(method).getAsJsonArray(); + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/RestClient.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/RestClient.java new file mode 100644 index 0000000..c4f09f0 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/RestClient.java @@ -0,0 +1,221 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common; + +import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException; +import org.wso2.carbon.automation.test.utils.http.client.HttpRequestUtil; +import org.wso2.carbon.automation.test.utils.http.client.HttpResponse; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.ProtocolException; +import java.net.URL; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * This is the rest client that is used to calls to APIs. + */ +public class RestClient { + + private static final String AUTHORIZATION = "Authorization"; + private String backEndUrl; + private String authrizationString; + private Map requestHeaders = new HashMap(); + + public RestClient(String backEndUrl, String contentType) { + this.backEndUrl = backEndUrl; + this.requestHeaders.put(Constants.CONTENT_TYPE, contentType); + } + + public RestClient(String backEndUrl, String contentType, String authorization) { + this.backEndUrl = backEndUrl; + this.requestHeaders.put(Constants.CONTENT_TYPE, contentType); + if (authorization != null || !authorization.isEmpty()) { + this.authrizationString = authorization; + this.requestHeaders.put(AUTHORIZATION, authorization); + } + } + + public String getAuthrizationString() { + return authrizationString; + } + + public void setAuthrizationString(String authrizationString) { + this.authrizationString = authrizationString; + } + + public void setHttpHeader(String headerName, String value) { + this.requestHeaders.put(headerName, value); + } + + public String getHttpHeader(String headerName) { + return this.requestHeaders.get(headerName); + } + + public void removeHttpHeader(String headerName) { + this.requestHeaders.remove(headerName); + } + + public HttpResponse post(String endpoint, String body) throws MalformedURLException, AutomationFrameworkException { + return HttpRequestUtil.doPost(new URL(backEndUrl + endpoint), body, requestHeaders); + } + + public HttpResponse put(String endpoint, String body) throws Exception { + HttpURLConnection urlConnection = null; + try { + urlConnection = (HttpURLConnection) new URL(backEndUrl + endpoint).openConnection(); + try { + urlConnection.setRequestMethod("PUT"); + } catch (ProtocolException e) { + throw new Exception("Shouldn\'t happen: HttpURLConnection doesn\'t support POST?? " + e.getMessage(), + e); + } + + urlConnection.setDoOutput(true); + urlConnection.setDoInput(true); + urlConnection.setUseCaches(false); + urlConnection.setAllowUserInteraction(false); + Iterator entryIterator = this.requestHeaders.entrySet().iterator(); + while (entryIterator.hasNext()) { + Map.Entry sb = (Map.Entry) entryIterator.next(); + urlConnection.setRequestProperty((String) sb.getKey(), (String) sb.getValue()); + } + OutputStream outputStream = urlConnection.getOutputStream(); + try { + OutputStreamWriter sb1 = new OutputStreamWriter(outputStream, "UTF-8"); + sb1.write(body); + sb1.close(); + } catch (IOException e) { + throw new Exception("IOException while sending data " + e.getMessage(), e); + } finally { + if (outputStream != null) { + outputStream.close(); + } + } + StringBuilder sb2 = new StringBuilder(); + BufferedReader rd = null; + try { + rd = new BufferedReader( + new InputStreamReader(urlConnection.getInputStream(), Charset.defaultCharset())); + String itr; + while ((itr = rd.readLine()) != null) { + sb2.append(itr); + } + } catch (FileNotFoundException e) { + throw new Exception("IOException while reading put request data " + e.getMessage(), e); + } finally { + if (rd != null) { + rd.close(); + } + } + Iterator iterator = urlConnection.getHeaderFields().keySet().iterator(); + HashMap responseHeaders = new HashMap(); + while (iterator.hasNext()) { + String key = (String) iterator.next(); + if (key != null) { + responseHeaders.put(key, urlConnection.getHeaderField(key)); + } + } + HttpResponse httpResponse = + new HttpResponse(sb2.toString(), urlConnection.getResponseCode(), responseHeaders); + return httpResponse; + } catch (IOException e) { + throw new Exception("Connection error (Is server running at " + endpoint + " ?): " + e.getMessage(), e); + } finally { + if (urlConnection != null) { + urlConnection.disconnect(); + } + + } + } + + public HttpResponse get(String endpoint) throws Exception { + return HttpRequestUtil.doGet(backEndUrl + endpoint, requestHeaders); + } + + public HttpResponse delete(String endpoint) throws Exception { + HttpURLConnection conn = null; + + HttpResponse httpResponse1; + try { + URL url = new URL(backEndUrl + endpoint); + conn = (HttpURLConnection) url.openConnection(); + conn.setRequestMethod("DELETE"); + conn.setDoOutput(true); + conn.setReadTimeout(30000); + Iterator entryIterator = this.requestHeaders.entrySet().iterator(); + + while (entryIterator.hasNext()) { + Map.Entry rd = (Map.Entry) entryIterator.next(); + conn.setRequestProperty((String) rd.getKey(), (String) rd.getValue()); + } + + conn.connect(); + StringBuilder sb1 = new StringBuilder(); + BufferedReader rd1 = null; + + HttpResponse httpResponse; + try { + rd1 = new BufferedReader(new InputStreamReader(conn.getInputStream(), Charset.defaultCharset())); + + String ignored; + while ((ignored = rd1.readLine()) != null) { + sb1.append(ignored); + } + + httpResponse = new HttpResponse(sb1.toString(), conn.getResponseCode()); + httpResponse.setResponseMessage(conn.getResponseMessage()); + } catch (IOException e) { + rd1 = new BufferedReader(new InputStreamReader(conn.getErrorStream(), Charset.defaultCharset())); + + String line; + while ((line = rd1.readLine()) != null) { + sb1.append(line); + } + + httpResponse = new HttpResponse(sb1.toString(), conn.getResponseCode()); + httpResponse.setResponseMessage(conn.getResponseMessage()); + } finally { + if (rd1 != null) { + rd1.close(); + } + + } + + httpResponse1 = httpResponse; + } finally { + if (conn != null) { + conn.disconnect(); + } + + } + + return httpResponse1; + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/TestBase.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/TestBase.java new file mode 100644 index 0000000..e75d496 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/TestBase.java @@ -0,0 +1,102 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.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; + +import javax.xml.xpath.XPathExpressionException; + +/** + * This is the base test class that provides common details necessary for other test cases. + */ +public class TestBase { + protected AutomationContext automationContext; + protected String backendHTTPSURL; + protected String backendHTTPURL; + protected String accessTokenString; + protected String accessToken; + protected TestUserMode userMode; + + protected void init(TestUserMode userMode) throws Exception { + automationContext = new AutomationContext(Constants.AUTOMATION_CONTEXT, userMode); + String tenantDomain = automationContext.getContextTenant().getDomain(); + backendHTTPSURL = automationContext.getContextUrls().getWebAppURLHttps().replace("9443", String.valueOf(Constants + .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); + accessToken = OAuthUtil.getOAuthTokenPair(encoded, backendHTTPSURL, backendHTTPSURL, currentUser.getUserName(), + currentUser.getPassword()); + accessTokenString = "Bearer " + accessToken; + } + + protected void initPublisher(String productGroupName, String instanceName, + TestUserMode userMode) + throws XPathExpressionException { + automationContext = new AutomationContext(productGroupName, instanceName, userMode); + backendHTTPSURL = automationContext.getContextUrls().getBackEndUrl(); + } + + public String getBackendHTTPURL() { + return backendHTTPURL; + } + + public void setBackendHTTPURL(String backendHTTPURL) { + this.backendHTTPURL = backendHTTPURL; + } + + protected String getBackendHTTPSURL() throws XPathExpressionException { + return backendHTTPSURL; + } + + protected String getSessionCookie() throws Exception { + LoginLogoutClient loginLogoutClient = new LoginLogoutClient(automationContext); + return loginLogoutClient.login(); + } + + protected String getServiceURL() throws XPathExpressionException { + return automationContext.getContextUrls().getServiceUrl(); + } + + protected AutomationContext getAutomationContext() { + return automationContext; + } + + 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/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java new file mode 100644 index 0000000..a765718 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common.extensions; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; +import org.wso2.carbon.automation.engine.context.AutomationContext; +import org.wso2.carbon.automation.engine.context.ContextXpathConstants; +import org.wso2.carbon.automation.engine.context.TestUserMode; +import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension; +import org.wso2.carbon.automation.extensions.ExtensionConstants; +import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension; + +import javax.xml.xpath.XPathExpressionException; + +/** + * Test Automation server extension to start the DAS. + * This will set the carbon_home to {carbonHome}/core and port offset : 2 + */ +public class AnalyticsServerExtension extends ExecutionListenerExtension { + + private CustomTestServerManager serverManager; + private static final Log log = LogFactory.getLog(CarbonServerExtension.class); + private String executionEnvironment; + private AutomationContext automationContext; + private final String ANALYTICS_PORT_OFFSET = "2"; + + @Override + public void initiate() { + try { + automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER); + if (getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) { + getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, ANALYTICS_PORT_OFFSET); + } + serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters()); + executionEnvironment = + automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT); + + } catch (XPathExpressionException e) { + throw new RuntimeException("Error while initiating test environment", e); + } + } + + @Override + public void onExecutionStart() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + String carbonHome = serverManager.startServer("analytics"); + } + } catch (Exception e) { + throw new RuntimeException("Fail to start carbon server ", e); + } + } + + @Override + public void onExecutionFinish() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + serverManager.stopServer(); + } + } catch (Exception e) { + throw new RuntimeException("Fail to stop carbon server ", e); + } + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java new file mode 100644 index 0000000..3052044 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common.extensions; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; +import org.wso2.carbon.automation.engine.context.AutomationContext; +import org.wso2.carbon.automation.engine.context.ContextXpathConstants; +import org.wso2.carbon.automation.engine.context.TestUserMode; +import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension; +import org.wso2.carbon.automation.extensions.ExtensionConstants; +import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension; + +import javax.xml.xpath.XPathExpressionException; + +/** + * Test Automation server extension to start the Broker. + * This will set the carbon_home to {carbonHome}/core and port offset : 3 + */ +public class BrokerServerExtension extends ExecutionListenerExtension { + + private CustomTestServerManager serverManager; + private static final Log log = LogFactory.getLog(CarbonServerExtension.class); + private String executionEnvironment; + private AutomationContext automationContext; + private final String BROKER_PORT_OFFSET = "3"; + + @Override + public void initiate() { + try { + automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER); + if (getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) { + getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, BROKER_PORT_OFFSET); + } + serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters()); + executionEnvironment = + automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT); + + } catch (XPathExpressionException e) { + throw new RuntimeException("Error while initiating test environment", e); + } + } + + @Override + public void onExecutionStart() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + String carbonHome = serverManager.startServer("broker"); + log.info(carbonHome); + System.setProperty(ExtensionConstants.CARBON_HOME, carbonHome); + } + } catch (Exception e) { + throw new RuntimeException("Fail to start carbon server ", e); + } + } + + @Override + public void onExecutionFinish() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + serverManager.stopServer(); + } + } catch (Exception e) { + throw new RuntimeException("Fail to stop carbon server ", e); + } + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CarbonServerManagerExtension.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CarbonServerManagerExtension.java new file mode 100644 index 0000000..ad8423d --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CarbonServerManagerExtension.java @@ -0,0 +1,428 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common.extensions; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.filefilter.DirectoryFileFilter; +import org.apache.commons.io.filefilter.RegexFileFilter; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.automation.engine.context.AutomationContext; +import org.wso2.carbon.automation.engine.context.beans.User; +import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException; +import org.wso2.carbon.automation.engine.frameworkutils.CodeCoverageUtils; +import org.wso2.carbon.automation.engine.frameworkutils.FrameworkPathUtil; +import org.wso2.carbon.automation.engine.frameworkutils.ReportGenerator; +import org.wso2.carbon.automation.engine.frameworkutils.TestFrameworkUtils; +import org.wso2.carbon.automation.extensions.servers.utils.ArchiveExtractor; +import org.wso2.carbon.automation.extensions.servers.utils.ClientConnectionUtil; +import org.wso2.carbon.automation.extensions.servers.utils.FileManipulator; +import org.wso2.carbon.automation.extensions.servers.utils.ServerLogReader; + +import javax.xml.xpath.XPathExpressionException; +import java.io.File; +import java.io.IOException; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + + +public class CarbonServerManagerExtension { + private static final Log log = LogFactory.getLog(CarbonServerManagerExtension.class); + private Process process; + private String carbonHome; + private AutomationContext automationContext; + private ServerLogReader inputStreamHandler; + private ServerLogReader errorStreamHandler; + private boolean isCoverageEnable = false; + private String coverageDumpFilePath; + private int portOffset = 0; + private static final String SERVER_SHUTDOWN_MESSAGE = "Halting JVM"; + private static final String SERVER_STARTUP_MESSAGE = "Mgt Console URL"; + private static final long DEFAULT_START_STOP_WAIT_MS = 900000L; + private static final String CMD_ARG = "cmdArg"; + private static int defaultHttpPort = Integer.parseInt("9763"); + private static int defaultHttpsPort = Integer.parseInt("9443"); + private static final long COVERAGE_DUMP_WAIT_TIME = 30000; + + public CarbonServerManagerExtension(AutomationContext context) { + this.automationContext = context; + } + + public synchronized void startServerUsingCarbonHome(String carbonHome, Map commandMap) throws AutomationFrameworkException { + if(this.process == null) { + this.portOffset = this.checkPortAvailability(commandMap); + Process tempProcess = null; + + try { + if(!commandMap.isEmpty() && this.getPortOffsetFromCommandMap(commandMap) == 0) { + System.setProperty("carbon.home", carbonHome); + } + + File commandDir = new File(carbonHome); + log.info("Starting carbon server............. "); + String scriptName = TestFrameworkUtils.getStartupScriptFileName(carbonHome); + String[] parameters = this.expandServerStartupCommandList(commandMap); + String[] cmdArray; + if(System.getProperty("os.name").toLowerCase().contains("windows")) { + commandDir = new File(carbonHome + File.separator + "bin"); + cmdArray = new String[]{"cmd.exe", "/c", scriptName + ".bat"}; + cmdArray = this.mergePropertiesToCommandArray(parameters, cmdArray); + tempProcess = Runtime.getRuntime().exec(cmdArray, (String[])null, commandDir); + } else { + cmdArray = new String[]{"sh", "bin/" + scriptName + ".sh"}; + cmdArray = this.mergePropertiesToCommandArray(parameters, cmdArray); + tempProcess = Runtime.getRuntime().exec(cmdArray, (String[])null, commandDir); + } + + this.errorStreamHandler = new ServerLogReader("errorStream", tempProcess.getErrorStream()); + this.inputStreamHandler = new ServerLogReader("inputStream", tempProcess.getInputStream()); + this.inputStreamHandler.start(); + this.errorStreamHandler.start(); + Runtime.getRuntime().addShutdownHook(new Thread() { + public void run() { + try { + CarbonServerManagerExtension.this.serverShutdown(CarbonServerManagerExtension.this.portOffset); + } catch (Exception var2) { + CarbonServerManagerExtension.log.error("Error while server shutdown ..", var2); + } + + } + }); + ClientConnectionUtil.waitForPort(defaultHttpPort + this.portOffset, DEFAULT_START_STOP_WAIT_MS, false, (String)this + .automationContext.getInstance().getHosts().get("default")); + long time = System.currentTimeMillis() + 60000L; + +// while(true) { +// if(this.inputStreamHandler.getOutput().contains("Mgt Console URL") || System.currentTimeMillis() >= time) { +// int httpsPort = defaultHttpsPort + this.portOffset; +// String backendURL = this.automationContext.getContextUrls().getSecureServiceUrl().replaceAll("(:\\d+)", ":" + httpsPort); +// User superUser = this.automationContext.getSuperTenant().getTenantAdmin(); +// ClientConnectionUtil.waitForLogin(backendURL, superUser); +// log.info("Server started successfully."); +// break; +// } +// } + int httpsPort = defaultHttpsPort + this.portOffset; + String backendURL = this.automationContext.getContextUrls().getSecureServiceUrl().replaceAll("(:\\d+)", ":" + httpsPort); + User superUser = this.automationContext.getSuperTenant().getTenantAdmin(); + ClientConnectionUtil.waitForLogin(backendURL, superUser); + } catch (XPathExpressionException | IOException var13) { + throw new IllegalStateException("Unable to start server", var13); + } + + this.process = tempProcess; + } + } + + private int checkPortAvailability(Map commandMap) throws AutomationFrameworkException { + int portOffset = this.getPortOffsetFromCommandMap(commandMap); + if(ClientConnectionUtil.isPortOpen(defaultHttpPort + portOffset)) { + throw new AutomationFrameworkException("Unable to start carbon server on port " + (defaultHttpPort + portOffset) + " : Port already in use"); + } else if(ClientConnectionUtil.isPortOpen(defaultHttpsPort + portOffset)) { + throw new AutomationFrameworkException("Unable to start carbon server on port " + (defaultHttpsPort + portOffset) + " : Port already in use"); + } else { + return portOffset; + } + } + + private String[] mergePropertiesToCommandArray(String[] parameters, String[] cmdArray) { + if(parameters != null) { + cmdArray = this.mergerArrays(cmdArray, parameters); + } + + return cmdArray; + } + + /** + * Unzip carbon zip file and return the carbon home. Based on the coverage configuration in automation.xml + * This method will inject jacoco agent to the carbon server startup scripts. + * + * @param carbonServerZipFile - Carbon zip file, which should be specified in test module pom + * @return - carbonHome - carbon home + * @throws IOException - If pack extraction fails + */ + public synchronized String setUpCarbonHome(String carbonServerZipFile) throws IOException, AutomationFrameworkException { + if(this.process != null) { + return this.carbonHome; + } else { + int indexOfZip = carbonServerZipFile.lastIndexOf(".zip"); + if(indexOfZip == -1) { + throw new IllegalArgumentException(carbonServerZipFile + " is not a zip file"); + } else { + String fileSeparator = File.separator.equals("\\")?"\\":"/"; + if(fileSeparator.equals("\\")) { + carbonServerZipFile = carbonServerZipFile.replace("/", "\\"); + } + + String extractedCarbonDir = carbonServerZipFile.substring(carbonServerZipFile.lastIndexOf(fileSeparator) + 1, indexOfZip); + FileManipulator.deleteDir(extractedCarbonDir); + String extractDir = "carbontmp" + System.currentTimeMillis(); + String baseDir = System.getProperty("basedir", ".") + File.separator + "target"; + log.info("Extracting carbon zip file.. "); + (new ArchiveExtractor()).extractFile(carbonServerZipFile, baseDir + File.separator + extractDir); + this.carbonHome = (new File(baseDir)).getAbsolutePath() + File.separator + extractDir + File.separator + extractedCarbonDir; + + try { + this.isCoverageEnable = Boolean.parseBoolean(this.automationContext.getConfigurationValue("//coverage")); + } catch (XPathExpressionException var8) { + throw new AutomationFrameworkException("Coverage configuration not found in automation.xml", var8); + } + + if(this.isCoverageEnable) { + this.instrumentForCoverage(); + } + + return this.carbonHome; + } + } + } + + public synchronized void serverShutdown(int portOffset) throws AutomationFrameworkException { + if(this.process != null) { + log.info("Shutting down server.."); + if(ClientConnectionUtil.isPortOpen(Integer.parseInt("9443") + portOffset)) { + int httpsPort = defaultHttpsPort + portOffset; + String url = null; + + try { + url = this.automationContext.getContextUrls().getBackEndUrl(); + } catch (XPathExpressionException var10) { + throw new AutomationFrameworkException("Get context failed", var10); + } + + String backendURL = url.replaceAll("(:\\d+)", ":" + httpsPort); + + try { + ClientConnectionUtil.sendForcefulShutDownRequest(backendURL, this.automationContext.getSuperTenant().getContextUser().getUserName(), this.automationContext.getSuperTenant().getContextUser().getPassword()); + } catch (AutomationFrameworkException var8) { + throw new AutomationFrameworkException("Get context failed", var8); + } catch (XPathExpressionException var9) { + throw new AutomationFrameworkException("Get context failed", var9); + } + + long time = System.currentTimeMillis() + 300000L; + +// while(!this.inputStreamHandler.getOutput().contains("Halting JVM") && System.currentTimeMillis() < time) { +// ; +// } + + log.info("Server stopped successfully..."); + } + + this.inputStreamHandler.stop(); + this.errorStreamHandler.stop(); + this.process.destroy(); + this.process = null; + if(this.isCoverageEnable) { + try { + log.info("Generating Jacoco code coverage..."); + this.generateCoverageReport(new File(this.carbonHome + File.separator + "repository" + + File.separator + "components" + File.separator + "plugins" + File.separator)); + } catch (IOException var7) { + log.error("Failed to generate code coverage ", var7); + throw new AutomationFrameworkException("Failed to generate code coverage ", var7); + } + } + + if(portOffset == 0) { + System.clearProperty("carbon.home"); + } + } + + } + + private void generateCoverageReport(File classesDir) throws IOException, AutomationFrameworkException { + checkJacocoDataFileSizes(FrameworkPathUtil.getJacocoCoverageHome()); + CodeCoverageUtils.executeMerge(FrameworkPathUtil.getJacocoCoverageHome(), FrameworkPathUtil.getCoverageMergeFilePath()); + ReportGenerator reportGenerator = new ReportGenerator(new File(FrameworkPathUtil.getCoverageMergeFilePath()), classesDir, new File(CodeCoverageUtils.getJacocoReportDirectory()), (File)null); + reportGenerator.create(); + log.info("Jacoco coverage dump file path : " + FrameworkPathUtil.getCoverageDumpFilePath()); + log.info("Jacoco class file path : " + classesDir); + log.info("Jacoco coverage HTML report path : " + CodeCoverageUtils.getJacocoReportDirectory() + File.separator + "index.html"); + } + + public synchronized void restartGracefully() throws AutomationFrameworkException { + try { + int httpsPort = defaultHttpsPort + this.portOffset; + String backendURL = this.automationContext.getContextUrls().getSecureServiceUrl().replaceAll("(:\\d+)", ":" + httpsPort); + User superUser = this.automationContext.getSuperTenant().getTenantAdmin(); + ClientConnectionUtil.sendGraceFullRestartRequest(backendURL, superUser.getUserName(), superUser.getPassword()); + } catch (XPathExpressionException var5) { + throw new AutomationFrameworkException("restart failed", var5); + } + + long time = System.currentTimeMillis() + 300000L; + +// while(!this.inputStreamHandler.getOutput().contains("Halting JVM") && System.currentTimeMillis() < time) { +// ; +// } + + time = System.currentTimeMillis(); + + while(System.currentTimeMillis() < time + 5000L) { + ; + } + + try { + ClientConnectionUtil.waitForPort(Integer.parseInt((String)this.automationContext.getInstance().getPorts().get("https")), (String)this.automationContext.getInstance().getHosts().get("default")); + ClientConnectionUtil.waitForLogin(this.automationContext); + } catch (XPathExpressionException var4) { + throw new AutomationFrameworkException("Connection attempt to carbon server failed", var4); + } + } + + private String[] expandServerStartupCommandList(Map commandMap) { + if(commandMap != null && commandMap.size() != 0) { + String[] cmdParaArray = null; + String cmdArg = null; + if(commandMap.containsKey("cmdArg")) { + cmdArg = (String)commandMap.get("cmdArg"); + cmdParaArray = cmdArg.trim().split("\\s+"); + commandMap.remove("cmdArg"); + } + + String[] parameterArray = new String[commandMap.size()]; + int arrayIndex = 0; + Set> entries = commandMap.entrySet(); + + String parameter; + for(Iterator i$ = entries.iterator(); i$.hasNext(); parameterArray[arrayIndex++] = parameter) { + Map.Entry entry = (Map.Entry)i$.next(); + String key = (String)entry.getKey(); + String value = (String)entry.getValue(); + if(value != null && !value.isEmpty()) { + parameter = key + "=" + value; + } else { + parameter = key; + } + } + + if(cmdArg != null) { + commandMap.put("cmdArg", cmdArg); + } + + if(cmdParaArray != null && cmdParaArray.length != 0) { + return (String[]) ArrayUtils.addAll(parameterArray, cmdParaArray); + } else { + return parameterArray; + } + } else { + return null; + } + } + + private int getPortOffsetFromCommandMap(Map commandMap) { + return commandMap.containsKey("-DportOffset")?Integer.parseInt((String)commandMap.get("-DportOffset")):0; + } + + private String[] mergerArrays(String[] array1, String[] array2) { + return (String[])ArrayUtils.addAll(array1, array2); + } + + /** + * This methods will insert jacoco agent settings into startup script under JAVA_OPTS + * + * @param scriptName - Name of the startup script + * @throws IOException - throws if shell script edit fails + */ + private void insertJacocoAgentToShellScript(String scriptName) throws IOException { + String jacocoAgentFile = CodeCoverageUtils.getJacocoAgentJarLocation(); + this.coverageDumpFilePath = FrameworkPathUtil.getCoverageDumpFilePath(); + CodeCoverageUtils.insertStringToFile(new File(this.carbonHome + File.separator + "bin" + File.separator + scriptName + ".sh"), new File(this.carbonHome + File.separator + "tmp" + File.separator + scriptName + ".sh"), "-Dwso2.server.standalone=true", "-javaagent:" + jacocoAgentFile + "=destfile=" + this.coverageDumpFilePath + "" + ",append=true,includes=" + CodeCoverageUtils.getInclusionJarsPattern(":") + " \\"); + } + + /** + * This methods will insert jacoco agent settings into windows bat script + * + * @param scriptName - Name of the startup script + * @throws IOException - throws if shell script edit fails + */ + private void insertJacocoAgentToBatScript(String scriptName) throws IOException { + String jacocoAgentFile = CodeCoverageUtils.getJacocoAgentJarLocation(); + this.coverageDumpFilePath = FrameworkPathUtil.getCoverageDumpFilePath(); + CodeCoverageUtils.insertJacocoAgentToStartupBat(new File(this.carbonHome + File.separator + "bin" + File.separator + scriptName + ".bat"), new File(this.carbonHome + File.separator + "tmp" + File.separator + scriptName + ".bat"), "-Dcatalina.base", "-javaagent:" + jacocoAgentFile + "=destfile=" + this.coverageDumpFilePath + "" + ",append=true,includes=" + CodeCoverageUtils.getInclusionJarsPattern(":")); + } + + /** + * This method will check the OS and edit server startup script to inject jacoco agent + * + * @throws IOException - If agent insertion fails. + */ + private void instrumentForCoverage() throws IOException, AutomationFrameworkException { + String scriptName = TestFrameworkUtils.getStartupScriptFileName(this.carbonHome); + if(System.getProperty("os.name").toLowerCase().contains("windows")) { + this.insertJacocoAgentToBatScript(scriptName); + if(log.isDebugEnabled()) { + log.debug("Included files " + CodeCoverageUtils.getInclusionJarsPattern(":")); + log.debug("Excluded files " + CodeCoverageUtils.getExclusionJarsPattern(":")); + } + } else { + this.insertJacocoAgentToShellScript(scriptName); + } + + } + + /** + * To check jacoco file sizes and wait for them to get created.. + * + * @param filePath File Path of the jacoco data files. + */ + private void checkJacocoDataFileSizes(String filePath) { + Collection fileSetsCollection = FileUtils + .listFiles(new File(filePath), new RegexFileFilter("[^s]+(." + "(?i)(exec))$"), + DirectoryFileFilter.DIRECTORY); + + for (File inputFile : fileSetsCollection) { + if (inputFile.isDirectory()) { + continue; + } + //retry to check whether exec data file is non empty. + waitForCoverageDumpFileCreation(inputFile); + } + } + + /** + * This is to wait for jacoco exe file creation. + * + * @param file File that need to be created. + */ + private void waitForCoverageDumpFileCreation(File file) { + long currentTime = System.currentTimeMillis(); + long waitTime = currentTime + COVERAGE_DUMP_WAIT_TIME; + + while (waitTime > System.currentTimeMillis()) { + if (file.length() > 0) { + log.info("Execution data file non empty file size in KB : " + file.length() / 1024); + break; + } else { + try { + log.warn("Execution data file is empty file size in KB : " + file.length() / 1024); + Thread.sleep(500); + } catch (InterruptedException ignored) { + log.warn("Sleep interrupted ", ignored); + } + } + } + } + +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java new file mode 100644 index 0000000..6595dc7 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common.extensions; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.automation.engine.FrameworkConstants; +import org.wso2.carbon.automation.engine.context.AutomationContext; +import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException; +import org.wso2.carbon.automation.extensions.ExtensionConstants; + +import javax.xml.xpath.XPathExpressionException; +import java.io.File; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +public class CustomTestServerManager { + protected CarbonServerManagerExtension carbonServer; + protected String carbonZip; + protected int portOffset; + protected Map commandMap = new HashMap(); + private static final Log log = LogFactory.getLog(CustomTestServerManager.class); + protected String carbonHome; + + public CustomTestServerManager(AutomationContext context) { + carbonServer = new CarbonServerManagerExtension(context); + } + + public CustomTestServerManager(AutomationContext context, String carbonZip) { + carbonServer = new CarbonServerManagerExtension(context); + this.carbonZip = carbonZip; + } + + public CustomTestServerManager(AutomationContext context, int portOffset) { + carbonServer = new CarbonServerManagerExtension(context); + this.portOffset = portOffset; + commandMap.put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, String.valueOf(portOffset)); + } + + public CustomTestServerManager(AutomationContext context, String carbonZip, + Map commandMap) { + carbonServer = new CarbonServerManagerExtension(context); + this.carbonZip = carbonZip; + if (commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) != null) { + this.portOffset = Integer.parseInt(commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND)); + } else { + throw new IllegalArgumentException("portOffset value must be set in command list"); + } + this.commandMap = commandMap; + } + + public String getCarbonZip() { + return carbonZip; + } + + public String getCarbonHome() { + return carbonHome; + } + + public int getPortOffset() { + return portOffset; + } + + public void configureServer() throws AutomationFrameworkException { + + } + + public Map getCommands() { + return commandMap; + } + + /** + * This method is called for starting a Carbon server in preparation for execution of a + * TestSuite + *

+ * Add the @BeforeSuite TestNG annotation in the method overriding this method + * + * @param server : The server which needs to be start. + * @return The CARBON_HOME + * @throws IOException If an error occurs while copying the deployment artifacts into the + * Carbon server + */ + public synchronized String startServer(String server) + throws AutomationFrameworkException, IOException, XPathExpressionException, InterruptedException { + if (carbonHome == null) { + if (carbonZip == null) { + carbonZip = System.getProperty(FrameworkConstants.SYSTEM_PROPERTY_CARBON_ZIP_LOCATION); + } + if (carbonZip == null) { + throw new IllegalArgumentException("carbon zip file cannot find in the given location"); + } + String extractedDir = getExistingExtractedDir(); + if (server.equalsIgnoreCase("core")) { + if (extractedDir == null) { + carbonHome = carbonServer.setUpCarbonHome(carbonZip); + } else { + carbonHome = extractedDir; + } + } else if (server.equalsIgnoreCase("analytics") || server.equalsIgnoreCase("broker")) { + if (extractedDir == null) { + carbonHome = carbonServer.setUpCarbonHome(carbonZip) + File.separator + "wso2" + File.separator + server; + } else { + carbonHome = extractedDir + File.separator + "wso2" + File.separator + server; + } + } else { + throw new IllegalArgumentException("Unsupported server type provided - " + server); + } + configureServer(); + } + log.info("Carbon Home - " + carbonHome); + if (commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) != null) { + this.portOffset = Integer.parseInt(commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND)); + } else { + this.portOffset = 0; + } + + carbonServer.startServerUsingCarbonHome(carbonHome, commandMap); + return carbonHome; + } + + private String getExistingExtractedDir() { + File zipDir = new File(System.getProperty("basedir", ".") + File.separator + "target"); + File[] subFiles = zipDir.listFiles(); + if (subFiles != null) { + for (File subFile : subFiles) { + if (subFile.getName().startsWith("carbontmp")) { + File[] carbonServerFiles = subFile.listFiles(); + if (carbonServerFiles != null) { + for (File file : carbonServerFiles) { + if (file.getName().startsWith("entgra-iot")) { + return file.getAbsolutePath(); + } + } + } + } + } + } + return null; + } + + /** + * Restarting server already started by the method startServer + * + * @throws AutomationFrameworkException + */ + public void restartGracefully() throws AutomationFrameworkException { + if (carbonHome == null) { + throw new AutomationFrameworkException("No Running Server found to restart. " + + "Please make sure whether server is started"); + } + carbonServer.restartGracefully(); + } + + /** + * This method is called for stopping a Carbon server + *

+ * Add the @AfterSuite annotation in the method overriding this method + * + * @throws AutomationFrameworkException If an error occurs while shutting down the server + */ + public void stopServer() throws AutomationFrameworkException { + carbonServer.serverShutdown(portOffset); + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java new file mode 100644 index 0000000..34a1037 --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2018 - 2020 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.common.extensions; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment; +import org.wso2.carbon.automation.engine.context.AutomationContext; +import org.wso2.carbon.automation.engine.context.ContextXpathConstants; +import org.wso2.carbon.automation.engine.context.TestUserMode; +import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension; +import org.wso2.carbon.automation.extensions.ExtensionConstants; +import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension; + +import javax.xml.xpath.XPathExpressionException; + +/** + * Test Automation server extension to start the IOT core. + * This will set the carbon_home to {carbonHome}/core and port offset : 0 + */ +public class IOTServerExtension extends ExecutionListenerExtension { + + private CustomTestServerManager serverManager; + private static final Log log = LogFactory.getLog(CarbonServerExtension.class); + private String executionEnvironment; + private AutomationContext automationContext; + private final String IOT_CORE_PORT_OFFSET = "0"; + + @Override + public void initiate() { + try { + automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER); + if (getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) { + getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, IOT_CORE_PORT_OFFSET); + } + serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters()); + executionEnvironment = + automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT); + + } catch (XPathExpressionException e) { + throw new RuntimeException("Error while initiating test environment", e); + } + } + + @Override + public void onExecutionStart() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + String carbonHome = serverManager.startServer("core"); + log.info(carbonHome); + System.setProperty(ExtensionConstants.CARBON_HOME, carbonHome); + + // Need to give time for the apis to be added to the synapse configurations. + Thread.sleep(200000); + } + } catch (Exception e) { + throw new RuntimeException("Fail to start carbon server ", e); + } + } + + @Override + public void onExecutionFinish() { + try { + if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) { + serverManager.stopServer(); + } + } catch (Exception e) { + throw new RuntimeException("Fail to stop carbon server ", e); + } + } +} diff --git a/integration-test/iot-community/src/test/java/org/wso2/iot/integration/jmeter/DeviceMgtCoreAPIJmeterTestCase.java b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/jmeter/DeviceMgtCoreAPIJmeterTestCase.java new file mode 100644 index 0000000..4405c8a --- /dev/null +++ b/integration-test/iot-community/src/test/java/org/wso2/iot/integration/jmeter/DeviceMgtCoreAPIJmeterTestCase.java @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2018 - 2022 Entgra (Pvt) Ltd, Inc - All Rights Reserved. + * + * Unauthorised copying/redistribution of this file, via any medium is strictly prohibited. + * + * Licensed under the Entgra Commercial License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://entgra.io/licenses/entgra-commercial/1.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.jmeter; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.testng.annotations.Test; +import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException; +import org.wso2.carbon.automation.extensions.jmeter.JMeterTest; +import org.wso2.carbon.automation.extensions.jmeter.JMeterTestManager; + +import java.io.File; +import java.net.URL; + +/** + * JMeter Test cases for Device Management APIs. + */ +public class DeviceMgtCoreAPIJmeterTestCase { + private static Log log = LogFactory.getLog(DeviceMgtCoreAPIJmeterTestCase.class); + + @Test(description = "Testing the device-mgt core functionalities") + public void permutationTest() throws AutomationFrameworkException { + URL url = Thread.currentThread().getContextClassLoader().getResource( + "jmeter-scripts" + File.separator + "DeviceMgtCoreTestPlan.jmx"); + JMeterTest script = new JMeterTest(new File(url.getPath())); + JMeterTestManager manager = new JMeterTestManager(); + log.info("Running permutation test using jmeter scripts"); + manager.runTest(script); + } +} diff --git a/integration-test/iot-community/src/test/resources/automation.xml b/integration-test/iot-community/src/test/resources/automation.xml new file mode 100644 index 0000000..8d21bb5 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/automation.xml @@ -0,0 +1,225 @@ + + + + + + + + + 100000 + + standalone + + false + + false + + + + + + + http://10.100.2.51:4444/wd/hub/ + + + + firefox + + /home/test/name/webDriver + + + + + + + jdbc:h2:testDB + wso2carbon + wso2carbon + org.h2.Driver + + + jdbc:h2:testDB + wso2carbon + wso2carbon + org.h2.Driver + + + + + + + keystores/products/wso2carbon.jks + + JKS + + wso2carbon + + wso2carbon + + wso2carbon + + + + + client-truststore.jks + + JKS + + wso2carbon + + + + + + https://wso2.org/repo + file:///home/krishantha/test + + + + + + + + + + admin + admin + + + + + testuser11 + testuser11 + + + testuser21 + testuser21 + + + + + + + + + admin + admin + + + + + testuser11 + testuser11 + + + testuser21 + testuser21 + + + + + + + + + + + + + localhost + + + 9763 + + 9443 + + + + + + + + + + + + + + + + + org.wso2.iot.integration.common.extensions.IOTServerExtension + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/integration-test/iot-community/src/test/resources/automationSchema.xsd b/integration-test/iot-community/src/test/resources/automationSchema.xsd new file mode 100644 index 0000000..c3bd1b3 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/automationSchema.xsd @@ -0,0 +1,565 @@ + + + + + + + + + ================================================= + Parameters ================================================= + Browser type with used by framework to execute UI test, supported types + - chrome|firefox|opera|ie|htmlUnit + + + + + + + Change this to edit wait time for test + artifact deployment + + + + + + Change this to product|platform/cloud to + execute test on specific environment + + + + + + Change this to user/tenant to execute test + with user mode or tenant mode + + + + + + Change this to true if you want to generate + coverage statistics + + + + + + Change this to true if you want to enable + framework dashboard + + + + + + + + + + + + + + + Change to enable remote webDriver + URL of remote webDriver server + + + + + + + + + + + + + Type of the browser selenium tests + are running" + + + + + + + + path to webDriver + executable - required only for + chrome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KeyStore which will be used for + encrypting/decrypting passwords + and other sensitive information. + + + + + + + Keystore file location + + + + + + Keystore type (JKS/PKCS12 etc.) + + + + + + Keystore password + + + + + + Private Key alias + + + + + + Private Key password + + + + + + + + + + System wide trust-store which is used to + maintain the certificates of all + the trusted parties. + + + + + + + trust-store file location + + + + + + trust-store type (JKS/PKCS12 + etc.) + + + + + + trust-store password + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/integration-test/iot-community/src/test/resources/client/modules/addressing-1.6.1-wso2v20.mar b/integration-test/iot-community/src/test/resources/client/modules/addressing-1.6.1-wso2v20.mar new file mode 100644 index 0000000000000000000000000000000000000000..d28b3a08eb720b7937ee9fc702d69ca7bb946f74 GIT binary patch literal 31342 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 K{jY`+=>GsnMhZy) literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/filters.txt b/integration-test/iot-community/src/test/resources/filters.txt new file mode 100644 index 0000000..8813e63 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/filters.txt @@ -0,0 +1,23 @@ +-org.wso2.carbon.caching.core.identity.* +-org.wso2.carbon.caching.core.permissiontree.* +-org.wso2.carbon.caching.infinispan.* +-org.wso2.carbon.event.core.internal.delivery.jms.* +-org.wso2.carbon.event.core.qpid.* +-org.wso2.carbon.registry.synchronization.* +-*.stub* +-*.stub_ +-*.stub_4.0.0 +-*.stub- +-org.eclipse.* +-*.equinox.* +-org.wso2.carbon.user.core.* +-samples.* +-*.log4j* +-*.axis2* +-*.ui* +-*.tenant* +-*.stratos* +-*.eventing* +-*tests-transports* +-org.wso2.carbon.mediation.statistics* +-*startup* diff --git a/integration-test/iot-community/src/test/resources/instrumentation.txt b/integration-test/iot-community/src/test/resources/instrumentation.txt new file mode 100644 index 0000000..4d643d7 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/instrumentation.txt @@ -0,0 +1,8 @@ +io.entgra.power.meter.logger_ +io.entgra.meter.request_ +io.entgra.device.mgt.plugin.power.meter_ +io.entgra.tableau.integration_ +io.entgra.iot.ami.communication.adaptor_ +io.entgra.iot.dlms_ +io.entgra.iot.iec_ +io.entgra.iot.sms_ \ No newline at end of file diff --git a/integration-test/iot-community/src/test/resources/jmeter-scripts/DeviceMgtCoreTestPlan.jmx b/integration-test/iot-community/src/test/resources/jmeter-scripts/DeviceMgtCoreTestPlan.jmx new file mode 100644 index 0000000..b6bdd88 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/jmeter-scripts/DeviceMgtCoreTestPlan.jmx @@ -0,0 +1,788 @@ + + + + + + false + true + + + + ServerHost + localhost + = + + + GatewayHost + localhost + = + + + GatewayPort + 8243 + = + + + ServerPort + 9443 + = + + + user + admin + = + + + password + admin + = + + + + + + + + continue + + false + 1 + + 1 + 1 + 1644164770000 + 1644164770000 + false + 60 + 60 + true + + + + false + + + + true + + + + false + { + "applicationName": "admin", + "tags": ["device_management", "transport_management"] +} + = + + + + ${GatewayHost} + ${GatewayPort} + https + + /api-application-registration/register + POST + true + false + true + false + + + + + + + + + https://${GatewayHost}:${GatewayPort}/api-application-registration/register + admin + admin + + + + + false + + + + + + content-type + application/json + + + + + + false + ClientId + "client_id":"(.+?)"} + $1$ + + + expires_in + + + + false + ClientSecret + {"client_secret":"(.+?)" + $1$ + + + + + + + + + + + false + grant_type + password + = + true + application/x-www-form-urlencoded + + + false + default perm:app:review:view perm:app:review:update perm:app:publisher:view perm:app:publisher:update perm:app:store:view perm:app:subscription:install perm:app:subscription:uninstall perm:admin:app:review:update perm:admin:app:review:view perm:admin:app:publisher:update perm:admin:app:review:update perm:admin:app:subscription:view perm:device-types:types perm:enterprise:modify perm:enterprise:view perm:android-work:customer perm:android-work:admin perm:application-command:modify perm:sign-csr perm:admin:devices:view perm:admin:topics: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:admin:devices:update-enrollment 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:configs perm:device-types:features perm:device-types:types perm:applications:install perm:applications:uninstall perm:admin-groups:count perm:admin-groups:view perm:admin-groups:add 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:admin perm:devicetype:deployment perm:admin:device-type perm:admin:device-type:view perm:admin:device-type:configs perm:device:enroll perm:geo-service:analytics-view perm:geo-service:alerts-manage appm:read perm:devices:permanent-delete perm:android:manage-configuration perm:android:view-configuration perm:user:permission-view perm:ios:view-configuration perm:ios:manage-configuration perm:ios:dep-view perm:ios:dep-add perm:windows:view-configuration perm:windows:manage-configuration perm:android:lock-devices perm:android:unlock-devices perm:android:location perm:android:clear-password perm:android:control-camera perm:android:enterprise-wipe perm:android:wipe perm:android:ring perm:android:applications perm:android:reboot perm:android:change-LockTask perm:android:mute perm:android:configure-display-message perm:android:send-app-restrictions perm:android:file-transfer perm:android:set-webclip perm:android:set-password-policy perm:android:change-lock-code perm:android:upgrade-firmware perm:android:send-notification perm:geo-service:geo-fence perm:metadata:view perm:metadata:create perm:metadata:update perm:sms-handler:view-configuration perm:com-module:admin:configure perm:com-module:admin:enrol perm:com-module:admin:status-update perm:com-module:view perm:rmr:admin:add-schedule perm:rmr:admin:assign-meter perm:rmr:admin:attach-com perm:rmr:admin:billing-registers-retrieve perm:rmr:admin:status-retrieve perm:rmr:admin:delete-schedule perm:rmr:admin:detach-com perm:rmr:admin:detach-meter perm:rmr:admin:enrol perm:rmr:admin:load-profile-retrieve perm:rmr:admin:remote-disconnection perm:rmr:admin:replace-meter perm:rmr:admin:self-test perm:rmr:admin:time-sync perm:rmr:admin:update-meter-mode perm:rmr:admin:update-meter-state perm:rmr:admin:update-schedule perm:rmr:admin:view-meter-reading perm:rmr:admin:view-schedule perm:rmr:device:assign perm:rmr:device:enrol perm:rmr:device:install perm:rmr:device:unassign perm:rmr:device:validate perm:rmr:device:view perm:rmr:sms perm:sim:admin:enrol perm:sim:admin:permanent-delete perm:sim:admin:update perm:sim:view perm:power-meter-dlms:event-mgt perm:rmr:admin:upload-credentials perm:rmr:admin:remote-configure perm:rmr:view-configuration perm:rmr:manage-configuration perm:com-module:types-view perm:com-module:signal-view perm:com-module:admin:attach-sim perm:com-module:admin:detach-sim perm:rmr:device:report-event perm:meter-allocation:view perm:meter-allocation:create perm:meter-allocation:cancel perm:meter-allocation:first-review perm:meter-allocation:second-review perm:meter-allocation:assign perm:meter-allocation:dispatch perm:meter-allocation:receive perm:meter-request:admin:update perm:rmr:admin:update-customer-assign perm:rmr:device:view-install-data perm:rmr:self-test perm:rmr:user:branches perm:meter-return:view perm:meter-return:create perm:meter-return:assign-meters perm:meter-return:cancel perm:meter-return:assign perm:meter-return:dispatch perm:meter-return:receive perm:rmr:admin:branch-overview perm:rmr:admin:branch-assignment perm:rmr:admin:reachability-overview perm:rmr:admin:signal-reception perm:rmr:admin:customer-overview perm:rmr:admin:customer-locations perm:rmr:admin:system-dashboard perm:rmr:admin:meter-inventory perm:rmr:admin:meter-reachability-report perm:sim:types:view perm:rmr:device:types:view perm:com-allocation:view perm:com-allocation:create perm:com-allocation:cancel perm:com-allocation:first-review perm:com-allocation:second-review perm:com-allocation:reject perm:com-allocation:assign perm:com-allocation:dispatch perm:com-allocation:receive perm:com-allocation:add-device perm:com-return-request:view perm:com-return-request:create perm:com-return-request:cancel perm:com-return-request:assign perm:com-return-request:dispatch perm:com-return-request:receive perm:field-test-request:view perm:field-test-request:create perm:field-test-request:cancel perm:field-test-request:assign perm:field-test-request:dispatch perm:field-test-request:complete perm:load-profile-request:view perm:load-profile-request:create perm:load-profile-request:cancel perm:load-profile-request:execute perm:readout-request:view perm:readout-request:create perm:readout-request:cancel perm:readout-request:execute perm:disconnection-request:view perm:disconnection-request:create perm:disconnection-request:cancel perm:disconnection-request:execute perm:disconnection-request:first-review perm:disconnection-request:reject perm:disconnection-request:assign perm:reconnection-request:view perm:reconnection-request:create perm:reconnection-request:cancel perm:reconnection-request:execute perm:reconnection-request:first-review perm:reconnection-request:reject perm:reconnection-request:assign perm:rmr:admin:meter-user perm:rmr:admin:delete-credential perm:meter-return:create-without-devices perm:com-return-request:assign-com perm:com-return-request:create-without-devices perm:rmr:admin:remote-reconnection perm:rmr:admin:reports:view-daily perm:rmr:admin:reports:view-weekly perm:rmr:admin:reports:view-monthly perm:sim:communication:activate perm:sim:communication:deactivate perm:rmr:admin:meter-operations-view perm:rmr:admin:billing-registers-retrieve-individual perm:rmr:admin:self-test-individual perm:rmr:admin:load-profile-retrieve-individual perm:rmr:admin:test-history perm:rmr:admin:reachability-overview-include-branch perm:rmr:admin:meter-reachability-report-include-branch perm:meter-allocation:branch-cancel perm:com-allocation:branch-cancel perm:rmr:admin:assign-branch perm:rmr:admin:detach-branch perm:com-module:admin:assign-branch perm:com-module:admin:detach-branch perm:rmr:admin:replace-com perm:rmr:admin:replace-sim perm:rmr:admin:device:view + = + true + scope + application/x-www-form-urlencoded + + + false + admin + = + true + username + application/x-www-form-urlencoded + + + false + admin + = + true + password + application/x-www-form-urlencoded + + + + ${GatewayHost} + ${GatewayPort} + https + + /token + POST + true + false + true + false + + + + + + + + + https://${GatewayHost}:${GatewayPort}/token + ${ClientId} + ${ClientSecret} + + + + + false + + + + + + content-type + application/x-www-form-urlencoded + + + + + + false + Token + {"access_token":"(.+?)" + $1$ + + + + + + + false + expires_in + "expires_in":(.+?)} + $1$ + + + expires_in + + + + true + + + var expires_in = vars.get("expires_in") * 1000; +log.info("zzzzzzzzzzzzzzz Expire in: " + expires_in); +expires_in += Date.now(); +vars.put("exp", expires_in); +log.info("zzzzzzzzzzzzzzz Expire on: " + expires_in); +var token = vars.get("Token"); +log.info("zzzzzzzzzzzzzzz Token: " + token); +props.put("Token", token); + javascript + + + + + + + continue + + false + 1 + + 1 + 1 + 1644164949000 + 1644164949000 + false + + + true + + + + + + vars.put("Token", props.get("Token")); + javascript + true + + + + false + false + + + + true + + + + false + { + "id": 0, + "name": "string", + "type": "string", + "description": "string", + "deviceIdentifier": "string", + "enrolmentInfo": { + "id": 0, + "dateOfEnrolment": 0, + "dateOfLastUpdate": 0, + "lastBilledDate": 0, + "ownership": "BYOD", + "status": "CREATED", + "owner": "string", + "transferred": false + }, + "features": [ + { + "id": 0, + "code": "string", + "name": "string", + "description": "string", + "type": "string", + "hidden": false, + "deviceType": "string", + "metadataEntries": [ + { + "id": 0, + "name": "string", + "value": {} + } + ] + } + ], + "properties": [ + { + "name": "string", + "value": "string" + } + ], + "deviceInfo": { + "deviceModel": "string", + "vendor": "string", + "osVersion": "string", + "osBuildDate": "string", + "batteryLevel": 0, + "internalTotalMemory": 0, + "internalAvailableMemory": 0, + "externalTotalMemory": 0, + "externalAvailableMemory": 0, + "operator": "string", + "connectionType": "string", + "mobileSignalStrength": 0, + "ssid": "string", + "cpuUsage": 0, + "totalRAMMemory": 0, + "availableRAMMemory": 0, + "pluggedIn": false, + "updatedTime": "2023-02-15T09:56:04.735Z", + "location": { + "deviceId": 0, + "deviceIdentifier": { + "id": "string", + "type": "string" + }, + "latitude": 0, + "longitude": 0, + "street1": "string", + "street2": "string", + "city": "string", + "state": "string", + "zip": "string", + "country": "string", + "updatedTime": "2023-02-15T09:56:04.735Z", + "altitude": 0, + "speed": 0, + "bearing": 0, + "distance": 0 + }, + "deviceDetailsMap": { + "additionalProp1": "string", + "additionalProp2": "string", + "additionalProp3": "string" + } + }, + "applications": [ + { + "id": 0, + "platform": "string", + "category": "string", + "name": "string", + "locationUrl": "string", + "imageUrl": "string", + "version": "string", + "type": "string", + "appProperties": { + "additionalProp1": {}, + "additionalProp2": {}, + "additionalProp3": {} + }, + "applicationIdentifier": "string", + "memoryUsage": 0, + "hourlyUsage": 0, + "dailyUsage": 0, + "applicationEvents": [ + { + "eventData": "string", + "timestamp": 0 + } + ], + "active": false + } + ], + "cost": 0, + "daysUsed": 0, + "deviceStatusInfo": [ + { + "status": "CREATED", + "updateTime": "2023-02-15T09:56:04.736Z", + "enrolmentId": 0, + "deviceId": 0, + "changedBy": "string" + } + ], + "historySnapshot": { + "fullSnapshot": { + "locationHistorySnapshots": [ + [ + { + "deviceId": 0, + "deviceIdentifier": { + "id": "string", + "type": "string" + }, + "latitude": 0, + "longitude": 0, + "street1": "string", + "street2": "string", + "city": "string", + "state": "string", + "zip": "string", + "country": "string", + "updatedTime": "2023-02-15T09:56:04.736Z", + "altitude": 0, + "speed": 0, + "bearing": 0, + "distance": 0, + "geoHash": "string", + "tenantId": 0, + "owner": "string" + } + ] + ] + }, + "pathSnapshot": [ + {} + ] + } +} + = + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt//v1.0/device/agent/enroll + POST + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + Content-Type + application/json + + + + + + + 200 + + + + + Assertion.response_code + false + 8 + + + + + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt/v1.0/devices + GET + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + + + + + 200 + + + + Assertion.response_code + false + 8 + + + + + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt/v1.0//devices/type/any/id/{id} + GET + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + + + + + 200 + + + + Assertion.response_code + false + 8 + + + + + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt/v1.0//devices/type/any/id/{id} + GET + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + + + + + 200 + + + + Assertion.response_code + false + 8 + + + + + true + + + + false + { + "properties": { + "additionalProp1": "string", + "additionalProp2": "string", + "additionalProp3": "string" + } +} + = + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt//v1.0/devices/query-devices + POST + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + Content-Type + application/json + + + + + + + 200 + + + + + Assertion.response_code + false + 8 + + + + + true + + + + false + { + "conditions": [ + { + "key": "string", + "value": "string", + "operator": "string", + "state": "AND" + } + ] +} + = + + + + ${GatewayHost} + ${GatewayPort} + https + + /api/device-mgt//v1.0/devices/query-devices + POST + true + false + true + false + + + + + + + + + Authorization + Bearer ${Token} + + + Content-Type + application/json + + + + + + + 200 + + + + + Assertion.response_code + false + 8 + + + + + + + continue + + false + 1 + + 1 + 1 + false + + + true + 1669634319000 + 1669634319000 + + + + + + vars.put("Token", props.get("Token")); + javascript + true + + + + + false + + saveConfig + + + true + true + true + + true + true + true + true + false + true + true + false + false + true + false + false + false + false + false + 0 + true + + + + + + + + diff --git a/integration-test/iot-community/src/test/resources/keystores/products/client-truststore.jks b/integration-test/iot-community/src/test/resources/keystores/products/client-truststore.jks new file mode 100644 index 0000000000000000000000000000000000000000..71adf40f79eed76a33aa05bc6607e66a44d5f52a GIT binary patch literal 100420 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 W2CIDliC=%e#Q(_shA;lT-~R)ujX)~^ literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/products/client-truststores.jks b/integration-test/iot-community/src/test/resources/keystores/products/client-truststores.jks new file mode 100644 index 0000000000000000000000000000000000000000..c477431cbee1aa8d78f20cbad10b1e8b86fbbe55 GIT binary patch literal 101446 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 literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/products/wso2carbon.jks b/integration-test/iot-community/src/test/resources/keystores/products/wso2carbon.jks new file mode 100644 index 0000000000000000000000000000000000000000..357b9dbf1ce0ebdbb5159b6fcba23efbbf4d8d01 GIT binary patch literal 98772 zcmdqJ1z1(>+Ac~rNOw#?k!DUh1f)Saq#GuklLn1hY+?ih18XzWK-3F^sL9F&O=9 ze09r1_NxtlIO67(Ow+vxeRI%v2;igFG{iXeoh%@TXE%EAuADyb*|X^kG>iZuŬ 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 MVPz0BY}Nh$0C6FaHvj+t literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/products/wso2certs.jks b/integration-test/iot-community/src/test/resources/keystores/products/wso2certs.jks new file mode 100644 index 0000000000000000000000000000000000000000..c1e9ace3c233ac4cafac5aa1d11dc4656a6ce6db GIT binary patch literal 9521 zcmeHrRZv{*vi1xEgu!8O_XHm-cyM=jcXtRHEV#S76D+s|4IbPzI0OqWK~6r|yY_$n zQ+4i6?TcNt)gay*UU;u$|0N6mVefZ^*($2>;N@!*E-s_oyK-yetW5b0oyveBaGPZE> zCJkDmXMJ4%6{_3TLljA9_jess!ldHj+2Ros*qHBJr@5<>+!xPru1mHOF0C|Gc1Dm= zwL?1(U-{XEfS*g4N)g#|>F#l%UQDJhC8eDAXasA@aWA#%?dj>1i66R3n6gB8WG=L6 zXhHa_1y@3mLAY=2Xzseo3j^B=Nn7)%KO4pD)4&0;+nSek2vSDZ1ht~FIS{FDDnzVbz3XyJ2kpR~G2h{UEaObQC+Of}#Bi`xDJ5hl zw27V47+4TyDF8dw>kFh``Gs3EiC%qs5osw1W92TI?bujV5Kc| zM1Sz-$h7ad&#l_inU=f1Qfp`91**$}5L44i%)LLKHbl|CdqtZ)mc{1&?m6vl#r}xs z`6s*&L#?B(8@}}yDQ7s$e)=VNM~S>2CzB^Vd@y?81q=cD4fD(^;H0?Ca92W#kgi3? z;Kr3X60TYnop^yzwp1vl=r?B5!ARX*^P9Q)d7Q?*w0$7@XLM?$f6y? zSf7&hq{DF5kepD)7HM?$*NxF&?CmBmhXm~3*C8#Jqvj&mLbJx@6EEyl_yQ^$bjuGf z(l#P?7t)PC{t_HbZ`*zs_A_ItabNp&3^C%gY+u#;H%e9FB;HpX+_I<89hM10<^y>8UdzNPa>f{=OPorf^4Q@1N5QV= zD<1{F;QdKlV=1LK-l3GS$#3+)Zpqda;!Q}3Q%D>65~77G6AmNKQa-lz3Vczqdg*13 zxNBbzVhpAe-mb5U{&>*rzTcRd!u)oA);~j&S@^zQdyIs?@4~6_cxx$Elqv02nP4^g z*LsR*b3RV~ zz#l?hOJlK3u-o&5hbs(D0v3#7}%l12a`#b=RuNu(DZ#je9RZ}i@YBq$e-SxdNmDv&P zU(u#9RwTc?V?K>oK)Kk%vMK(sR~BU5GZ}ajf?d%=Co;`GVK<%gy2;HuIqIP0I(N!* z^Zfe#UK+f?6CXQLyTYEtRiRw&u2DUcqnp-Vo^@(lk-Y^UIp(BwB$We!Ir&cNFh~Ai zUiTJq&~z}V>X~?4_+-QL(;ETk&X&tyL_$2H%1`nW6kGkEx-{+|B7OY^6g>A zFYZ0UJdS>ZBGc)?JUfq{HO)PeZ=2nbJvqr`r;T}>Y~Hd=HiQ_U=(^hu?(L!XIf_1# zDqos~f2%)IeX&anHKNp;89!y;Y9_dA|BQ2K+2w2gpg{UKsXLp1df-$Dd>D=%s&a%G zp`JR70Xeufo{=G+phi0cZ!8o{G?Xw5Ya3H;jT}QXgi5z&q;}sCsJ!x)%7ICreb|6& zI{n$5+8P%OZpOsXXUqF4%~Sqd7o~*W_Ew}sq#j3>|6O0g%4)e-DgkQ_xoWW-;5uIM z(PFR@3A;e$%-dQZaT`42CAQMb(3vt;eia7r^d_&kV(iu;tJrHa!41-U*!FeuVQ|}~ z;Ci>4M!&ViYv%+xDm*LI zl$~=%WqQj;*2YrE6}MD=A8XXr!5Vvweaw;Mff{PO5co8lAzbIj)ZRm$*T`lEV-{BeXoq4E#s#b&dsYXJuI->bX?lGej@$FX7vg%+B zbByx9ulc!keblhE!f{*kx>|AsvsuaNlVC+6>RV}q4EA7him_&)BUm1uuM9jh2nLn9 zD6MgY2BbH1(#;mOe$Q(UBLS~seS`{dmgPPZW$K1l7daN6D!@}5^b9x&`}4jLikp12 zLMq8-UrbfQlmsHW7uj}Tjy|v&Lc{iNm73wIbwBykp<5~pr87^7uS?g-k-+|v<=gwJ zY_sQa9v<0i^d%3TZ1m1kcf4cXZ*~mk4oR5QxCU*tchtLL`T5J5BC~koyGgNG!5oS2 z7e`11+E~G1wE8Z5OQRhl7i(gQmA6$LjT)kAnXjbgC>cG{OwsA$ZsrQ`gv{VxyNAh4 z)uf{LV~vVY>K$Q_K0`|v(%D5FgN@N?7_hy}_Hi9~wyUv^DisX)Leh@L-Rth>xKo3& z@Z?&YryUHLLAzQgDXP=zC6R+TbLx3z12sLqCLOUB`6_bk#BP2FnN-ZCWRgf`8ybzv z$mvk%Wyiu(HZj=a>cguq?Yu0~G zXmFZL98him0PYhs5Uvaw2#U)C!2n@?KTs5SFkOgb$Sun6@eB?C4Txkxf`Z{eYOwGS z7&R3Z6e!Xk0s;h9)y&29AL6UOMGPp~A67&N!XH*L1!oHu94OWwDkKQXpDG7u3oa%CYhMP~AlfZvv)}^PKuTXa5j|0- z>J6E9cX>WzM|%eI@u}NiOpyv6 z%pPgAHwyj^@-{USH@`i=u&hZ-5+>JiU-m7j7k<$^6{Qt zSiv6~A!R8>Ot(?9Yvft-dj2AXA-cHuwo}7wTY!jh^eV&@vF*r47_=As@MWV;-okSG zO+Z=Dy(|vRFZE6nHo$1(K*L@BjeJ(?C6d$QnNq5}0h-eqKX=x+R%7>%Y2cX(J8#|j zOyF*E&gLA({7oSV%iWDDit}-uXAj@L*pGkXF;c$$^kWX{FlDq*U5oZ0OH-!i=RO z6S>rkx-OB$=bCxQnsGBvcg)O1%<7N6RlT|zix~dswXau8%fQu}ffPe(J`B2a0jlaay$Xv2f2(f4sWi6RH z&s|>|Io?gIA6Pp%JDyX)6=d2CA?CsQc8cmV(cG|Lb+8L zShOMxy~;`u3Lp+hPZ1~{Vtb}2;2F;ik%&uU1gMbTf%w-hm`qbQQMD~*7BtsSWh_A! zG%P}jJFz(yHLrp_;?;TFnZKm!VCCRgJDcO5sEbdJy_WnM+3t94!K?G^=XU|PZXZPU zf}hhe7-7efz8Xyec`GxrHM*{HXGX6&vzHvn3K3-h-i^lS_s>BJ%7)}#1lZw*`HY$R z84fG%d*vg#?hxQhV*9HDvMKaq-Is@Lqz+S(0dVc+W}Yr~V&jp5X_ zh4Mj+d$%1|{<(LxlZRY95&qGrzldgBK*$qVs|jdAjA7VoNnBnr?xZr)e=|WQIOAv2 z|8%$gy>wD=XK`bbB)SyYyNvL;*cO~^c>Q+g#Q1x3Ku^mKCWwEx`|<~WY#X?ogxSGS zhw}Sre7!`utWzMP($sLv3M7J;eXw|I_SBeS>!wg<_ou4F!@O9gcVPp?tCE)4fZ+$r z9beXoZ}Gyy;}j9VFNg(UayW=Df5EsRR3A$G2aKb_;=p1B1=lXB(vZ`PInb-iX~34X0+4Zh0iJ#>l7jpYto zWU64v(Flw`e;hK-UNWob#8-cakGO3B*)Z#9ahF>5(9J$mS5S-~wj%!4(ajV|+3n@51^0W!d-meN zJMq8;mEt6aBbRNMqFz@hxebTEzr+0fs%kKDZP?x`&-bOyM?o0GtR)fyPQ}c&8z0hb z#DDktyDs@;u3JX12AWB{7twvhY_q2xNL_{qVe4{SOr{}F-y6kJ+|nO;CdoUFM?(T< z#~Chi%3Exou4_rWgb3ZMrpei6mQFO*g*5$%d`97Zh=-1D5GR)gmtuDkw)T#30>AqZ zF;;k0J~k%90*ieAz{TQ8Sh#9d9(_%?Ih;9L_iiS^RF(YjqZO53x*M$?Z2DkyL%V3# zN|zP&?0wCp0_1`G3qjn^B~O#yULM&l0Al#>A^!J@)#P7RtWsIOSFB;bSFFMR!-~}r zP$81ahw9fU^8K%lrRLtDO+z$NdX|l*$ zpv^?ja_wvb6_b#elRa}EJ()vSBFQ^eJ<&akUskM2dj%t(GVv_FE;TPhQ+o8FT&f0V z8?HmT%&H-g9qw_`i~LIuyLU5ZP0n+p21#3K>JKcg@1pg+OIa7TSOGfBvDU5(T#=$V zR2*rPCRSg^vO6+)#9PVsX?uPq7Qr(p>D9 z?4^2T(x0iS{^PHSR2(c+5FMfL3$q$oz(?Hgw&d*T;_5MRHv+FY zl$*nwT1&YjDnpOyIxfiu#O74;aW-AK@ zIBYnba%6JG|!wH`b)IQMUm609m?+06VRl}j38h$(Zsvl0p z9L+XSF~~S0KI569cdgARK;rC@DP_{mzUjVtB%wy{>1Q$i788+|h|@&YQSnw@Wp3~4 zIq`S(CFsxns9)wY*zq&(^9z|p7Bj{=7BpP`X^a-pXMa#Wwlg5pQs1ScNu=ZnDr9=u zoHD=Sz!c27((p~BZ`UNa(@x6QP8Xy*fG?hZRg>DG0orPbhE zeH>&hcWTq4QBDZvB;KI-++QFiAT2Wk8K6~%G0}TFgwg$Bb?8t~TUl^k%VxQTxU+#4 zQWvKO{<%C?382~8DOMX26a9R#qFi(|L=V~O2i(L5PC zyuUPY;s;m!mJg2)2`^vlCG^({jYjN0F394Lq&v`R6&<~+e?yu;+8C;j#<9uQo%?{J zCI5kL5#|ys{0sPUcHx7Lz0u?vyg??+!)6VnDGYZ%e$W%+iTbzx{QyucCS$ zm?~ie62DdHu=D>E)Zk-LMvB@t{Zw81YWRJf29KQ~H&~=zDK8V!t8AA!ksf>GQSC5^ zG5)-OQR($$;g4G1Vrt$VJUwIpg=CB+BZ9rgZ-NZkwF+}-YgP?zZ}9GixIi6*Il7Kx z(TIp(mV2YhB2my~xbkZwIIBJSDDfP^Iz_L9)Y*xTEZ%Q9W(BF%^A>-JX!Kvc7$-8j=FLCg zA(b&aX4sELeNJ!3Ax)@Ll*`SRrjsX`^5TEZnNv{E-g(WuIoHE9y11k| z&75o*XjwvEkGvBzp5QCS zNwlAld!TLf%8Gf@sGI&<&kP%S_wB8KMFLo2j zUjTk=a})Y9$6yGx_S3q!{OIjbSEpjsE>(vj$o9f{iLXRX@u96tmL)F0cb6$LRDSgw zT)nN5qdK21(Ro*=rHMI7D~8`LQ|5H*65DdsM4AbZx9Uiog;oY5vQExU3*+mkCXS#q zkMM;^py>qnX)FuWvd)Pzy9t9wll{e5?CDS|@Xe+!D_aLV_@~L+%0|jyO&zly6xn3K8pK}&gxzt+i4;ADh2H7`8 z0kT|iJ~@86OCI>O4I6w1n~BP^dJFm4lY}tyMOQJvuIL^nZGUoIXuroD)HC7Kw~%I` z^^)jp#s=w;6>jMwz`aAy;z_lEs~Q)sAQ)Ei)^Jh&Y-Vnk=^~9Uy=;SOkgq;> zzCosRs;4y?Pcxdb;%t~)?9{|lEFcFS4s1?roldA`G>&)8Bu1O8#Agc+Xwp)s-LIRS zw#E0c;LFhA8=v&pnRhcfNrKt^77|jl3UJgu=uJ^I)8|E9Ui;blWXsBB=Oo0LJZ5H;#AlQBRv=O8Q6~9@k+CwyH3sUky?$4laQ;U2UksET7&(w4u>dvb5aE)`0 zuK8xuZK)iv0H?zwM_pe`BP!S5RC^)WWJfTa^pm&VEpo1tSGL;kV{N1KI#kqp-2~@H zfl|6oQw~GvAZw>2ugtgWD(nx^Zu~+Lh-Y`w6k4;%dAjWEaV=cV#-Vh=x6)b2HmoC# zSmzKr2C41G~w)Lua=*Ur1esxS(LI!uZ!k~*myY51v@6FoZy7%QkMTdcGy z4c19CujMz~cV$^>ihm5L-mJy!{OZg{0OGT;=G2*nPfiq}X^79>2pk3|td!{fDjprZuqtSF7Rwu=W42_5ZN- f|FHFcL$+RWtXymmISfJj4%+K5mZF^6vg-IRPnYfV literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/products/wso2mdm.jks b/integration-test/iot-community/src/test/resources/keystores/products/wso2mdm.jks new file mode 100644 index 0000000000000000000000000000000000000000..66b68ea395562b9716c8c579b944ae19b5dbf296 GIT binary patch literal 9485 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 W`0v%-2|WuF22km0Do6xx&3^&4V5S-X literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/stratos/client-truststore.jks b/integration-test/iot-community/src/test/resources/keystores/stratos/client-truststore.jks new file mode 100644 index 0000000000000000000000000000000000000000..71adf40f79eed76a33aa05bc6607e66a44d5f52a GIT binary patch literal 100420 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 W2CIDliC=%e#Q(_shA;lT-~R)ujX)~^ literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/stratos/client-truststores.jks b/integration-test/iot-community/src/test/resources/keystores/stratos/client-truststores.jks new file mode 100644 index 0000000000000000000000000000000000000000..c477431cbee1aa8d78f20cbad10b1e8b86fbbe55 GIT binary patch literal 101446 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 literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/stratos/wso2carbon.jks b/integration-test/iot-community/src/test/resources/keystores/stratos/wso2carbon.jks new file mode 100644 index 0000000000000000000000000000000000000000..357b9dbf1ce0ebdbb5159b6fcba23efbbf4d8d01 GIT binary patch literal 98772 zcmdqJ1z1(>+Ac~rNOw#?k!DUh1f)Saq#GuklLn1hY+?ih18XzWK-3F^sL9F&O=9 ze09r1_NxtlIO67(Ow+vxeRI%v2;igFG{iXeoh%@TXE%EAuADyb*|X^kG>iZuŬ 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 MVPz0BY}Nh$0C6FaHvj+t literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/stratos/wso2certs.jks b/integration-test/iot-community/src/test/resources/keystores/stratos/wso2certs.jks new file mode 100644 index 0000000000000000000000000000000000000000..c1e9ace3c233ac4cafac5aa1d11dc4656a6ce6db GIT binary patch literal 9521 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 literal 0 HcmV?d00001 diff --git a/integration-test/iot-community/src/test/resources/keystores/stratos/wso2emm.jks b/integration-test/iot-community/src/test/resources/keystores/stratos/wso2emm.jks new file mode 100644 index 0000000000000000000000000000000000000000..ae5670b037e576e9555ec42c10e2bf6bd97b50f4 GIT binary patch literal 4993 zcmeHK`%jzK8TJhmF6L%z=8%95go}anvkf+vFvl?kVuHCD0|v+V5{EzogkT2(1XbPE zU#hliHMQ%cXxiE?nzTq$RZZG7RmzrDTC+}SlPc}j?Wb1SPu-ue=i!_hlx$KbP5Wh) zp7(j*bI#}Qd(V40-{&vi`R$iqL8Ve@q^MQ;^?35a`i4rS9&q_;a19p03S?iG=nGr* zYMt7yDOaoWR604|I}_T0xdpjc96SNl21x`>U`-Shgyg?>+kK_?w674hfOQ=@4DsfJ z2L5;pTwVv-h5*NAK|{h8{P0z1-c`V`oHL!Ux*=*v`x?FBa~2>4)pTe%69VfsdiNl- zKzvObIwwqXhtOxQLoeMhFEv1Whx)-8?gilPRKf(?>ioe@GmN#tBHIlv^^eotBM>d5 zb|KpZH3c~dDWs>y8^9H+*k%u+zIMQ zU$oJ|zGEPI4p@Z(m-L<;g<`P&{2as12z>Ta5D@BU0hdC${e$MM`!`{I_8f>2H!KwD zp(1jquj4Pd2|x1^Itv1pWYXqgXIWZ+orxa`&!$@1n3a_>(0k9e+MwK_3*hRmkyB6r z9j}Wgz?NCw;z&f zr^u?dwqXDy*k+ge>B(W-|1m}+V<;bEz=@WpQbrsGrAV)x(iIl#f~zYR9H*2X4zG3$hnz5|cDj8j-E)>QHurXFDT#UhKJzwrFM*RxDY;*;;5 zf>Ic4C!`tzFu&u>|HGewK7GZ~&Q{|jgt=q2tfk7XKnWO3vr~)09A)_kG}`sYSqV%q ze_|EWu~?GF;_uo0OtH={=BKQc7S=1h*oAm_C$^wK=cMoc%_eWOwSsjrc9gpbmrQH4 zY84y3Ua={q2-9(+nnPWlqTM%?5>A$iNu5@chsDQZhBSW_Gpw@#4UoV`zXJ2n8-qmY zEL)8GU^Uu4f95+bb_|P5K=y;`N~o`Gy`{3A;RR$Kmf7TN6d#1UX7}ECgACle)qnIx zV$}#!Hq)ppJ9xUeYQ5irxuUZ>d=}6W?hZrACNo{%)RvuKG~RzfMskSv0D22S+>9z$ z_#V2VagiA&K$O1vU&iErUHbp!P7@n^d}sf@L+(9~-`u$kI+q4bi95)?z+krg;Or7> zy&MI8377-uKusC)D!vEpy`b|&Pl8(@z$(PYF#%ahVsPR=?H1O^~1CV*h`!^rF1f}(lxczf_I>U3Nik^hJyt_~nW>AyO z_{GgzFrxnIWnJ6yB23wjtqd7=Kwp7@OG`mv)g+(;j%F|&EHk%)>&x@6H@0Nce%``t zlr^AXfe3h5y|R#Dofoqc<*v+5eP0wKR@BF@v($K82*k!?3tY=#I%gd=Sloa-z+y}F zUX1*GV%8+oq)_1FC7?AiR4VD|x7Mc_4b7$v9Hh^4?VDg9WP*jw{L4eFGGUH0jK{8l zI^>2tuz@~ymvp9xHNX#^z|edF<0!ulqA-Cy2t##cmOGYfJTD)-=>`Mb4WG%nSW3^! zBEn!%zupv6u_P5z?kzz2lPRjAXa+K z4gT$wKm8DD7a|~g<5vux!+wJA+_;m>dRQt_|xf5Z8xqMa2rel^%0n{2BZG@8A11n3p~U0cwSkZ{=p^ zRbCC0Klo(>n@S~yf?Mfr+Z>1;$a@MLWclEO$IWZiVx7^|j|=-URE(LKhNK7R$|E>P z5EfXB%@;w}9GAd}$XXv%x%Bt^9*ZM~4}Vl!cj@kH7-xEi=t?2WR+C$YVVQH@eS`JM z$Ir0UWr4%`({)za_r^Mm^ i2j6^3eBBRkcFX_krv$bhh5#9!F9K + + + + + + diff --git a/integration-test/iot-community/src/test/resources/testng.xml b/integration-test/iot-community/src/test/resources/testng.xml new file mode 100644 index 0000000..5cde643 --- /dev/null +++ b/integration-test/iot-community/src/test/resources/testng.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/integration-test/pom.xml b/integration-test/pom.xml new file mode 100644 index 0000000..7be384a --- /dev/null +++ b/integration-test/pom.xml @@ -0,0 +1,39 @@ + + + + + + + io.entgra.product.community + product-parent + 5.1.3-SNAPSHOT + ../pom.xml + + + 4.0.0 + integration-test + pom + Entgra IoT - Integration Tests + + + iot-community + + + diff --git a/pom.xml b/pom.xml index 24a6301..46b6e56 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,7 @@ iot-core p2-profile distribution + integration-test @@ -101,6 +102,255 @@ entgra-iot-core ${project.version} + + org.wso2.carbon.automation + org.wso2.carbon.automation.engine + ${platform.integration.utils.version} + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + test + + + org.wso2.carbon.automation + org.wso2.carbon.automation.test.utils + ${test.framework.version} + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + test + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.utils + ${test.framework.version} + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + test + + + org.wso2.carbon.automation + org.wso2.carbon.automation.extensions + ${platform.integration.utils.version} + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + org.apache.ftpserver + ftpserver-core + + + org.apache.activemq + activemq-all + + + org.apache.tomcat.embed + tomcat-embed-core + + + org.apache.tomcat.embed + tomcat-embed-logging-juli + + + org.springframework.ws.wso2 + spring.framework + + + org.apache.cxf + cxf-rt-frontend-jaxrs + + + org.seleniumhq.selenium + selenium-java + + + com.opera + operadriver + + + com.saucelabs.selenium + sauce-ondemand-driver + + + com.saucelabs.selenium + selenium-client-factory + + + org.apache.axis2.wso2 + axis2 + + + org.apache.ws.commons.axiom.wso2 + axiom + + + net.lingala.zip4j + zip4j + + + test + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.extensions + ${automation.utils.version} + test + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + org.apache.ftpserver + ftpserver-core + + + org.apache.activemq + activemq-all + + + org.apache.tomcat.embed + tomcat-embed-core + + + org.apache.tomcat.embed + tomcat-embed-logging-juli + + + org.springframework.ws.wso2 + spring.framework + + + org.apache.cxf + cxf-rt-frontend-jaxrs + + + org.seleniumhq.selenium + selenium-java + + + com.opera + operadriver + + + org.apache.jmeter + ApacheJMeter_core + + + com.saucelabs.selenium + sauce-ondemand-driver + + + com.saucelabs.selenium + selenium-client-factory + + + org.apache.axis2.wso2 + axis2 + + + org.apache.ws.commons.axiom.wso2 + axiom + + + net.lingala.zip4j + zip4j + + + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.admin.client + ${automation.utils.version} + test + + + org.slf4j + slf4j-api + + + org.apache.httpcomponents + httpclient + + + org.apache.httpcomponents + httpcore + + + org.wso2.carbon.commons + org.wso2.carbon.user.mgt.stub + + + org.wso2.carbon.commons + org.wso2.carbon.ndatasource.stub + + + org.wso2.carbon.commons + org.wso2.carbon.authenticator.stub + + + org.wso2.carbon + org.wso2.carbon.utils + + + + + com.google.code.gson + gson + ${google.gson.version} + @@ -123,6 +373,11 @@ 6.0.13-SNAPSHOT + + 2.8.5 + 4.4.3 + 4.4.2 + 4.4.2