From caf6f8974354b9918709169f3657ac4964616437 Mon Sep 17 00:00:00 2001 From: sinthuja Date: Wed, 29 Mar 2017 20:40:45 +0530 Subject: [PATCH 1/2] Fixing the integration test framework to work with new packaging structure. --- modules/integration/pom.xml | 3 +- modules/integration/tests-artifacts/pom.xml | 33 ---- .../tests-common/admin-clients/pom.xml | 34 ---- .../tests-common/integration-common/pom.xml | 145 ++++++++++++++++++ .../iot/integration/common/AssertUtil.java | 0 .../iot/integration/common/Constants.java | 2 +- .../iot/integration/common/IOTHttpClient.java | 0 .../iot/integration/common/IOTResponse.java | 0 .../iot/integration/common/OAuthUtil.java | 0 .../integration/common/PayloadGenerator.java | 0 .../iot/integration/common/RestClient.java | 0 .../wso2/iot/integration/common/TestBase.java | 0 .../extensions/AnalyticsServerExtension.java | 2 +- .../extensions/BrokerServerExtension.java | 2 +- .../extensions/CustomTestServerManager.java | 56 +++++-- .../extensions/IOTServerExtension.java | 2 +- .../integration-test-utils/pom.xml | 41 ----- modules/integration/tests-common/pom.xml | 3 +- modules/integration/tests-integration/pom.xml | 4 + .../src/test/resources/automation.xml | 6 +- .../keystores/products/wso2certs.jks | Bin 14185 -> 13427 bytes .../resources/keystores/stratos/wso2certs.jks | Bin 14185 -> 13427 bytes modules/integration/tests-platform/pom.xml | 33 ---- pom.xml | 5 + 24 files changed, 209 insertions(+), 162 deletions(-) delete mode 100644 modules/integration/tests-artifacts/pom.xml delete mode 100644 modules/integration/tests-common/admin-clients/pom.xml create mode 100644 modules/integration/tests-common/integration-common/pom.xml rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/AssertUtil.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/Constants.java (99%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/IOTHttpClient.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/IOTResponse.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/OAuthUtil.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/PayloadGenerator.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/RestClient.java (100%) rename modules/integration/{tests-integration/src/test => tests-common/integration-common/src/main}/java/org/wso2/iot/integration/common/TestBase.java (100%) rename modules/integration/{tests-integration/src/test/java/org/wso2/iot/integration => tests-common/integration-common/src/main/java/org/wso2/iot/integration/common}/extensions/AnalyticsServerExtension.java (98%) rename modules/integration/{tests-integration/src/test/java/org/wso2/iot/integration => tests-common/integration-common/src/main/java/org/wso2/iot/integration/common}/extensions/BrokerServerExtension.java (98%) rename modules/integration/{tests-integration/src/test/java/org/wso2/iot/integration => tests-common/integration-common/src/main/java/org/wso2/iot/integration/common}/extensions/CustomTestServerManager.java (71%) rename modules/integration/{tests-integration/src/test/java/org/wso2/iot/integration => tests-common/integration-common/src/main/java/org/wso2/iot/integration/common}/extensions/IOTServerExtension.java (98%) delete mode 100644 modules/integration/tests-common/integration-test-utils/pom.xml delete mode 100644 modules/integration/tests-platform/pom.xml diff --git a/modules/integration/pom.xml b/modules/integration/pom.xml index 53891d6b..373a5ea6 100644 --- a/modules/integration/pom.xml +++ b/modules/integration/pom.xml @@ -32,9 +32,8 @@ http://wso2.org - tests-artifacts tests-common - + tests-integration tests-iot-web-ui diff --git a/modules/integration/tests-artifacts/pom.xml b/modules/integration/tests-artifacts/pom.xml deleted file mode 100644 index b82a7758..00000000 --- a/modules/integration/tests-artifacts/pom.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - org.wso2.iot - wso2iot-integration - 3.1.0-SNAPSHOT - ../pom.xml - - - 4.0.0 - tests-artifacts - pom - WSO2 IoT - Integration Test Artifacts - - diff --git a/modules/integration/tests-common/admin-clients/pom.xml b/modules/integration/tests-common/admin-clients/pom.xml deleted file mode 100644 index a536774f..00000000 --- a/modules/integration/tests-common/admin-clients/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - org.wso2.iot - tests-common - 3.1.0-SNAPSHOT - ../pom.xml - - - 4.0.0 - org.wso2.carbon.iot.integration.common.clients - jar - WSO2 IoT - Integration Test Common Admin Clients - - diff --git a/modules/integration/tests-common/integration-common/pom.xml b/modules/integration/tests-common/integration-common/pom.xml new file mode 100644 index 00000000..2270613b --- /dev/null +++ b/modules/integration/tests-common/integration-common/pom.xml @@ -0,0 +1,145 @@ + + + + + + + org.wso2.iot + tests-common + 3.1.0-SNAPSHOT + ../pom.xml + + + 4.0.0 + org.wso2.carbon.iot.integration.common + jar + WSO2 IoT - Integration Common + + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.admin.client + compile + + + org.wso2.carbon + org.wso2.carbon.user.mgt.stub + + + org.wso2.carbon + org.wso2.carbon.logging.view.stub + + + org.wso2.carbon + org.wso2.carbon.ndatasource.stub + + + org.wso2.carbon + org.wso2.carbon.server.admin.stub + + + org.wso2.carbon + org.wso2.carbon.throttle.stub + + + org.wso2.carbon + org.wso2.carbon.tenant.mgt.stub + + + org.wso2.carbon + org.wso2.carbon.application.mgt.stub + + + org.wso2.carbon + org.wso2.carbon.security.mgt.stub + + + org.wso2.carbon + org.wso2.carbon.identity.user.profile.stub + + + org.wso2.carbon + org.wso2.carbon.identity.user.profile.stub + + + org.slf4j + slf4j-api + + + + + org.wso2.carbon + org.wso2.carbon.utils + + + org.wso2.carbon.automation + org.wso2.carbon.automation.extensions + compile + + + org.slf4j + slf4j-api + + + + + org.seleniumhq.selenium + selenium-java + + + org.seleniumhq.selenium + selenium-android-driver + + + compile + + + org.testng + testng + compile + + + org.wso2.carbon.automation + org.wso2.carbon.automation.test.utils + compile + + + org.wso2.carbon.automation + org.wso2.carbon.automation.engine + compile + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.extensions + compile + + + com.google.code.gson + gson + compile + + + org.wso2.carbon.automationutils + org.wso2.carbon.integration.common.utils + compile + + + + diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/AssertUtil.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/AssertUtil.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/AssertUtil.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/AssertUtil.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/Constants.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java similarity index 99% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/Constants.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java index 03e58241..852e9130 100644 --- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/Constants.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java @@ -60,7 +60,7 @@ public final class Constants { public static final String OAUTH_TOKEN_PAYLOAD = "username=admin&password=admin&grant_type=password&scope=perm:android:enroll perm:android:wipe perm:android:ring perm:android:lock-devices perm:android:configure-vpn perm:android:configure-wifi perm:android:enroll perm:android:uninstall-application perm:android:manage-configuration perm:android:location perm:android:install-application perm:android:mute perm:android:change-lock-code perm:android:blacklist-applications perm:android:set-password-policy perm:android:encrypt-storage perm:android:clear-password perm:android:enterprise-wipe perm:android:info perm:android:view-configuration perm:android:upgrade-firmware perm:android:set-webclip perm:android:send-notification perm:android:disenroll perm:android:update-application perm:android:unlock-devices perm:android:control-camera perm:android:reboot perm:android:logcat appm:subscribe perm:sign-csr perm:admin:devices:view perm:roles:add perm:roles:add-users perm:roles:update perm:roles:permissions perm:roles:details perm:roles:view perm:roles:create-combined-role perm:roles:delete perm:dashboard:vulnerabilities perm:dashboard:non-compliant-count perm:dashboard:non-compliant perm:dashboard:by-groups perm:dashboard:device-counts perm:dashboard:feature-non-compliant perm:dashboard:count-overview perm:dashboard:filtered-count perm:dashboard:details perm:get-activity perm:devices:delete perm:devices:applications perm:devices:effective-policy perm:devices:compliance-data perm:devices:features perm:devices:operations perm:devices:search perm:devices:details perm:devices:update perm:devices:view perm:view-configuration perm:manage-configuration perm:policies:remove perm:policies:priorities perm:policies:deactivate perm:policies:get-policy-details perm:policies:manage perm:policies:activate perm:policies:update perm:policies:changes perm:policies:get-details perm:users:add perm:users:details perm:users:count perm:users:delete perm:users:roles perm:users:user-details perm:users:credentials perm:users:search perm:users:is-exist perm:users:update perm:users:send-invitation perm:admin-users:view perm:groups:devices perm:groups:update perm:groups:add perm:groups:device perm:groups:devices-count perm:groups:remove perm:groups:groups perm:groups:groups-view perm:groups:share perm:groups:count perm:groups:roles perm:groups:devices-remove perm:groups:devices-add perm:groups:assign perm:device-types:features perm:device-types:types perm:applications:install perm:applications:uninstall perm:admin-groups:count perm:admin-groups:view perm:notifications:mark-checked perm:notifications:view perm:admin:certificates:delete perm:admin:certificates:details perm:admin:certificates:view perm:admin:certificates:add perm:admin:certificates:verify perm:ios:enroll perm:ios:view-device perm:ios:apn perm:ios:ldap perm:ios:enterprise-app perm:ios:store-application perm:ios:remove-application perm:ios:app-list perm:ios:profile-list perm:ios:lock perm:ios:enterprise-wipe perm:ios:device-info perm:ios:restriction perm:ios:email perm:ios:cellular perm:ios:applications perm:ios:wifi perm:ios:ring perm:ios:location perm:ios:notification perm:ios:airplay perm:ios:caldav perm:ios:cal-subscription perm:ios:passcode-policy perm:ios:webclip perm:ios:vpn perm:ios:per-app-vpn perm:ios:app-to-per-app-vpn perm:ios:app-lock perm:ios:clear-passcode perm:ios:remove-profile perm:ios:get-restrictions perm:ios:wipe-data perm:admin"; private static StringBuffer dynamicClientPayloadBuffer = new StringBuffer(); public static final String API_APP_REGISTRATION_PAYLOAD = dynamicClientPayloadBuffer.append("{ \n" - + " \"applicationName\":\"app_12345\",\n" + " \"isAllowedToAllDomains\":false,\n" + + " \"applicationName\":\"app_123456\",\n" + " \"isAllowedToAllDomains\":false,\n" + " \"tags\":[\"android\", \"device_management\"],\n" + " \"isMappingAnExistingOAuthApp\":false\n" + "}").toString(); public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view " diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/IOTHttpClient.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/IOTHttpClient.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/IOTHttpClient.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/IOTResponse.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/IOTResponse.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/IOTResponse.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/IOTResponse.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/OAuthUtil.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/OAuthUtil.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/OAuthUtil.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/PayloadGenerator.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/PayloadGenerator.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/PayloadGenerator.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/RestClient.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/RestClient.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/RestClient.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/RestClient.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/TestBase.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java similarity index 100% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/common/TestBase.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/TestBase.java diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/AnalyticsServerExtension.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java similarity index 98% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/AnalyticsServerExtension.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java index a4248b10..23e932c0 100644 --- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/AnalyticsServerExtension.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/AnalyticsServerExtension.java @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.wso2.iot.integration.extensions; +package org.wso2.iot.integration.common.extensions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/BrokerServerExtension.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java similarity index 98% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/BrokerServerExtension.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java index 2bb86d87..881323b6 100644 --- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/BrokerServerExtension.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/BrokerServerExtension.java @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.wso2.iot.integration.extensions; +package org.wso2.iot.integration.common.extensions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/CustomTestServerManager.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java similarity index 71% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/CustomTestServerManager.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java index 7f383780..b6e858c6 100644 --- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/CustomTestServerManager.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/CustomTestServerManager.java @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.wso2.iot.integration.extensions; +package org.wso2.iot.integration.common.extensions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -26,6 +26,7 @@ import org.wso2.carbon.automation.extensions.ExtensionConstants; import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerManager; import javax.xml.xpath.XPathExpressionException; +import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -54,7 +55,7 @@ public class CustomTestServerManager { } public CustomTestServerManager(AutomationContext context, String carbonZip, - Map commandMap) { + Map commandMap) { carbonServer = new CarbonServerManager(context); this.carbonZip = carbonZip; if (commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) != null) { @@ -91,24 +92,40 @@ public class CustomTestServerManager { * 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 + * Carbon server */ - public String startServer(String server) + public synchronized String startServer(String server) throws AutomationFrameworkException, IOException, XPathExpressionException { - if(carbonHome == null) { + 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"); } - carbonHome = carbonServer.setUpCarbonHome(carbonZip) + "/" + server; + 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 ); + 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 { @@ -118,12 +135,33 @@ public class CustomTestServerManager { 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("wso2iot")) { + return file.getAbsolutePath(); + } + } + } + } + } + } + return null; + } + /** * Restarting server already started by the method startServer + * * @throws AutomationFrameworkException */ public void restartGracefully() throws AutomationFrameworkException { - if(carbonHome == null) { + if (carbonHome == null) { throw new AutomationFrameworkException("No Running Server found to restart. " + "Please make sure whether server is started"); } @@ -142,6 +180,4 @@ public class CustomTestServerManager { } - - } diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/IOTServerExtension.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java similarity index 98% rename from modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/IOTServerExtension.java rename to modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java index e8df4bad..a5d414d8 100644 --- a/modules/integration/tests-integration/src/test/java/org/wso2/iot/integration/extensions/IOTServerExtension.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/extensions/IOTServerExtension.java @@ -15,7 +15,7 @@ * specific language governing permissions and limitations * under the License. */ -package org.wso2.iot.integration.extensions; +package org.wso2.iot.integration.common.extensions; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/modules/integration/tests-common/integration-test-utils/pom.xml b/modules/integration/tests-common/integration-test-utils/pom.xml deleted file mode 100644 index 8095b03f..00000000 --- a/modules/integration/tests-common/integration-test-utils/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - org.wso2.iot - tests-common - 3.1.0-SNAPSHOT - ../pom.xml - - - 4.0.0 - org.wso2.carbon.iot.integration.common.utils - jar - WSO2 IoT - Integration Test Common Utils - - - - Apache License Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - - - - diff --git a/modules/integration/tests-common/pom.xml b/modules/integration/tests-common/pom.xml index fa0ba5f8..053d8c77 100644 --- a/modules/integration/tests-common/pom.xml +++ b/modules/integration/tests-common/pom.xml @@ -31,8 +31,7 @@ WSO2 IoT - Integration Test Common - - + integration-common web-ui-pages diff --git a/modules/integration/tests-integration/pom.xml b/modules/integration/tests-integration/pom.xml index 124c5b2a..2ec67fd5 100644 --- a/modules/integration/tests-integration/pom.xml +++ b/modules/integration/tests-integration/pom.xml @@ -261,6 +261,10 @@ com.google.code.gson gson + + org.wso2.iot + org.wso2.carbon.iot.integration.common + diff --git a/modules/integration/tests-integration/src/test/resources/automation.xml b/modules/integration/tests-integration/src/test/resources/automation.xml index 5e6200ee..eddb09c1 100644 --- a/modules/integration/tests-integration/src/test/resources/automation.xml +++ b/modules/integration/tests-integration/src/test/resources/automation.xml @@ -189,9 +189,9 @@ - - org.wso2.iot.integration.extensions.IOTServerExtension - + + org.wso2.iot.integration.common.extensions.IOTServerExtension + org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension diff --git a/modules/integration/tests-integration/src/test/resources/keystores/products/wso2certs.jks b/modules/integration/tests-integration/src/test/resources/keystores/products/wso2certs.jks index eb27997d520b2065759b5db5622a601fe56b3059..d40aca984823d4ab2381e677fb7c6fbce0c5e933 100644 GIT binary patch delta 8560 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 - - - - - org.wso2.iot - wso2iot-integration - 3.1.0-SNAPSHOT - ../pom.xml - - - 4.0.0 - tests-platform - pom - WSO2 IoT - Integration Test Platform - - diff --git a/pom.xml b/pom.xml index 569f7f67..05ecbe12 100644 --- a/pom.xml +++ b/pom.xml @@ -879,6 +879,11 @@ gson ${google.gson.version} + + org.wso2.iot + org.wso2.carbon.iot.integration.common + ${product.iot.version} + junit junit From c189704778a8f36ca4c80ce0b752c1757e2dbe3e Mon Sep 17 00:00:00 2001 From: sinthuja Date: Wed, 29 Mar 2017 23:15:34 +0530 Subject: [PATCH 2/2] Fixing the test cases which was passing in IoT 3.0.0. --- .../iot/integration/common/Constants.java | 98 +++++++++---------- modules/integration/tests-integration/pom.xml | 2 +- pom.xml | 2 +- 3 files changed, 49 insertions(+), 53 deletions(-) diff --git a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java index 852e9130..d6bf713a 100644 --- a/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java +++ b/modules/integration/tests-common/integration-common/src/main/java/org/wso2/iot/integration/common/Constants.java @@ -63,37 +63,32 @@ public final class Constants { + " \"applicationName\":\"app_123456\",\n" + " \"isAllowedToAllDomains\":false,\n" + " \"tags\":[\"android\", \"device_management\"],\n" + " \"isMappingAnExistingOAuthApp\":false\n" + "}").toString(); - public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view " - + "perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete " - + "perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view " - + "perm:admin:devices:view perm:android:blacklist-applications perm:android:change-lock-code " - + "perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi " - + "perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage " - + "perm:android:enroll perm:android:enterprise-wipe perm:android:info " - + "perm:android:install-application perm:android:location perm:android:lock-devices " - + "perm:android:logcat perm:android:manage-configuration perm:android:mute perm:android:reboot " - + "perm:android:ring perm:android:send-notification perm:android:set-password-policy " - + "perm:android:set-webclip perm:android:uninstall-application perm:android:unlock-devices " - + "perm:android:update-application perm:android:upgrade-firmware perm:android:view-configuration " - + "perm:android:wipe perm:applications:install perm:applications:uninstall perm:dashboard:by-groups " - + "perm:dashboard:count-overview perm:dashboard:details perm:dashboard:device-counts " - + "perm:dashboard:feature-non-compliant perm:dashboard:filtered-count perm:dashboard:non-compliant " - + "perm:dashboard:non-compliant-count perm:dashboard:vulnerabilities perm:device-types:features " - + "perm:device-types:types perm:devices:applications perm:devices:compliance-data perm:devices:delete" - + " perm:devices:details perm:devices:effective-policy perm:devices:features perm:devices:operations " - + "perm:devices:search perm:devices:update perm:devices:view perm:get-activity perm:groups:add " - + "perm:groups:assign perm:groups:count perm:groups:device perm:groups:devices " - + "perm:groups:devices-add perm:groups:devices-count perm:groups:devices-remove perm:groups:groups " - + "perm:groups:groups-view perm:groups:remove perm:groups:roles perm:groups:share perm:groups:update " - + "perm:manage-configuration perm:notifications:mark-checked perm:notifications:view " - + "perm:policies:activate perm:policies:changes perm:policies:deactivate perm:policies:get-details " - + "perm:policies:get-policy-details perm:policies:manage perm:policies:priorities " - + "perm:policies:remove perm:policies:update perm:roles:add perm:roles:add-users " - + "perm:roles:create-combined-role perm:roles:delete perm:roles:details perm:roles:permissions " - + "perm:roles:update perm:roles:view perm:users:add perm:users:count perm:users:credentials " - + "perm:users:delete perm:users:details perm:users:is-exist perm:users:roles perm:users:search " - + "perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration " - + "perm:devices:change-status"; + public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view " + + "perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete " + + "perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view " + + "perm:admin:devices:view perm:android:blacklist-applications perm:android:change-lock-code " + + "perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi " + + "perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage " + + "perm:android:enroll perm:android:enterprise-wipe perm:android:info perm:android:install-application " + + "perm:android:location perm:android:lock-devices perm:android:logcat perm:android:manage-configuration " + + "perm:android:mute perm:android:reboot perm:android:ring perm:android:send-notification " + + "perm:android:set-password-policy perm:android:set-webclip perm:android:uninstall-application " + + "perm:android:unlock-devices perm:android:update-application perm:android:upgrade-firmware " + + "perm:android:view-configuration perm:android:wipe perm:applications:install perm:applications:uninstall " + + "perm:device-types:features perm:device-types:types perm:devices:applications " + + "perm:devices:compliance-data perm:devices:delete perm:devices:details perm:devices:effective-policy " + + "perm:devices:features perm:devices:operations perm:devices:search perm:devices:update " + + "perm:devices:view perm:get-activity perm:groups:add perm:groups:assign perm:groups:count " + + "perm:groups:device perm:groups:devices perm:groups:devices-add perm:groups:devices-count " + + "perm:groups:devices-remove perm:groups:groups perm:groups:groups-view perm:groups:remove " + + "perm:groups:roles perm:groups:share perm:groups:update perm:manage-configuration " + + "perm:notifications:mark-checked perm:notifications:view perm:policies:activate " + + "perm:policies:changes perm:policies:deactivate perm:policies:get-details perm:policies:get-policy-details " + + "perm:policies:manage perm:policies:priorities perm:policies:remove perm:policies:update perm:roles:add" + + " perm:roles:add-users perm:roles:create-combined-role perm:roles:delete perm:roles:details " + + "perm:roles:permissions perm:roles:update perm:roles:view perm:users:add perm:users:count " + + "perm:users:credentials perm:users:delete perm:users:details perm:users:is-exist perm:users:roles " + + "perm:users:search perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration"; private APIApplicationRegistration() { throw new AssertionError(); @@ -137,8 +132,8 @@ public final class Constants { 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\"}}"; + "\"password\" : \"admin\", \"ownership\" : \"BYOD\", " + + "\"token\" : \"cbe53efd46ec612c456540f8dfef5428\"}}"; private WindowsEnrollment() { throw new AssertionError(); @@ -146,14 +141,14 @@ public final class Constants { } public static final class AndroidOperations { - private static final String PAYLOAD_COMMON = "["+DEVICE_ID+"]"; + private 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" + + " \"enabled\": false\n" + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\" \n" + " ]\n" + "}"; public static final String WIPE_DATA_OPERATION = "wipe_data"; @@ -171,7 +166,7 @@ public final class Constants { 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+"\"]," + public static final String LOCK_OPERATION_PAYLOAD = "{ \"deviceIDs\": [\"" + DEVICE_ID + "\"]," + "\"operation\": { \"message\": \"string\", \"hardLockEnabled\": false }}"; public static final String LOCATION_ENDPOINT = "location"; @@ -181,14 +176,14 @@ public final class Constants { 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_INFO_PAYLOAD = "[\"" + DEVICE_ID + "\"]"; 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" + "}"; + + " },\n" + " \"deviceIDs\": [\n" + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; public static final String APPLICATION_LIST_ENDPOINT = "applications"; public static final String APPLICATION_LIST_PAYLOAD = PAYLOAD_COMMON; @@ -200,50 +195,51 @@ public final class Constants { public static final String MUTE_PAYLOAD = PAYLOAD_COMMON; public static final String INSTALL_APPS_ENDPOINT = "install-application"; - public static final String INSTALL_APPS_PAYLOAD = "{\n" + " \"deviceIDs\": [\n" + " \""+DEVICE_ID+"\"\n" + 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" + + " \"" + DEVICE_ID + "\"\n" + " ],\n" + " \"operation\": {\n" + " \"appIdentifier\": \"string\",\n" + " \"type\": \"string\",\n" + " \"url\": \"string\",\n" + " \"name\": \"string\"\n" + " }\n" + "}"; public static final String BLACKLIST_APPS_ENDPOINT = "blacklist-applications"; public static final String NOTIFICATION_ENDPOINT = "send-notification"; - public static final String NOTIFICATION_PAYLOAD = "{\n" + " \"deviceIDs\": [\n" + " \""+DEVICE_ID+"\"\n" + 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" + + " \"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" + "}"; + + " },\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 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"; + + " },\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" + "}"; + + " \"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" + "}"; + + " \"" + DEVICE_ID + "\"\n" + " ]\n" + "}"; private AndroidOperations() { throw new AssertionError(); @@ -258,12 +254,12 @@ public final class Constants { public static final String LICENSE_SECTION = "This"; public static final String LICENSE_ENDPOINT = DEVICE_MGT_ENDPOINT + "license"; public static final String APP_LIST_ENDPOINT = DEVICE_MGT_ENDPOINT + "appList/" + - Constants.DEVICE_ID; + Constants.DEVICE_ID; public static final String REQUEST_MODIFY_DEVICE_EXPECTED = "{\"responseMessage\":\"Device information " + - "has modified successfully.\"}"; + "has modified successfully.\"}"; public static final String APPLIST_PAYLOAD = "{\"id\":\"1\"," + - "\"applicationIdentifier\": \"appid\",\"\"platform\": \"android\"," + - "\"name\": \"testapp\"}"; + "\"applicationIdentifier\": \"appid\",\"\"platform\": \"android\"," + + "\"name\": \"testapp\"}"; public static final String RESPONSE_PAYLOAD_FILE_NAME = "android-device-mgt-response-payloads.json"; private AndroidDeviceManagement() { diff --git a/modules/integration/tests-integration/pom.xml b/modules/integration/tests-integration/pom.xml index 2ec67fd5..41e28ea2 100644 --- a/modules/integration/tests-integration/pom.xml +++ b/modules/integration/tests-integration/pom.xml @@ -268,7 +268,7 @@ - true + false diff --git a/pom.xml b/pom.xml index b2058012..fd02c575 100644 --- a/pom.xml +++ b/pom.xml @@ -1518,7 +1518,7 @@ - 2.0.36 + 2.0.38 [2.0.0, 3.0.0)