graphMap = new HashMap<>();
+ private Log log = LogFactory.getLog(ConnectedCupDeviceViewPage.class);
+ private WebDriver driverServer;
+ private WebDriver driverDevice;
+ private UIElementMapper uiElementMapper;
+ private GraphHandler handler;
+
+ public ConnectedCupDeviceViewPage(WebDriver driver, String name) throws IOException {
+ this.driverServer = driver;
+ this.driverDevice = driver;
+ this.uiElementMapper = UIElementMapper.getInstance();
+ this.handler = new GraphHandler(driverServer);
+
+ if (!driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.sample.connectedcup.view.page.title"))).getText().
+ contains(name)) {
+ throw new IllegalStateException("This is not the Connected cup device type view page");
+ }
+ handler = new GraphHandler(driverServer);
+ graphMap = handler.getGraphMap();
+ }
+
+ /**
+ * This method executes Connected cup sample web app.
+ * @return : The Connected cup web page.
+ */
+ public ConnectedCupDeviceInterface gotoDevice() throws IOException {
+ WebDriverWait wait = new WebDriverWait(driverServer, UIUtils.webDriverTime);
+ wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(
+ uiElementMapper.getElement("iot.sample.connectedcup.gotodevice.xpath"))));
+ String link = driverServer.findElement(By.xpath(
+ uiElementMapper.getElement("iot.sample.connectedcup.gotodevice.xpath"))).getAttribute("href");
+ driverDevice.get(link);
+ return new ConnectedCupDeviceInterface(driverDevice);
+ }
+
+ /**
+ * Gets the connected cup device web app URL.
+ * @return : Link of the connected cup device web app.
+ */
+ public String getDeviceLink() {
+ WebDriverWait wait = new WebDriverWait(driverServer, UIUtils.webDriverTime);
+ wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(
+ uiElementMapper.getElement("iot.sample.connectedcup.gotodevice.xpath"))));
+ return driverServer.findElement(By.xpath(
+ uiElementMapper.getElement("iot.sample.connectedcup.gotodevice.xpath"))).getAttribute("href");
+ }
+
+ /**
+ * This method checks whether there are expected number of graphs are available in the UI.
+ * @param count : Number of graphs expected.
+ * @return : True if there are count number of graphs. False otherwise.
+ */
+ public boolean isGraphsAvailable(int count) {
+ return handler.getGraphCount() == count;
+ }
+
+ /**
+ * Checks whether the selected graph axes represent the given values.
+ * @param axis : Graph axis. X or Y
+ * @param graphId : Id of the graph
+ * @param axisName : Name which is expected to be displayed.
+ * @return : True if given axis contains the expected title. False otherwise or, there are no graphs present.
+ */
+ public boolean graphAxisName(String axis, String graphId, String axisName) {
+ if (graphMap.size() != 0) {
+ if (axis.toLowerCase().contains("x")) {
+ return graphMap.get(graphId).getxAxis().contains(axisName);
+ } else {
+ return graphMap.get(graphId).getyAxis().contains(axisName);
+ }
+ }
+ log.error("There are no graphs found.");
+ return false;
+ }
+
+ /**
+ * Check the legend of the selected graph have the expected title.
+ * @param graphId : Id of the graph.
+ * @param legend : Expected value to be displayed in the legend.
+ * @return : True if legend contains the expected value. False otherwise or there are no graphs present.
+ */
+ public boolean graphLegendName(String graphId, String legend) {
+ if (graphMap.size() != 0) {
+ if (graphMap.get(graphId) != null){
+ return graphMap.get(graphId).getLegend().contains(legend);
+ }
+ log.error(String.format("Graph for %s is not found.", graphId));
+ return false;
+ }
+ log.error("There are no graphs found.");
+ return false;
+ }
+
+ /**
+ * Method to check the graph path is displayed in the UI for given graph.
+ * @param graphId : Id of the graph.
+ * @return : True of path is displayed. False otherwise or no graphs are present.
+ */
+ public boolean checkGraphPath(String graphId) {
+ WebElement graph = handler.getGraphById(graphId);
+ if (graph != null) {
+ return handler.isPathAvailable(graph);
+ } else {
+ log.error(String.format("Graph for Id %s is not present.", graphId));
+ return false;
+ }
+ }
+
+ /**
+ * Method to verify that the graphs get readings from the device.
+ * @param graphId : Id of the graph.
+ * @param value : Value which is expected to be displayed in the graph.
+ * @return : True if the value is displayed in the graph. False otherwise or graph is null.
+ */
+ public boolean checkGraphValues(String graphId, String value) {
+ WebElement graph = handler.getGraphById(graphId);
+ driverServer.manage().timeouts().implicitlyWait(UIUtils.webDriverTime, TimeUnit.SECONDS);
+ if (graph != null) {
+ return handler.isPathGetValues(graph, value);
+ } else {
+ log.error(String.format("Graph for Id %s is not present.", graphId));
+ return false;
+ }
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/AddUserPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/AddUserPage.java
new file mode 100644
index 00000000..02fce92f
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/AddUserPage.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.wso2.iot.integration.ui.pages.UIUtils;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+import java.io.IOException;
+
+
+/**
+ * This class represents the add user page of the IOT server.
+ */
+public class AddUserPage {
+
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+
+ public AddUserPage(WebDriver driver) throws IOException {
+ this.driver = driver;
+ this.uiElementMapper = UIElementMapper.getInstance();
+
+ WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
+ if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))) {
+ throw new IllegalStateException("This is not the Add User page");
+ }
+ }
+
+ /**
+ * Method to create a new user.
+ *
+ * @param userName The username for the user.
+ * @param firstName The user's first name.
+ * @param lastName The user's last name.
+ * @param email Email address of the user.
+ * @return The user added confirmation page.
+ */
+ public UserAddedConfirmationPage createNewUser(String userName, String firstName, String lastName, String email)
+ throws IOException {
+
+ WebElement userNameField = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.admin.addUser.username.id")));
+ WebElement firstNameField = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.admin.addUser.firstName.id")));
+ WebElement lastNameField = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.admin.addUser.lastName.id")));
+ WebElement emailField = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.admin.addUser.email.id")));
+
+ userNameField.sendKeys(userName);
+ firstNameField.sendKeys(firstName);
+ lastNameField.sendKeys(lastName);
+ emailField.sendKeys(email);
+
+ driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath"))).click();
+
+ return new UserAddedConfirmationPage(driver);
+ }
+
+}
\ No newline at end of file
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/EditUserPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/EditUserPage.java
new file mode 100644
index 00000000..dcba72e6
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/EditUserPage.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.wso2.iot.integration.ui.pages.UIUtils;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+/**
+ * This class represents the Edit user page of the IOT server
+ */
+public class EditUserPage {
+
+ private static final Log log = LogFactory.getLog(EditUserPage.class);
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+
+ public EditUserPage(WebDriver driver) throws Exception {
+ this.driver = driver;
+ this.uiElementMapper = UIElementMapper.getInstance();
+
+ WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
+ if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
+ throw new IllegalStateException("This is not the Edit User page");
+ }
+ }
+
+ public void editUser(String password, String firstName, String lastName) {
+ driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.add.input.password.xpath")));
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java
new file mode 100644
index 00000000..90582de4
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/NewUserRegisterPage.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.wso2.iot.integration.ui.pages.UIUtils;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+import org.wso2.iot.integration.ui.pages.login.LoginPage;
+
+import java.io.IOException;
+
+/**
+ * This class represents the new user registration page.
+ * User registration page has the registration form for new users to enter the required data and the submit button.
+ */
+public class NewUserRegisterPage {
+
+ private WebDriver driver;
+ private WebElement firstNameField;
+ private WebElement lastNameField;
+ private WebElement emailField;
+ private WebElement userNameField;
+ private WebElement passwordField;
+ private WebElement passwordConfirmationField;
+ private WebElement registerButton;
+
+ public NewUserRegisterPage(WebDriver driver) throws IOException {
+ this.driver = driver;
+ UIElementMapper uiElementMapper = UIElementMapper.getInstance();
+
+ // Check that we're on the right page.
+ WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
+ if (!webDriverWait.until(ExpectedConditions.titleContains("Register | IoT Server"))) {
+ throw new IllegalStateException("This is not the Register page");
+ }
+
+ firstNameField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.firstname.xpath")));
+ lastNameField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.lastname.xpath")));
+ emailField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.email.xpath")));
+ userNameField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.username.xpath")));
+ passwordField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.password.xpath")));
+ passwordConfirmationField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.input.confirmpassword.xpath")));
+ registerButton = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.add.register.button.xpath")));
+ }
+
+ /**
+ * The method to register a new user.
+ *
+ * @param firstName First name of the user.
+ * @param lastName Last name of the user.
+ * @param email Email address of the user.
+ * @param userName User name for the user. This will be used to login to the server.
+ * @param password The password for the user.
+ * @param confirmPassword Password confirmation.
+ * @return After the user is created it navigates back to the login page.
+ * @throws IOException
+ */
+ public LoginPage registerUser(String firstName, String lastName, String email, String userName, String password,
+ String confirmPassword) throws IOException {
+ handleAction(firstName, lastName, email, userName, password, confirmPassword);
+ return new LoginPage(driver);
+ }
+
+ /**
+ * Following method is to validate the user registration form.
+ * */
+ public void validateForm(String firstName, String lastName, String email, String userName,
+ String password, String confirmPassword) {
+ handleAction(firstName, lastName, email, userName, password, confirmPassword);
+ }
+
+ /**
+ * Support method to populate the User registration form.
+ * @param firstName : First name of the user.
+ * @param lastName : Last name of the user.
+ * @param email : E mail of the user.
+ * @param userName : User name of the user.
+ * @param password : Password for the user.
+ * @param confirmPassword : Confirmation password.
+ */
+ private void handleAction(String firstName, String lastName, String email, String userName, String password,
+ String confirmPassword) {
+ clearForm();
+ firstNameField.sendKeys(firstName);
+ lastNameField.sendKeys(lastName);
+ emailField.sendKeys(email);
+ userNameField.sendKeys(userName);
+ passwordField.sendKeys(password);
+ passwordConfirmationField.sendKeys(confirmPassword);
+ registerButton.click();
+ }
+
+ /**
+ * Support method to clear the Registration form.
+ */
+ private void clearForm() {
+ firstNameField.clear();
+ lastNameField.clear();
+ emailField.clear();
+ userNameField.clear();
+ passwordField.clear();
+ passwordConfirmationField.clear();
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java
new file mode 100644
index 00000000..a32087e4
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserAddedConfirmationPage.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+import java.io.IOException;
+
+/**
+ * This class represents the confirmation page for adding a new user.
+ */
+public class UserAddedConfirmationPage {
+
+ public UserAddedConfirmationPage(WebDriver driver) throws IOException {
+ UIElementMapper uiElementMapper = UIElementMapper.getInstance();
+
+ driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.view.btn.xpath"))).click();
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java
new file mode 100644
index 00000000..7d6fe4e1
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/UserListingPage.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.wso2.iot.integration.ui.pages.UIUtils;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+import java.io.IOException;
+
+/**
+ * Class to represent the user listing page.
+ */
+public class UserListingPage {
+
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+
+ public UserListingPage(WebDriver driver) throws IOException {
+ this.driver = driver;
+ this.uiElementMapper = UIElementMapper.getInstance();
+ }
+
+ /**
+ * Performs the delete user action.
+ * @return After deleting a user, returns back to the user listing page.
+ */
+ public UserListingPage deleteUser() throws IOException, InterruptedException {
+ WebElement deleteBtn = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.deleteUser.btn.xpath")));
+
+ WebDriverWait wait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
+ wait.until(ExpectedConditions.visibilityOf(deleteBtn));
+ deleteBtn.click();
+
+ WebElement deleteConfirmationBtn = driver.findElement(
+ By.xpath(uiElementMapper.getElement("iot.admin.deleteUser.yes.link.xpath")));
+ wait.until(ExpectedConditions.visibilityOf(deleteConfirmationBtn));
+ deleteConfirmationBtn.click();
+
+ Thread.sleep(UIUtils.threadTimeout);
+ WebElement deleteSuccessBtn = driver.findElement(
+ By.xpath(uiElementMapper.getElement("iot.admin.deleteUser.success.link.xpath")));
+ deleteSuccessBtn.click();
+
+ return new UserListingPage(driver);
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/ViewUserPage.java b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/ViewUserPage.java
new file mode 100644
index 00000000..a4d3964e
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/java/org/wso2/iot/integration/ui/pages/uesr/ViewUserPage.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.iot.integration.ui.pages.uesr;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+import org.wso2.iot.integration.ui.pages.UIUtils;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+/**
+ * Class to represent the user view.
+ */
+public class ViewUserPage {
+
+ private static final Log log = LogFactory.getLog(ViewUserPage.class);
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+
+ public ViewUserPage (WebDriver driver) throws Exception {
+ this.driver = driver;
+ this.uiElementMapper = UIElementMapper.getInstance();
+
+ WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
+ if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
+ throw new IllegalStateException("This is not the User view page");
+ }
+ }
+
+}
diff --git a/modules/integration/tests-common/web-ui-pages/src/main/resources/mapper.properties b/modules/integration/tests-common/web-ui-pages/src/main/resources/mapper.properties
new file mode 100644
index 00000000..d5ee382e
--- /dev/null
+++ b/modules/integration/tests-common/web-ui-pages/src/main/resources/mapper.properties
@@ -0,0 +1,654 @@
+#
+# Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+#
+# WSO2 Inc. licenses this file to you under the Apache License,
+# Version 2.0 (the "License"); you may not use this file except
+# in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# User registration and login details-----------------------------------------------------------------------------------
+
+iot.user.add.firstname=firstname
+iot.user.add.lastname=lastname
+iot.user.add.username=testUser
+iot.user.add.password=testPassword
+iot.user.add.email=username@wso2.com
+
+iot.user.login.username=testUser
+iot.user.login.password=testPassword
+
+# User registration and login ui----------------------------------------------------------------------------------------
+
+iot.user.registered.name=/html/body/header/div/div[2]/a/span[1]
+
+iot.user.add.input.firstname.xpath=//*[@id="first_name"]
+iot.user.add.input.lastname.xpath=//*[@id="last_name"]
+iot.user.add.input.username.xpath=//*[@id="user_name"]
+iot.user.add.input.password.xpath=//*[@id="password"]
+iot.user.add.input.confirmpassword.xpath=//*[@id="password_confirmation"]
+iot.user.add.input.email.xpath=//*[@id="email"]
+iot.user.add.register.button.xpath=//*[@id="add-user-btn"]
+
+
+iot.user.login.input.username.xpath=//*[@id="signInForm"]/div[1]/input
+iot.user.login.input.password.xpath=//*[@id="signInForm"]/div[2]/input
+iot.user.login.button.xpath=//*[@id="signInForm"]/div[3]/button
+
+iot.user.register.link.xpath=//*[@id="register-link-wrapper"]/a
+
+# Devices page elements ------------------------------------------------------------------------------------------------
+
+iot.home.page.uuf-menu.xpath=//*[@id="_uuf-navmenu-button"]
+
+iot.home.page.uuf-menu.devicemgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[1]/a
+iot.home.page.uuf-menu.groupmgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[2]/a
+iot.home.page.uuf-menu.policymgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[3]/a
+
+iot.home.page.title.xpath=/html/body/div[3]/div[1]/div/span
+iot.admin.dashboard.title.xpath=/html/body/div[3]/div[1]/div/span
+
+iot.home.enrollDevice.xpath=//*[@id="ast-container"]/div/p/a
+iot.user.logout.link.xpath=/html/body/header/div/div[2]/ul/li[3]/a
+
+iot.devices.table.xpath=//*[@id="device-grid"]
+
+# Register page error elements -----------------------------------------------------------------------------------------
+
+iot.user.register.firstname.error=first_name-error
+iot.user.register.lastname.error=last_name-error
+iot.user.register.username.error=user_name-error
+iot.user.register.email.error=email-error
+iot.user.register.password.error=password-error
+iot.user.register.confirmPassword.error=password_confirmation-error
+
+# Admin dashboard Device -----------------------------------------------------------------------------------------------
+iot.admin.device.viewBtn.xpath=//a[@href='/devicemgt/devices']
+iot.admin.device.addBtn.xpath=//a[@href='/devicemgt/device/enroll']
+
+# Incorrect login Credentials ------------------------------------------------------------------------------------------
+iot.user.login.username.error=username-error
+iot.user.login.password.error=password-error
+iot.user.login.incorrect.xpath=/html/body/div/div/div/div[1]
+iot.user.login.shortPassword=password-error
+
+
+iot.dashboard.device.div.xpath=/html/body/div[3]/div[7]/div[1]/div/div/div[1]
+
+#Grouping --------------------------------------------------------------------------------------------------------------
+
+iot.device.group.addButton.xpath=/html/body/div[3]/div[2]/div[1]/div[2]/div/div/div[2]/div[2]/span[2]/a[2]
+iot.device.group.viewButton.xpath=/html/body/div[3]/div[2]/div[1]/div[2]/div/div/div[2]/div[2]/span[2]/a[1]
+
+iot.device.group.addNewGroup.xpath=/html/body/div[3]/div/div[1]/div/p[1]
+
+iot.device.viewGroup.empty.addGroup.xpath=//*[@id="ast-container"]/div/p/a
+
+iot.device.group.addGroupForm.name.id=name
+iot.device.group.addGroupForm.description.id=description
+iot.device.group.addGroupForm.addButton.id=add-group-btn
+
+iot.device.groups.view.header.xpath=/html/body/div[3]/div[1]/div/span
+
+iot.device.groups.add.emptyfrom.error=/html/body/div[3]/div/div[1]/div/span/strong
+
+iot.device.table.id=group-grid
+
+#Add user --------------------------------------------------------------------------------------------------------------
+iot.admin.user.addButton.xpath=/html/body/div[3]/div[2]/div[1]/div[3]/div/div/div[2]/div[2]/span[2]/a[2]/span/i[2]
+iot.admin.user.viewButton.xpath=/html/body/div[3]/div[2]/div[1]/div[3]/div/div/div[2]/div[2]/span[2]/a[1]/span/i[2]
+
+iot.admin.user.added.page.subtitle.xpath="//p[@class='page-sub-title']"
+iot.admin.user.listing.page.subtitle.xpath="//span[@class='page-sub-title']"
+
+iot.admin.addUser.username.id=username
+iot.admin.addUser.firstName.id=firstname
+iot.admin.addUser.lastName.id=lastname
+iot.admin.addUser.email.id=emailAddress
+iot.admin.addUser.roles.id=roles
+
+iot.admin.addUser.add.btn.xpath=//*[@id="add-user-btn"]
+iot.admin.addUser.view.btn.xpath=//*[@id="user-created-msg"]/div/button
+
+iot.admin.deleteUser.btn.xpath=//*[@id="user1"]/td[5]/a[3]/span[1]/i[2]
+iot.admin.deleteUser.yes.link.xpath=//a[@id="remove-user-yes-link"]
+iot.admin.deleteUser.success.link.xpath=//a[@id="remove-user-success-link"]
+
+iot.admin.addUser.formError.xpath=//*[@id="user-create-error-msg"]
+
+#----- User view page heading ------------------------------------------------------------------------------------------
+
+iot.user.view.page.heading.xpath=/html/body/div[3]/div[1]/div/label
+
+#----- Editing a user---------------------------------------------------------------------------------------------------
+
+iot.admin.viewUser.btn.xpath=//*[@id="user1"]/td[5]/a[1]/span[1]/i[2]
+iot.admin.editUser.btn.xpath=//*[@id="userEditBtn"]
+iot.admin.editUser.edit.btn.xpath=//*[@id="add-user-btn"]
+
+#---------------------------Testing the samples ------------------------------------------------------------------------
+iot.sample.connectedcup.xpath=//*[@id="connectedcup"]
+iot.sample.connectedcup.try.btn.xpath=//button[contains(@id,'connectedcup_btn')]
+iot.sample.connectedcup.try.btn.id=connectedcup_btn
+iot.sample.connectedcup.page.title=//h1[@class='grey ']
+iot.sample.connectedcup.view.page.title=//label[@class='device-id device-select']
+iot.sample.connectedcup.createInstanceBtn.xpath=//a[@class='download-link btn-operations']
+iot.sample.connectedcup.createInstance.nameField.xpath=//input[@class='connectedCupName']
+iot.sample.connectedcup.createInstance.downloadBtn.xpath=//a[contains(@class,'btn-operations')]
+iot.sample.modal.popup.xpath=//div[@class='modalpopup-content']
+
+iot.sample.connectedcup.gotodevice.xpath=//a[@class='btn-operations']
+iot.sample.connectedcup.device.title.xpath=/html/body/div[4]/h1
+
+iot.sample.orderCoffee.xpath=//*[@id="order-cup"]
+iot.sample.coffee.level.xpath=//*[@id="amount_coffee"]
+iot.sample.temperature.xpath=//*[@id="amount_temp"]
+
+iot.sample.analytics.link.xpath=//*[@id="device_statistics"]/a
+
+iot.sample.coffeelevel.graph.path=//*[@id="chart-Coffee Level"]/svg/path[1]
+iot.sample.temperature.graph.path=//*[@id="chart-Temperature"]/svg/path[1]
+
+
+iot.try.devices.div.classname=//div[@class='try-device-container']
+iot.try.device.text.xpath=//p[contains(@class,'try-device-text')]
+
+
+#------------------ Graphs (Device View) -------------------------------------------------------------------------------
+iot.stats.graph.container.xpath=//*[@id="div-chart"]
+iot.stat.graph.wrapper.xpath=//*[contains(@class, "chartWrapper")]
+iot.stat.graph.xAxis.xpath=//*[contains(@class, "custom_x_axis")]
+iot.stat.graph.class.name=custom_rickshaw_graph rickshaw_graph
+
+#-----------------------------------------------------------------------------------------------------------------------
+#iot.user.delete.button=//*[@id="inosh"]/td[5]/a[3]
+#iot.user.delete.button.confirm=remove-user-yes-link
+#iot.user.delete.button.success=remove-user-success-link
+#iot.roles.add.button=appbar-btn-
+#iot.roles.add.rolename.input=rolename
+#iot.roles.add.role.button=add-role-btn
+#iot.roles.add.role.created.msg.div=role-created-msg
+#iot.roles.update.rolename.input=rolename
+#iot.roles.update.role.button=add-role-btn
+#iot.roles.update.role.created.msg.div=role-created-msg
+#iot.roles.update.role.created.success.msg=ROLE WAS UPDATED SUCCESSFULLY
+#iot.configuration.android.tab.identifier=id('androidConfigLink')
+#iot.configuration.widows.tab.identifier=id('windowsConfigLink')
+#iot.configuration.ios.tab.identifier=id('iosConfigLink')
+#iot.configuration.general.tab.identifier=id('generalConfigLink')
+#iot.configuration.general.input.monitoringFr.identifier=id('monitoring-config-frequency')
+#iot.configuration.general.button.save.identifier=id('monitoring-config-frequency')
+#iot.configuration.saved.lable.identifier=id('record-created-msg')
+#iot.configuration.saved.lable.val=Please click "Go back to configurations", if you wish to save another configuration or click "Exit" to complete the process and go back to the dashboard.
+#iot.configuration.saved.button.back.identifier=id('btnBack')
+#iot.configuration.saved.button.back.val=Go back to configurations
+#iot.configuration.saved.button.exit.identifier=id('btnExit')
+#iot.configuration.saved.button.exit.val=Exit
+#iot.configuration.android.select.identifier=id('android-config-notifier')
+#iot.configuration.android.input.identifier=id('android-config-notifier-frequency')
+#iot.configuration.android.button.save.identifier=id('save-android-btn')
+#iot.configuration.windows.input.identifier=id('windows-config-notifier-frequency')
+#iot.configuration.windows.button.save.identifier=id('save-windows-btn')
+#iot.notification.bubble.identifier=notification-bubble
+#iot.notification.unread.identifier=unReadNotifications
+#iot.notification.all.identifier=allNotifications
+#
+#
+#
+#
+#app.sign.in.button=button.btn
+#app.redMine.login.button.name=login
+#app.redMine.issue.button=New issue
+#app.redMine.issue.subject=issue_subject
+#app.redMine.issue.description=issue_description
+#app.redMine.issue.submit=commit
+#app.AddNew.App.link=Add New Application
+#new.app.add.app.name=applicationName
+#new.app.add.app.key=applicationKey
+#new.app.add.app.icon=icon
+#new.app.add.app.Description=applicationDescription
+#new.app.add.app.edit.Description=appDescriptionEdit_textarea
+#new.app.add.app.type=applicationType
+#app.issue.version.id=issue_fixed_version_id
+#app.database.db.environment.id=rssInstances
+#app.database.db.environment.user=js_db_user
+#app.database.db.environment.template=js_db_template
+#new.app.add.repository.type=repositoryType
+#create.new.app.button=appcreation
+#app.homepage.search.textBox=search
+#app.first.element.of.home.page=/html/body/div/div/article/section/ul/li[2]/div/h2/a/b
+#app.overview.page.app.type.id=apptype
+#app.overview.page.app.description.id=description
+#app.overview.page.repository.type.id=repotype
+#app.overview.page.app.owner.id=appOwner
+#app.overview.page.app.key.xpath=/html/body/div/div/article/section[2]/div/div/div/p
+#app.add.member.link=Add Members
+#app.add.member.name=allUsersList
+#app.invite.users= btn_nvite_users
+#app.add.add.to.list.button=addToListBtn
+#app.add.branch.link=Create Branch
+#app.add.second.branch.xpath=(//a[contains(text(),'Branch')])[2]
+#app.add.branch.version=create_branchtrunk
+#app.add.branch.button.xpath=//input[@value='Create Branch']
+#app.add.branch.two.button.xpath=(//input[@value='Create Branch'])[2]
+#app.navigate.Link=Repos & Builds
+#app.navigate.Governance.page.link=menu_governance
+#app.navigate.isue.page.link.id=menu_trackIssues
+#app.trunk.overview.xpath=/html/body/div/div/article/section[3]/div/ul/li/p/strong
+#app.trunk.build.status.xpath=/html/body/div/div/article/section[3]/div/ul/li[2]/p/span/strong
+#governance.page.firstElement.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li/div/strong
+#governance.page.firstElement.date.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[2]/div[2]/form/div/input
+#governance.page.date.save.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[2]/div[2]/form/div/button
+#governance.page.promote.key.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[3]/div/ul/li[2]/a/span
+#code.completed.status=(//input[@id='registry.custom_lifecycle.checklist.option.0.item'])[last()]
+#code.review.status=(//input[@id='registry.custom_lifecycle.checklist.option.1.item'])[last()]
+#design.review.status=(//input[@id='registry.custom_lifecycle.checklist.option.2.item'])[last()]
+#app.application.overview.page=Overview
+#app.overview.page.team.details.id=userCountList
+#app.team.page.id=menu_userAdmin
+#app.add.member.page.id=btnAddMembers
+#app.issue.redMine.tab.link=Track Issues
+#app.testing.first.element.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li/div/strong
+#app.testing.date.save.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li[2]/div/form/div/button
+#app.testing.first.element.arrow.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li[3]/div/ul/li[2]/a
+#app.factory.issue.total.count.xpath=/html/body/div/div[2]/article/section/section/div/ul/li[2]
+#app.factory.issue.item.header.id=item_list
+#app.factory.database.configure.page.link=Database Configurations
+#app.factory.new.database.link=Database
+#app.factory.database.name.id=databaseName
+#app.factory.database.password=databaseUserPassword
+#app.factory.database.confirm.password=confirmDatabaseUserPassword
+#app.factory.database.submit.button=div.buttonrow > input[name="Submit"]
+#app.factory.database.advance.Checkbox=advancecheckbox
+#app.factory.database.user.CheckBox=Username
+#app.factory.database.user.password=Password
+#app.factory.database.user.Repeat.password=repeatPassword
+#app.factory.database.environment.id=rssInstances
+#app.factory.database.user.submit.name=Submit
+#app.factory.database.template.name=templateName
+#app.factory.database.template.submit.name=Submit
+#app.factory.db.admin.id=menu_dbAdmin
+#app.factory.db.dbUser.link=DB User
+#app.factory.db.template.link=DB Template
+#app.factory.db.resources.id=dbSection
+#app.db.link=Db
+#app.db.user=wso2usr
+#app.db.template=wso2Temp@Development
+#app.factory.delete.user=Delete User
+#app.factory.del.template=Delete Template
+#app.factory.delete.Ok=Ok
+#app.factory.delete.db=Delete DB
+#app.data.source.name=datasource_name
+#app.data.source.description=datasource_description
+#app.data.source.password=datasource_password_dev
+#app.data.source.username=datasource_username_text_dev
+#app.data.source.add.button=Submit
+#app.property.name=property_name
+#app.property.type=property_type
+#app.property.description=property_description
+#app.property.value=property_value
+#app.factory.registry.page.link=Endpoints & Registry
+#app.factory.data.source.page.link=Datasources
+#app.db.details.id=dbSection
+#app.db.user.id=dbUsrSection
+#app.db.template.id=dbTempSection
+#app.factory.new.data.source.page.button=//button[@type='button']
+#app.factory.api.panel.text=/html/body/div/div/article/section[3]
+#app.factory.sign.out.email=span.icon-chevron-down
+#app.factory.sing.out.text=Sign Out
+#app.factory.subscribe=Subscribe to APIs
+#app.factory.subscribe.api.element=li > div.thumbnail > a > img
+#app.api.select.app.name=application-list
+#app.api.subscribe.button=subscribe-button
+#app.api.api.manager.button=gotoApiManagerbtn
+#app.go.to.subscriptions.text=Go to My Subscriptions
+#app.api.manager.class.name.text=title-section
+#app.api.key.generate.text=Show Keys
+#app.api.sandbox.details.id=sandTable0
+#app.api.production.details.id=prodTable0
+#app.api.page.link.text=APIs
+#app.api.page.resource.list.id=keySection
+#app.factory.subscription.page=My Subscriptions
+#app.factory.list.view=a.icon-th-list.table_view
+#app.overview.link.css=/html/body/div/div[2]/article/nav/ul/li/a
+#
+#
+#
+#
+#login.username=username
+#login.password=password
+#login.sign.in.button=button
+#login.header.div=header-div
+#
+#home.dashboard.middle.text.xpath=/html/body/div[3]/div[1]/div/span
+#home.greg.sign.out.xpath=//*[@id="header-div"]/div[4]/div/ul/li[3]/a
+#home.logged.user.dev=logged-user
+#
+#jaggery.Main.tab=menu-panel-button1
+#jaggery.Region1.tab=region1_manage_menu
+#jaggery.dashboard.middle.text=middle
+#add.jaggery.href=Jaggery
+#jaggery.war.file.upload.name=warFileName
+#jaggery.upload.button.name=upload
+#jaggery.upload.successful.message=messagebox-info
+#jaggery.upload.successful.button=ui-dialog-titlebar-close
+#
+#
+#carbon.Main.tab=menu-panel-button1
+#carbon.Region1.tab=region1_manage_menu
+#carbon.add.href=Add
+#carbon.dashboard.middle.text=middle
+#carbon.file.upload.field=filename
+#carbon.upload.button=upload
+#carbon.upload.successful.message=messagebox-info
+#carbon.upload.successful.button=ui-dialog-titlebar-close
+#
+#
+#resource.Main.tab=menu-panel-button1
+#resource.Region3.tab=region3_registry_menu
+#resource.browse.link=Browse
+#resource.dashboard.middle.text=middle
+#resource.detailed.view=stdView
+#resource.add.resource.link=Add Resource
+#resource.add.collection.link=Add Collection
+#resource.add.resource.input.field=uResourceFile
+#resource.add.Collection.input.field=collectionName
+#resource.add.Url.input.id=irFetchURL
+#resource.add.collection.description=colDesc
+#resource.add.resource.name=uResourceName
+#Resource.add.resource.description=description
+#resource.add.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[5]/table/tbody/tr[2]/td/form/table/tbody/tr[6]/td/input
+#resource.add.Url.button.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[5]/table/tbody/tr[3]/td/form/table/tbody/tr[6]/td/input
+#resource.collection.add.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[7]/form/table/tbody/tr[5]/td/input
+#resource.upload.successful.message=messagebox-info
+#resource.upload.successful.collection.message=messagebox-info
+#resource.upload.successful.button=ui-dialog-titlebar-close
+#resource.upload.collection.successful.close.button=/html/body/div[5]/div/div/a
+#resource.add.Url.Successful.close=/html/body/div[4]/div/div/a
+#
+#
+#
+#service.add.link=Service
+#service.dashboard.middle.text=middle
+#service.list.dashboard.middle.text=middle
+#service.add.name.id=id_Overview_Name
+#service.add.namespace.id=id_Overview_Namespace
+#service.check.save.service=Services
+#
+#
+#wsdl.dashboard.middle.text=middle
+#wsdl.list.dashboard.middle.text=middle
+#wsdl.add.link=WSDL
+#wsdl.add.url=irFetchURL
+#wsdl.add.name=irResourceName
+#wsdl.add.file.id=uResourceFile
+#wsdl.add.file.name.id=uResourceName
+#
+#
+#schema.add.link=Schema
+#schema.dashboard.middle.text=middle
+#schema.list.dashboard.middle.text=middle
+#schema.add.url=irFetchURL
+#schema.add.name=irResourceName
+#schema.add.schema.name.id=uResourceName
+#
+#
+#wsPolicy.add.link=Policy
+#wsPolicy.dashboard.middle.text=middle
+#ws.policy.list.dashboard.middle.text=middle
+#wsPolicy.add.url=irFetchURL
+#wsPolicy.add.name=irResourceName
+#wsPolicy.add.file.id=uResourceFile
+#wsPolicy.add.schema.name.id=uResourceName
+#
+#
+#api.add.link=API
+#api.dashboard.middle.text=middle
+#api.provider.id=id_Overview_Provider
+#api.name.id=id_Overview_Name
+#api.context.id=id_Overview_Context
+#api.version.id=id_Overview_Version
+#api.list.link=APIs
+#
+#
+#uri.add.link=URI
+#uri.add.list.id=URIs
+#uri.dashboard.middle.text=middle
+#uri.add.uri=id_Overview_URI
+#uri.add.uri.name=id_Overview_Name
+#uri.list.link=URIs
+#
+#
+#my.profile.region.tab.id=region5_my_identity_menu
+#my.profile.add.page.link=My Profiles
+#my.profile.dashboard.middle.text=middle
+#my.profile.new.profile.add.link=Add New Profile
+#my.profile.name.id=profile
+#my.profile.first.name.id=http://wso2.org/claims/givenname
+#my.profile.last.name.id=http://wso2.org/claims/lastname
+#my.profile.email.id=http://wso2.org/claims/emailaddress
+#my.profile.successful.save.pane=/html/body/div[3]/div/div/a
+#
+#
+#search.activity.link=Activities
+#search.activity.id=user
+#search.activity.name.id=path
+#search.activity.exists.id=activityList
+#
+#
+#search.page.link=Search
+#search.resource.name=resourcePath
+#search.results.id=1
+#filter.search.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form[3]/table/tbody/tr/td[8]/table/tbody/tr/td/a
+#
+#users.add.new.user.link.id=Add New User
+#users.and.roles.link.text=Users and Roles
+#users.adn.roles.add.page.middle.text=middle
+#users.add.link.id=Users
+#users.add.new.user.name.id=username
+#users.add.new.user.password.name=password
+#users.add.new.user.password.retype.name=retype
+#users.admin.tick.name=userRoles
+#users.save=//input[contains(@value,'Finish')]
+#users.page.next.id=2
+#
+#
+#
+#
+#roles.add.link.id=Roles
+#role.add.new.user.link.id=Add New Role
+#role.add.new.user.name.id=roleName
+#role.permission.id=ygtvspacer
+#role.add.user.to.role.name=org.wso2.carbon.role.assign.filter
+#role.search.button=td.buttonRow > input.button
+#role.add.ok.button.css=button[type="button"]
+#role.add.user.to.role.name.tick=selectedUsers
+#role.add.user.finish.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form[2]/table/tbody/tr[2]/td/input[2]
+#
+#
+#pass.word.change.link=Change My Password
+#pass.word.current.name=currentPassword
+#pass.word.new.name=newPassword
+#pass.word.check.name=checkPassword
+#pass.word.change.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
+#password.change.dialog.xpath=/html/body/div[3]/div/div/a
+#
+#
+#
+#features.add.link=Features
+#repository.add.tab.text=Repository Management
+#repositories.table.id=_table_manage_repositories
+#repository.add.link.text=Add Repository
+#repository.url.name=_txt_repository_location_url
+#repository.save.id=_btn_add_repository
+#repository.name.id=_txt_repository_name
+#installed.features.tab.linkText=Installed Features
+#repositories.dashboard.text=middle
+#features.filter.id=_txt_IF_filterString
+#feature.checkbox.click.name=chkSelectFeaturesToUninstall
+#feature.uninstall.next.button.id=_btn_next_review_uninstall_features
+#feature.uninstall.finish.button.id=_btn_uc_finish
+#
+#
+#
+#server.shutdown.link.text=Shutdown/Restart
+#feature.revert.tab=Installation History
+#feature.find.feature.text=Available Features
+#feature.install.name.id=_txt_AF_filterString
+#feature.find.id=_btn_next_filter_repositories
+#feature.install.click=chkSelectFeaturesToInstall
+#feature.install.accept.button=_radio_af_accept_licenses
+#
+#
+#key.store.add.link=KeyStores
+#key.store.dashboard.middle.text=middle
+#key.store.add.new.link.text=Add New KeyStore
+#key.store.file.path.id=keystoreFile
+#key.store.password.name=ksPassword
+#key.store.provider.name=provider
+#key.store.next.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
+#key.store.pass.key=keyPass
+#key.store.successful.xpath=/html/body/div[3]/div/div/a
+#
+#
+#logging.add.link=Logging
+#logging.dashboard.middle.text=middle
+#logging.update.button.id=globalLog4jUpdate
+#log4j.appender.update.id=appenderUpdate
+#log4j.global.success.xpath=/html/body/div[3]/div[2]/button
+#log4j.appender.sucess.xpath=/html/body/div[4]/div[2]/button
+#
+#
+#log4j.logger.search.id=filterText
+#log4j.logger.successful.button.xpath=/html/body/div[3]/div/div/a
+#
+#
+#notification.adding.link=Notifications
+#notification.dashboard.middle.text=middle
+#notification.add.edit.link.text=Add Subscription to Resource/Collection
+#notification.add.email.id=subscriptionInput
+#
+#registry.subscription.middle.text=middle
+#registry.subscription.path.id=subscriptionPath
+#registry.subscription.event.id=eventList
+#registry.subscription.notification.id=notificationMethodList
+#registry.subscription.email.id=subscriptionInput
+#registry.subscription.digest.id=subscriptionDigestTypeInput
+#registry.subscription.hsmethod.id=hierarchicalSubscriptionList
+#registry.subscription.subscribe.button.id=subscribeButton
+#
+#
+#uri.configure.add.link=URIs
+#uri.configure.dashboard.middle.text=middle
+#
+#
+#
+#api.configure.add.link=APIs
+#api.configure.dashboard.middle.text=middle
+#
+#service.configure.add.link=Services
+#service.configure.dashboard.middle.text=middle
+#
+#server.role.add.link=Server Roles
+#server.role.dashboard.middle.text=middle
+#server.role.add.link.text=Add New Server Role
+#server.role.name.id=_serverRoleName
+#
+#
+#add.new.tenant.link.text=Add New Tenant
+#tenant.role.dashboard.middle.text=middle
+#tenant.domain=domain
+#tenant.first.name=admin-firstname
+#tenant.last.name=admin-lastname
+#tenant.admin.user.name=admin
+#tenant.admin.password=admin-password
+#tenant.admin.password.repeat=admin-password-repeat
+#tenant.admin.email.id=admin-email
+#add.new.tenant.success.button=/html/body/div[3]/div/div/a
+#view.tenant.link=View Tenants
+#
+#
+#
+#add.new.extension.dashboard.middle.text=middle
+#extension.tab.id=menu-panel-button5
+#extension.list.page.dashboard.middle.text=middle
+#extensions.add.link=Add
+#extension.add.text.box=uResourceFile
+#
+#life.cycle.tab.id=menu-panel-button5
+#life.cycle.add.link=Lifecycles
+#add.new.lifecycle.dashboard.middle.text=middle
+#add.new.lifecycle.link.text=Add New Lifecycle
+#add.new.lifecycle.text.area=//*[@id="textarea"]
+#add.new.lifecycle.save.css=input.button.registryWriteOperation
+#resource.lifecycle.minimized=//*[@id="lifecycleIconMinimized"]
+#resource.lifecycle.add=//*[@id="lifecycleExpanded"]/div[2]/a
+#resource.lifecycle.add.select=//*[@id="aspect"]
+#resource.lifecycle.add.select.id=aspect
+#resource.lifecycle.add.button.add=//*[@id="add-lifecycle-div"]/form/table/tbody/tr[2]/td/input[1]
+#resource.lifecycle.add.button.cancel=//*[@id="add-lifecycle-div"]/form/table/tbody/tr[2]/td/input[2]
+#
+#
+#
+#artifact.add.tab.id=menu-panel-button5
+#artifacts.add.link=Artifact Types
+#add.new.artifact.dashboard.middle.text=middle
+#add.new.artifact.type.link=Add new Artifact
+#add.new.artifact.text.area=textarea
+#add.new.artifact.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
+#
+#add.new.artifact.dialog.box=button[type="button"]
+#
+#
+#
+#handler.add.tab.id=menu-panel-button5
+#handler.add.link=Handlers
+#add.new.handler.dashboard.middle.text=middle
+#add.new.handler.link.text=Add New Handler
+#add.new.handler.text.area=textarea
+#add.new.handler.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
+#add.new.handler.dialog.box=button[type="button"]
+#configure.tab.id=menu-panel-button3
+#
+#
+#
+#manage.report.page.link=Reports
+#manage.report.list.dashboard.middle.text=middle
+#add.report.list.dashboard.middle.text=middle
+#add.report.name=reportName
+#add.report.template=reportTemplate
+#add.report.type=reportType
+#add.report.class=reportClass
+#report.add.link=Add Report
+#
+#life.cycle.expand.id=lifecycleIconMinimized
+#life.cycle.add=Add Lifecycle
+#life.cycle.add.option=option0
+#life.cycle.add.option1=option1
+#life.cycle.add.option2=option2
+#life.cycle.promote=Promote
+#life.cycle.publish=Publish
+#life.cycle.stage=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td[4]/div[14]/div[3]/div[2]/table/tbody/tr/td/div[2]/table/tbody/tr[2]/td
+#life.cycle.promote.ok.button=button[type="\button\"]
+#
+#webapp.list.xpath=.//*[@id='menu']/ul/li[7]/ul/li[2]/ul/li[1]/a
+#
+#webapp.list.page.middle=middle
+#webapp.add.xpath=//*[@id="menu"]/ul/li[5]/ul/li[2]/ul/li[3]/ul/li[1]/a
+#webapp.add.page.middle=middle
+#
+#endpoints.tab.id=//*[@id="menu"]/ul/li[5]/ul/li[4]/ul/li[4]/a
+#endpoints.page.middle=middle
+#
+#
+#bam.dashboard.tab.id=//*[@id="menu"]/ul/li[3]/ul/li/a
+#bam.dashboard.signin.xpath=//*[@id="wrap"]/div[2]/div/div/h1
diff --git a/modules/integration/tests-integration-old/pom.xml b/modules/integration/tests-integration-old/pom.xml
new file mode 100644
index 00000000..437be7bb
--- /dev/null
+++ b/modules/integration/tests-integration-old/pom.xml
@@ -0,0 +1,266 @@
+
+
+
+
+
+ org.wso2.iot
+ wso2iot-integration
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+ tests-integration
+ jar
+ WSO2 IoT Server Backend Integration Tests
+
+
+
+
+ maven-surefire-plugin
+ false
+ 2.12.4
+
+ -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
+ false
+
+ src/test/resources/testng-server-mgt.xml
+ src/test/resources/testng.xml
+
+
+
+
+ maven.test.haltafterfailure
+ false
+
+
+ carbon.zip
+
+ ${basedir}/../../distribution/target/wso2iot-${carbon.iot.device.mgt.version}.zip
+
+
+
+ framework.resource.location
+
+ ${basedir}/src/test/resources/
+
+
+
+ usedefaultlisteners
+ false
+
+ ${basedir}/target/security-verifier/
+ ${basedir}/src/test/resources/instrumentation.txt
+ ${basedir}/src/test/resources/filters.txt
+
+ ${basedir}/target
+ false
+
+
+
+ maven-dependency-plugin
+
+
+
+
+ copy-jacoco-dependencies
+ compile
+
+ copy-dependencies
+
+
+ ${project.build.directory}/jacoco
+ jar
+ org.jacoco.agent
+
+
+
+
+
+ copy-secVerifier
+ compile
+
+ copy-dependencies
+
+
+ ${basedir}/target/security-verifier
+ aar
+ SecVerifier
+ true
+
+
+
+
+ unpack-jks
+ compile
+
+ unpack
+
+
+
+
+ org.wso2.iot
+ wso2iot
+ ${carbon.iot.device.mgt.version}
+ zip
+ true
+ ${basedir}/target/tobeCopied/
+ **/*.jks
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.4
+
+
+
+ test-jar
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-report-plugin
+ 2.7.1
+
+ ${basedir}/target/report
+ registry-api-test
+
+
+
+ integration-test
+
+ report-only
+
+
+
+
+
+
+ maven-resources-plugin
+ 2.6
+
+
+ copy-resources-jks
+ compile
+
+ copy-resources
+
+
+ ${basedir}/src/test/resources/keystores/products
+
+
+
+
+ ${basedir}/target/tobeCopied/wso2iot-${carbon.iot.device.mgt.version}/repository/resources/security/
+
+
+ **/*.jks
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.4
+
+
+
+ test-jar
+
+
+
+
+
+
+
+
+
+
+
+ org.wso2.carbon.automation
+ org.wso2.carbon.automation.engine
+ compile
+
+
+ org.wso2.carbon.automation
+ org.wso2.carbon.automation.extensions
+ compile
+
+
+ org.wso2.carbon.automation
+ org.wso2.carbon.automation.test.utils
+ compile
+
+
+ org.wso2.carbon.automationutils
+ org.wso2.carbon.integration.common.utils
+ compile
+
+
+ org.wso2.carbon.automationutils
+ org.wso2.carbon.integration.common.extensions
+ compile
+
+
+ com.google.code.gson
+ gson
+ compile
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.core
+ compile
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.device.mgt.common
+ compile
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.policy.mgt.common
+ compile
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.policy.mgt.core
+ compile
+
+
+ org.wso2.carbon.devicemgt
+ org.wso2.carbon.certificate.mgt.core
+ compile
+
+
+
+
+
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java
similarity index 95%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java
index 5d7b1f88..18f088c4 100644
--- a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java
+++ b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/AssertUtil.java
@@ -33,8 +33,7 @@ public class AssertUtil {
* @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) {
+ 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);
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/Constants.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/Constants.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/Constants.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/Constants.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/MDMHttpClient.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/MDMHttpClient.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/MDMHttpClient.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/MDMHttpClient.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/MDMResponse.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/MDMResponse.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/MDMResponse.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/MDMResponse.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/OAuthUtil.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/OAuthUtil.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/OAuthUtil.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/OAuthUtil.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/PayloadGenerator.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/PayloadGenerator.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/PayloadGenerator.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/PayloadGenerator.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/RestClient.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/RestClient.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/RestClient.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/RestClient.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/TestBase.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/TestBase.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/common/TestBase.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/common/TestBase.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/configuration/ConfigurationManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/configuration/ConfigurationManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/configuration/ConfigurationManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/configuration/ConfigurationManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/configuration/AndroidConfigurationManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/configuration/AndroidConfigurationManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/configuration/AndroidConfigurationManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/configuration/AndroidConfigurationManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/enrollment/AndroidEnrollment.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/enrollment/AndroidEnrollment.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/enrollment/AndroidEnrollment.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/enrollment/AndroidEnrollment.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/enrollment/WindowsEnrollment.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/enrollment/WindowsEnrollment.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/enrollment/WindowsEnrollment.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/enrollment/WindowsEnrollment.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/mgt/AndroidDeviceManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/mgt/AndroidDeviceManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/mgt/AndroidDeviceManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/mgt/AndroidDeviceManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/operation/AndroidOperation.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/operation/AndroidOperation.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/operation/AndroidOperation.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/operation/AndroidOperation.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/policy/AndroidPolicy.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/policy/AndroidPolicy.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/device/policy/AndroidPolicy.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/device/policy/AndroidPolicy.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/feature/FeatureManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/feature/FeatureManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/feature/FeatureManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/feature/FeatureManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/license/LicenseManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/license/LicenseManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/license/LicenseManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/license/LicenseManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/mobileDevice/MobileDeviceManagementWithNoDevices.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/notification/NotificationManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/notification/NotificationManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/notification/NotificationManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/notification/NotificationManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/operation/OperationManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/operation/OperationManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/operation/OperationManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/operation/OperationManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/policy/PolicyManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/policy/PolicyManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/policy/PolicyManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/policy/PolicyManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/role/RoleManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/role/RoleManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/role/RoleManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/role/RoleManagement.java
diff --git a/modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/user/UserManagement.java b/modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/user/UserManagement.java
similarity index 100%
rename from modules/integration/tests-integration/src/test/java/org/wso2/mdm/integration/user/UserManagement.java
rename to modules/integration/tests-integration-old/src/test/java/org/wso2/mdm/integration/user/UserManagement.java
diff --git a/modules/integration/tests-integration-old/src/test/resources/automation.xml b/modules/integration/tests-integration-old/src/test/resources/automation.xml
new file mode 100644
index 00000000..c36ffbd8
--- /dev/null
+++ b/modules/integration/tests-integration-old/src/test/resources/automation.xml
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+ 60000
+
+ standalone
+
+ false
+
+ 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
+
+
+ 10863
+ 10543
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension
+
+
+
+
+
+
+ org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-integration/src/test/resources/automationSchema.xsd b/modules/integration/tests-integration-old/src/test/resources/automationSchema.xsd
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/automationSchema.xsd
rename to modules/integration/tests-integration-old/src/test/resources/automationSchema.xsd
diff --git a/modules/integration/tests-integration-old/src/test/resources/filters.txt b/modules/integration/tests-integration-old/src/test/resources/filters.txt
new file mode 100644
index 00000000..8813e634
--- /dev/null
+++ b/modules/integration/tests-integration-old/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/modules/integration/tests-integration-old/src/test/resources/instrumentation.txt b/modules/integration/tests-integration-old/src/test/resources/instrumentation.txt
new file mode 100644
index 00000000..f9f1894a
--- /dev/null
+++ b/modules/integration/tests-integration-old/src/test/resources/instrumentation.txt
@@ -0,0 +1,41 @@
+org.wso2.carbon.caching.core_
+org.wso2.carbon.discovery.core_
+org.wso2.carbon.discovery.proxy_
+org.wso2.carbon.email.verification_
+org.wso2.carbon.event.core_
+org.wso2.carbon.governance.custom.lifecycles.checklist_
+org.wso2.carbon.governance.gadgets.impactanalysis_
+org.wso2.carbon.governance.gadgetsource_
+org.wso2.carbon.governance.gadgets.resourceimpact_
+org.wso2.carbon.governance.generic_
+org.wso2.carbon.governance.lcm_
+org.wso2.carbon.governance.list_
+org.wso2.carbon.governance.platform.extensions_
+org.wso2.carbon.governance.registry.eventing_
+org.wso2.carbon.governance.registry.extensions_
+org.wso2.carbon.governance.services_
+org.wso2.carbon.identity.user.profile_
+org.wso2.carbon.mashup.javascript.hostobjects.registry_
+org.wso2.carbon.registry.activities_
+org.wso2.carbon.registry.common_
+org.wso2.carbon.registry.core_
+org.wso2.carbon.registry.eventing_
+org.wso2.carbon.registry.extensions_
+org.wso2.carbon.registry.handler_
+org.wso2.carbon.registry.indexing_
+org.wso2.carbon.registry.info_
+org.wso2.carbon.registry.profiles_
+org.wso2.carbon.registry.properties_
+org.wso2.carbon.registry.relations_
+org.wso2.carbon.registry.reporting_
+org.wso2.carbon.registry.resource_
+org.wso2.carbon.registry.search_
+org.wso2.carbon.registry.server_
+org.wso2.carbon.registry.servlet_
+org.wso2.carbon.registry.task_
+org.wso2.carbon.registry.uddi_
+org.wso2.carbon.registry.webdav_
+org.wso2.carbon.registry.ws.api_
+org.wso2.carbon.reporting.api_
+org.wso2.carbon.reporting.core_
+org.wso2.carbon.reporting.util_
diff --git a/modules/integration/tests-integration-old/src/test/resources/keystores/products/client-truststore.jks b/modules/integration/tests-integration-old/src/test/resources/keystores/products/client-truststore.jks
new file mode 100644
index 00000000..ab222fdd
Binary files /dev/null and b/modules/integration/tests-integration-old/src/test/resources/keystores/products/client-truststore.jks differ
diff --git a/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2carbon.jks b/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2carbon.jks
new file mode 100644
index 00000000..79784a5e
Binary files /dev/null and b/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2carbon.jks differ
diff --git a/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2certs.jks b/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2certs.jks
new file mode 100644
index 00000000..eb27997d
Binary files /dev/null and b/modules/integration/tests-integration-old/src/test/resources/keystores/products/wso2certs.jks differ
diff --git a/modules/integration/tests-integration-old/src/test/resources/log4j.properties b/modules/integration/tests-integration-old/src/test/resources/log4j.properties
new file mode 100644
index 00000000..bc395345
--- /dev/null
+++ b/modules/integration/tests-integration-old/src/test/resources/log4j.properties
@@ -0,0 +1,45 @@
+#
+# Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+#
+# WSO2 Inc. licenses this file to you under the Apache License,
+# Version 2.0 (the "License"); you may not use this file except
+# in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#
+# This is the log4j configuration file used by WSO2 Carbon
+#
+# IMPORTANT : Please do not remove or change the names of any
+# of the Appenders defined here. The layout pattern & log file
+# can be changed using the WSO2 Carbon Management Console, and those
+# settings will override the settings in this file.
+#
+
+log4j.rootLogger=INFO, console, Default
+
+log4j.logger.org.wso2=INFO
+log4j.logger.org.apache.axis2.deployment.ModuleDeployer=ERROR
+#Automation file apender
+log4j.appender.Default=org.apache.log4j.RollingFileAppender
+log4j.appender.Default.File=logs/automation.log
+log4j.appender.Default.Append=true
+log4j.appender.Default.MaxFileSize=10MB
+log4j.appender.Default.MaxBackupIndex=10
+log4j.appender.Default.layout=org.apache.log4j.PatternLayout
+log4j.appender.Default.layout.ConversionPattern=%d{ISO8601} %-5p [%c] - %m%n
+
+
+#Automation console apender
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%-5p [%c] - %m%n
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-config-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-config-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-config-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-configuration-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-configuration-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-configuration-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-configuration-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-device-mgt-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-device-mgt-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-device-mgt-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-device-mgt-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-enrollment-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-enrollment-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-enrollment-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-enrollment-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-enrollment-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-enrollment-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-enrollment-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-enrollment-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-operation-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-operation-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-operation-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/android-policy-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/android-policy-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/android-policy-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/android-policy-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/configuration-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/configuration-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/configuration-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/configuration-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/configuration-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/configuration-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/configuration-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/configuration-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/get-notifications-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/get-notifications-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/get-notifications-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/get-notifications-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/license-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/license-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/license-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/license-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/mobile-device-mgt-view-device-types-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/mobile-device-mgt-view-device-types-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/mobile-device-mgt-view-device-types-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/mobile-device-mgt-view-device-types-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/notification-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/notification-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/notification-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/notification-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/notification-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/notification-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/notification-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/notification-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/policy-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/policy-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/policy-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/policy-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/policy-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/policy-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/policy-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/policy-response-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/role-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/role-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/role-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/role-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/user-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/user-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/user-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/user-payloads.json
diff --git a/modules/integration/tests-integration/src/test/resources/payloads/user-response-payloads.json b/modules/integration/tests-integration-old/src/test/resources/payloads/user-response-payloads.json
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/payloads/user-response-payloads.json
rename to modules/integration/tests-integration-old/src/test/resources/payloads/user-response-payloads.json
diff --git a/modules/integration/tests-integration-old/src/test/resources/testng-server-mgt.xml b/modules/integration/tests-integration-old/src/test/resources/testng-server-mgt.xml
new file mode 100644
index 00000000..fa3a3fa7
--- /dev/null
+++ b/modules/integration/tests-integration-old/src/test/resources/testng-server-mgt.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-integration-old/src/test/resources/testng.xml b/modules/integration/tests-integration-old/src/test/resources/testng.xml
new file mode 100644
index 00000000..00843078
--- /dev/null
+++ b/modules/integration/tests-integration-old/src/test/resources/testng.xml
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-integration/src/test/resources/windows/enrollment/additional_device_info.xml b/modules/integration/tests-integration-old/src/test/resources/windows/enrollment/additional_device_info.xml
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/windows/enrollment/additional_device_info.xml
rename to modules/integration/tests-integration-old/src/test/resources/windows/enrollment/additional_device_info.xml
diff --git a/modules/integration/tests-integration/src/test/resources/windows/enrollment/discovery-post.xml b/modules/integration/tests-integration-old/src/test/resources/windows/enrollment/discovery-post.xml
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/windows/enrollment/discovery-post.xml
rename to modules/integration/tests-integration-old/src/test/resources/windows/enrollment/discovery-post.xml
diff --git a/modules/integration/tests-integration/src/test/resources/windows/enrollment/inital_device_info.xml b/modules/integration/tests-integration-old/src/test/resources/windows/enrollment/inital_device_info.xml
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/windows/enrollment/inital_device_info.xml
rename to modules/integration/tests-integration-old/src/test/resources/windows/enrollment/inital_device_info.xml
diff --git a/modules/integration/tests-integration/src/test/resources/windows/enrollment/ms_xcep.xml b/modules/integration/tests-integration-old/src/test/resources/windows/enrollment/ms_xcep.xml
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/windows/enrollment/ms_xcep.xml
rename to modules/integration/tests-integration-old/src/test/resources/windows/enrollment/ms_xcep.xml
diff --git a/modules/integration/tests-integration/src/test/resources/windows/enrollment/wstep.xml b/modules/integration/tests-integration-old/src/test/resources/windows/enrollment/wstep.xml
similarity index 100%
rename from modules/integration/tests-integration/src/test/resources/windows/enrollment/wstep.xml
rename to modules/integration/tests-integration-old/src/test/resources/windows/enrollment/wstep.xml
diff --git a/modules/integration/tests-integration/src/test/resources/instrumentation.txt b/modules/integration/tests-integration/src/test/resources/instrumentation.txt
index f9f1894a..917b2bb7 100644
--- a/modules/integration/tests-integration/src/test/resources/instrumentation.txt
+++ b/modules/integration/tests-integration/src/test/resources/instrumentation.txt
@@ -1,41 +1,11 @@
-org.wso2.carbon.caching.core_
-org.wso2.carbon.discovery.core_
-org.wso2.carbon.discovery.proxy_
-org.wso2.carbon.email.verification_
-org.wso2.carbon.event.core_
-org.wso2.carbon.governance.custom.lifecycles.checklist_
-org.wso2.carbon.governance.gadgets.impactanalysis_
-org.wso2.carbon.governance.gadgetsource_
-org.wso2.carbon.governance.gadgets.resourceimpact_
-org.wso2.carbon.governance.generic_
-org.wso2.carbon.governance.lcm_
-org.wso2.carbon.governance.list_
-org.wso2.carbon.governance.platform.extensions_
-org.wso2.carbon.governance.registry.eventing_
-org.wso2.carbon.governance.registry.extensions_
-org.wso2.carbon.governance.services_
-org.wso2.carbon.identity.user.profile_
-org.wso2.carbon.mashup.javascript.hostobjects.registry_
-org.wso2.carbon.registry.activities_
-org.wso2.carbon.registry.common_
-org.wso2.carbon.registry.core_
-org.wso2.carbon.registry.eventing_
-org.wso2.carbon.registry.extensions_
-org.wso2.carbon.registry.handler_
-org.wso2.carbon.registry.indexing_
-org.wso2.carbon.registry.info_
-org.wso2.carbon.registry.profiles_
-org.wso2.carbon.registry.properties_
-org.wso2.carbon.registry.relations_
-org.wso2.carbon.registry.reporting_
-org.wso2.carbon.registry.resource_
-org.wso2.carbon.registry.search_
-org.wso2.carbon.registry.server_
-org.wso2.carbon.registry.servlet_
-org.wso2.carbon.registry.task_
-org.wso2.carbon.registry.uddi_
-org.wso2.carbon.registry.webdav_
-org.wso2.carbon.registry.ws.api_
-org.wso2.carbon.reporting.api_
-org.wso2.carbon.reporting.core_
-org.wso2.carbon.reporting.util_
+org.wso2.carbon.datasource_
+org.wso2.carbon.dataservices.core_
+org.wso2.carbon.transaction.manager_
+org.wso2.carbon.dataservices.sql.driver_
+org.wso2.carbon.dataservices.task_
+org.wso2.carbon.ndatasource.common_
+org.wso2.carbon.ndatasource.core_
+org.wso2.carbon.ndatasource.rdbms_
+org.wso2.carbon.ntask.common_
+org.wso2.carbon.ntask.core_
+org.wso2.carbon.ntask.solutions_
diff --git a/modules/integration/tests-integration/src/test/resources/testng.xml b/modules/integration/tests-integration/src/test/resources/testng.xml
index 00843078..2cfc4734 100644
--- a/modules/integration/tests-integration/src/test/resources/testng.xml
+++ b/modules/integration/tests-integration/src/test/resources/testng.xml
@@ -1,5 +1,5 @@
+
+
+ org.wso2.iot
+ wso2iot-integration
+ 1.0.0-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+ WSO2 IoT Server - Integration Test UI Module
+ org.wso2.carbon.iot.integration.test.web.ui.integration
+ jar
+
+
+
+
+ maven-surefire-plugin
+ false
+
+
+ -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m
+
+
+ src/test/resources/testng-server-mgt.xml
+ src/test/resources/testng.xml
+
+
+
+
+ true
+
+ maven.test.haltafterfailure
+ false
+
+
+ java.io.tmpdir
+ ${basedir}/target/
+
+
+ carbon.zip
+
+ ${basedir}/../../distribution/target/wso2iots-${project.version}.zip
+
+
+
+ framework.resource.location
+
+ ${basedir}/src/test/resources/
+
+
+
+ server.list
+
+ IOT
+
+
+
+ usedefaultlisteners
+ false
+
+ ${basedir}/target/security-verifier/
+ ${basedir}/target/iot
+ ${basedir}/src/test/resources/instrumentation.txt
+ ${basedir}/src/test/resources/filters.txt
+ ${basedir}/target/iot
+
+ ${basedir}/target
+
+
+
+ maven-dependency-plugin
+
+
+
+ copy-emma-dependencies
+ compile
+
+ copy-dependencies
+
+
+ ${project.build.directory}/emma
+ jar
+ emma
+
+
+
+
+ copy-secVerifier
+ compile
+
+ copy-dependencies
+
+
+ ${basedir}/target/security-verifier
+ aar
+ SecVerifier
+ true
+
+
+
+
+ unpack-mar-jks
+ compile
+
+ unpack
+
+
+
+
+ org.wso2.iot
+ wso2iots
+ ${project.version}
+ zip
+ true
+ ${basedir}/target/tobeCopied/
+ **/*.jks,**/*.mar,**/axis2_client.xml
+
+
+
+
+
+
+
+ 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
+
+
+
+
+ ${basedir}/target/tobeCopied/wso2iots-${project.version}/repository/resources/security/
+
+
+ **/*.jks
+
+
+
+
+
+
+ copy-stratos-jks
+ compile
+
+ copy-resources
+
+
+ ${basedir}/src/test/resources/keystores/stratos
+
+
+
+
+ ${basedir}/target/tobeCopied/wso2iots-${project.version}/repository/resources/security/
+
+
+ **/*.jks
+
+
+
+
+
+
+ copy-axis2files
+ compile
+
+ copy-resources
+
+
+ ${basedir}/src/test/resources/axis2config
+
+
+
+
+ ${basedir}/target/tobeCopied/wso2iots-${project.version}/repository/conf/axis2/
+
+
+ **/*.xml
+
+
+
+
+
+
+ copy-resources-mar
+ compile
+
+ copy-resources
+
+
+ ${basedir}/src/test/resources/client/modules
+
+
+
+
+ ${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/deployment/client/modules
+
+
+ **/*.mar
+
+
+
+
+
+
+
+
+
+
+
+
+ org.wso2.iot
+ org.wso2.carbon.iot.integration.ui.pages
+
+
+ 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
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/Constants.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/Constants.java
new file mode 100644
index 00000000..da35a066
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/Constants.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.common;
+
+public class Constants {
+ public static final String IOT_LOGIN_PATH = "/devicemgt/login";
+ public static final String IOT_USER_REGISTER_URL = "/devicemgt/register";
+ public static final String IOT_USER_ADD_URL = "/devicemgt/user/add";
+ public static final String IOT_GROUP_ADD_URL = "/devicemgt/group/add";
+ public static final String IOT_HOME_URL = "/devicemgt/";
+ public static final String IOT_ENROLL_CONNECTED_CUP = "/device/connectedcup/enroll";
+ public static final String IOT_DEVICES_URL = "/devicemgt/devices";
+ public static final String IOT_CONNECTED_CUP_NAME = "testDevice";
+
+ public static final String GROUP_NAME_FIELD_ERROR = "Group Name is a required field. It cannot be empty.";
+ public static final String GROUP_NAME = "group1";
+ public static final String GROUP_DESCRIPTION = "This is a test group";
+
+ public static final String ALERT_NOT_PRESENT = "Alert is not present.";
+
+ public static final String CARBON_HOME = "carbon.home";
+
+ public static final String OS_NAME = "os.name";
+ public static final String BUILD_SUCCESS_MSG = "BUILD SUCCESS";
+
+ public static final int IOT_RESTART_THREAD_TIMEOUT = 30;
+
+ public static final String IOT_GRAPH_X_AXIS = "x";
+ public static final String IOT_GRAPH_Y_AXIS = "y";
+
+ public static class ConnectedCup {
+
+ public static final String COFFEE_LEVEl = "35";
+
+ public static final String TEMPERATURE = "53";
+ public static final String COFFEE_LEVEL_ID = "Coffee Level";
+
+ public static final String COFFEE_LEVEL_LEGEND = "Coffee Level";
+ public static final String COFFEE_LEVEL_GRAPH_ID = "coffeelevel";
+ public static final String COFFEE_LEVEL_Y_AXIS = "Coffeelevel";
+ public static final String COFFEE_LEVEL_X_AXIS = "time";
+ public static final String TEMPERATURE_ID = "Temperature";
+
+ public static final String TEMPERATURE_LEGEND = "Temperature";
+ public static final String TEMPERATURE_GRAPH_ID = "temperature";
+ public static final String TEMPERATURE_Y_AXIS = "Temperature";
+ public static final String TEMPERATURE_X_AXIS = "time";
+
+ }
+
+ public static class User {
+
+ public static class Login {
+
+ public static final String USER_NAME_ERROR = "Please enter a username";
+ public static final String PASSWORD_ERROR = "Please provide a password";
+ public static final String FAILED_ERROR = "Incorrect username or password.!";
+ public static final String SHORT_PASSWORD_ERROR = "Your password must be at least 3 characters long";
+ public static final String WRONG_USER_NAME = "admnnn";
+ public static final String WRONG_USER_PASSWORD = "admmmm";
+ public static final String SHORT_PASSWORD = "ad";
+ public static final String PAGE_TITLE = "Login | IoT Server";
+
+ }
+
+ public static class Add {
+
+ public static final String FIRST_NAME = "User";
+ public static final String LAST_NAME = "User";
+ public static final String EMAIL = "user@wso2.com";
+ public static final String EMAIL_ERROR = "user.com";
+ public static final String USER_NAME = "user";
+ public static final String SHORT_USER_NAME = "us";
+ public static final String SHORT_USER_NAME_ERROR_MSG = "Username must be between 3 and 30 characters long.";
+ public static final String FIRST_NAME_ERROR_MSG = "Firstname is a required field. It cannot be empty.";
+ public static final String LAST_NAME_ERROR_MSG = "Lastname is a required field. It cannot be empty.";
+ public static final String NO_EMAIL_ERROR_MSG = "Email is a required field. It cannot be empty.";
+ public static final String WRONG_EMAIL_ERROR_MSG = "Provided email is invalid. Please check.";
+
+ }
+
+ public static class Register {
+
+ public static final String FIRST_NAME = "Firstname";
+ public static final String LAST_NAME = "Lastname";
+ public static final String USER_NAME = "testUser";
+ public static final String PASSWORD = "testPassword";
+ public static final String CONFIRM_PASSWORD = "testPassword";
+ public static final String EMAIL = "userName@wso2.com";
+
+ }
+
+ }
+
+ public static class TestSample {
+
+ public static final String SAMPLE_INSTALL = "iot.sample";
+ public static final String INSTALL_VERIFY = "iot.sample.install";
+ public static final String VERIFY = "iot.sample.install.verify";
+ public static final String ENROLL = "iot.sample.enroll";
+ public static final String ENROLL_VERIFY = "iot.sample.enroll.verify";
+ public static final String TEMPERATURE = "iot.sample.temp";
+ public static final String COFFEE_LEVEL = "iot.sample.level";
+
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/IOTIntegrationUIBaseTestCase.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/IOTIntegrationUIBaseTestCase.java
new file mode 100644
index 00000000..f0de6e10
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/IOTIntegrationUIBaseTestCase.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.common;
+
+import org.wso2.carbon.authenticator.stub.LoginAuthenticationExceptionException;
+import org.wso2.carbon.automation.engine.context.AutomationContext;
+import org.wso2.carbon.automation.engine.context.TestUserMode;
+import org.wso2.carbon.automation.test.utils.common.HomePageGenerator;
+import org.wso2.carbon.integration.common.admin.client.AuthenticatorClient;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+import java.rmi.RemoteException;
+
+
+public class IOTIntegrationUIBaseTestCase {
+
+ protected AutomationContext automationContext;
+
+ protected void init() throws IOException, XMLStreamException, XPathExpressionException {
+ automationContext = new AutomationContext("IOT", "iot001", TestUserMode.SUPER_TENANT_ADMIN);
+ }
+
+ protected String getBackendURL() throws XPathExpressionException {
+ return automationContext.getContextUrls().getBackEndUrl();
+ }
+
+ protected String getWebAppURL() throws XPathExpressionException {
+ return automationContext.getContextUrls().getWebAppURL();
+ }
+
+ protected String getSessionCookie(AutomationContext context)
+ throws RemoteException, XPathExpressionException, LoginAuthenticationExceptionException {
+ AuthenticatorClient authenticationAdminClient = new AuthenticatorClient(context.getContextUrls().getBackEndUrl());
+ return authenticationAdminClient.login(automationContext.getSuperTenant().
+ getTenantAdmin().getUserName(), automationContext.getSuperTenant().
+ getTenantAdmin().getPassword(),
+ automationContext.getDefaultInstance().getHosts().get("default"));
+ }
+
+ protected String getServiceURL() throws XPathExpressionException {
+ String serviceURL = automationContext.getContextUrls().getServiceUrl();
+ return automationContext.getContextUrls().getServiceUrl();
+ }
+
+ protected String getLoginURL() throws XPathExpressionException {
+ return HomePageGenerator.getProductHomeURL(automationContext);
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/LoginUtils.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/LoginUtils.java
new file mode 100644
index 00000000..118e3db8
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/common/LoginUtils.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.common;
+
+import org.openqa.selenium.WebDriver;
+import org.wso2.carbon.automation.engine.context.AutomationContext;
+import org.wso2.iot.integration.ui.pages.login.LoginPage;
+
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * This class is used to login to the server as the Admin.
+ */
+public class LoginUtils {
+
+ /**
+ * This method is used to login as admin.
+ *
+ * @param driver The selenium web driver
+ * @param automationContext Test Automation context
+ * @param webAppURL The server url
+ */
+ public static void login(WebDriver driver, AutomationContext automationContext,
+ String webAppURL) throws IOException, XPathExpressionException {
+ driver.get(webAppURL + Constants.IOT_LOGIN_PATH);
+ LoginPage test = new LoginPage(driver);
+ test.loginAsAdmin(automationContext.getSuperTenant().getTenantAdmin().getUserName(),
+ automationContext.getSuperTenant().getTenantAdmin().getPassword());
+ }
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupFailTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupFailTest.java
new file mode 100644
index 00000000..57f899b6
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupFailTest.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.group;
+
+import org.junit.Assert;
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
+
+/**
+ * This class contains methods to test the failing scenarios of Group creation.
+ * There can be groups with same name.
+ * So the failing scenario is sending the form with empty group name.
+ */
+public class DeviceGroupFailTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws Exception {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ }
+
+ @Test(description = "Test for empty group name.")
+ public void addNewGroupFailTest() throws Exception {
+ driver.get(getWebAppURL() + Constants.IOT_GROUP_ADD_URL);
+ DeviceAddGroupPage addGroupPage = new DeviceAddGroupPage(driver);
+
+ Assert.assertEquals(addGroupPage.submitEmptyForm(), Constants.GROUP_NAME_FIELD_ERROR);
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupTest.java
new file mode 100644
index 00000000..d3e52f21
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/group/DeviceGroupTest.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.group;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
+import org.wso2.iot.integration.ui.pages.groups.DeviceGroupsPage;
+import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
+
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test cases for grouping feature of IOT server.
+ */
+public class DeviceGroupTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private IOTAdminDashboard adminDashboard;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws Exception {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ adminDashboard = new IOTAdminDashboard(driver);
+ }
+
+ @Test(description = "Test for adding a new device group.")
+ public void addNewGroupTest() throws IOException {
+ DeviceAddGroupPage addGroupPage = adminDashboard.addGroup();
+ addGroupPage.addNewGroup(Constants.GROUP_NAME, Constants.GROUP_DESCRIPTION);
+ }
+
+ @Test(description = "Check whether the created group exists", dependsOnMethods = {"addNewGroupTest"})
+ public void isGroupCreatedTest() throws IOException, XPathExpressionException {
+ driver.get(getWebAppURL() + Constants.IOT_HOME_URL);
+ DeviceGroupsPage groupsPage = adminDashboard.viewGroups();
+ Assert.assertTrue(groupsPage.isGroupCreated(Constants.GROUP_NAME));
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginFormValidationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginFormValidationTest.java
new file mode 100644
index 00000000..b727101e
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginFormValidationTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.login;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+
+/**
+ * Test cases to test the incorrect login from submissions.
+ * Ex:
+ * 1. Empty form
+ * 2. Incorrect username or password
+ * 3. short password
+ */
+public class LoginFormValidationTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+
+ WebElement userNameField;
+ WebElement passwordField;
+ WebElement loginButton;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws Exception {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ clearForm();
+ }
+
+ @Test(description = "Test for empty login form submission")
+ public void emptyLoginFormTest() throws Exception {
+ userNameField.sendKeys("");
+ passwordField.sendKeys("");
+ loginButton.click();
+
+ WebElement alertUserName = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.login.username.error")));
+ WebElement alertPassword = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.login.password.error")));
+
+ if (!alertUserName.isDisplayed()) Assert.assertTrue(false, "Alert for user name is not present.");
+ if (!alertPassword.isDisplayed()) Assert.assertTrue(false, "Alert for password is not present.");
+
+ Assert.assertEquals(alertUserName.getText(), Constants.User.Login.USER_NAME_ERROR);
+ Assert.assertEquals(alertPassword.getText(), Constants.User.Login.PASSWORD_ERROR);
+
+ }
+
+ @Test(description = "Test for incorrect username")
+ public void incorrectUserNameTest() throws Exception {
+ clearForm();
+ userNameField.sendKeys(Constants.User.Login.WRONG_USER_NAME);
+ passwordField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getPassword());
+ loginButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath")));
+ if (alert.isDisplayed()) {
+ Assert.assertEquals(alert.getText(), Constants.User.Login.FAILED_ERROR);
+ } else {
+ Assert.assertTrue(false, Constants.ALERT_NOT_PRESENT);
+ }
+
+ }
+
+ @Test(description = "Test for incorrect password")
+ public void incorrectPasswordTest() throws Exception {
+ clearForm();
+ userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getPassword());
+ passwordField.sendKeys(Constants.User.Login.WRONG_USER_PASSWORD);
+ loginButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath")));
+ if (alert.isDisplayed()) {
+ Assert.assertEquals(alert.getText(), Constants.User.Login.FAILED_ERROR);
+ } else {
+ Assert.assertTrue(false, Constants.ALERT_NOT_PRESENT);
+ }
+ }
+
+
+ @Test(description = "Test for short password")
+ public void shortPasswordTest() throws Exception {
+ clearForm();
+ userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getUserName());
+ passwordField.sendKeys(Constants.User.Login.SHORT_PASSWORD);
+ loginButton.click();
+
+ WebElement alert = driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error")));
+ if (alert.isDisplayed()) {
+ Assert.assertEquals(alert.getText(), Constants.User.Login.SHORT_PASSWORD_ERROR);
+ } else {
+ Assert.assertTrue(false, Constants.ALERT_NOT_PRESENT);
+ }
+ }
+
+ public void clearForm() throws Exception {
+ driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
+ uiElementMapper = UIElementMapper.getInstance();
+
+ userNameField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.login.input.username.xpath")));
+ passwordField = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.login.input.password.xpath")));
+ loginButton = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.user.login.button.xpath")));
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginTest.java
new file mode 100644
index 00000000..4bdf52ed
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/login/LoginTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.login;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
+import org.wso2.iot.integration.ui.pages.login.LoginPage;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test Login as Admin
+ */
+public class LoginTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
+ }
+
+ @Test(description = "Verify login to IOT server dashboard")
+ public void testAdminLogin() throws IOException, XPathExpressionException {
+ LoginPage loginPage = new LoginPage(driver);
+ IOTAdminDashboard dashboard = loginPage.loginAsAdmin(
+ automationContext.getSuperTenant().getTenantAdmin().getUserName(),
+ automationContext.getSuperTenant().getTenantAdmin().getPassword());
+ dashboard.logout();
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown(){
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrollmentTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrollmentTest.java
new file mode 100644
index 00000000..c906eb26
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrollmentTest.java
@@ -0,0 +1,74 @@
+/*
+* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.iot.integration.web.ui.test.samples;
+
+import junit.framework.Assert;
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.devices.EnrollDevicePage;
+import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
+import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceTypeViewPage;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test cases to verify the enrolment process.
+ */
+public class SampleEnrollmentTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private ConnectedCupDeviceTypeViewPage connectedCupDeviceTypeViewPage;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
+ EnrollDevicePage enrollDevicePage = adminDashboard.enrollNewDevice();
+ connectedCupDeviceTypeViewPage = enrollDevicePage.gotoConnectedCupDeviceTypeViewPage();
+ }
+
+ @Test(description = "Verify the pop up modal is displayed.",
+ groups = Constants.TestSample.ENROLL,
+ dependsOnGroups = Constants.TestSample.INSTALL_VERIFY)
+ public void enrollDevicePopUpModalTest() throws InterruptedException, IOException {
+ Assert.assertTrue(connectedCupDeviceTypeViewPage.isPopUpPresent());
+ }
+
+ @Test(description = "Test case for device enrolment",
+ groups = Constants.TestSample.ENROLL,
+ dependsOnMethods = {"enrollDevicePopUpModalTest"})
+ public void enrollDeviceTest() throws InterruptedException {
+ Assert.assertTrue(connectedCupDeviceTypeViewPage.enrollDevice(Constants.IOT_CONNECTED_CUP_NAME));
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrolmentVerificationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrolmentVerificationTest.java
new file mode 100644
index 00000000..1dc592bc
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleEnrolmentVerificationTest.java
@@ -0,0 +1,82 @@
+/*
+* Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+*
+* WSO2 Inc. licenses this file to you under the Apache License,
+* Version 2.0 (the "License"); you may not use this file except
+* in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.wso2.carbon.iot.integration.web.ui.test.samples;
+
+import junit.framework.Assert;
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.devices.DevicesPage;
+import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceViewPage;
+import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceInterface;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test cases to check whether the sample is enrolled correctly.
+ */
+public class SampleEnrolmentVerificationTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver webDriver;
+ private DevicesPage devicesPage;
+ private ConnectedCupDeviceViewPage connectedCupDeviceViewPage;
+
+ @BeforeClass(alwaysRun = true)
+ public void setUp() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ webDriver = BrowserManager.getWebDriver();
+ LoginUtils.login(webDriver, automationContext, getWebAppURL());
+ webDriver.get(getWebAppURL() + Constants.IOT_DEVICES_URL);
+ devicesPage = new DevicesPage(webDriver);
+ }
+
+ @Test(description = "Verify enrolment of the sample device",
+ groups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnGroups = Constants.TestSample.ENROLL)
+ public void verifyEnrollmentTest() {
+ Assert.assertTrue(devicesPage.isDeviceEnrolled(Constants.IOT_CONNECTED_CUP_NAME));
+ }
+
+ @Test(description = "Verify navigation to device view",
+ dependsOnMethods = "verifyEnrollmentTest",
+ groups = Constants.TestSample.ENROLL_VERIFY)
+ public void verifyNavigationTest() throws IOException {
+ connectedCupDeviceViewPage = devicesPage.viewDevice(Constants.IOT_CONNECTED_CUP_NAME);
+ Assert.assertNotNull(connectedCupDeviceViewPage);
+ }
+
+ @Test(description = "Verify sample functions",
+ dependsOnMethods = {"verifyNavigationTest"})
+ public void sampleStartUpTest() throws IOException {
+ ConnectedCupDeviceInterface sampleViewPage = connectedCupDeviceViewPage.gotoDevice();
+ Assert.assertNotNull(sampleViewPage);
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() {
+ webDriver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleFunctionalityTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleFunctionalityTest.java
new file mode 100644
index 00000000..d8bde532
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleFunctionalityTest.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.samples;
+
+import junit.framework.Assert;
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.devices.DevicesPage;
+import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceViewPage;
+import org.wso2.iot.integration.ui.pages.samples.ConnectedCupDeviceInterface;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test cases for test the functionality of the connected cup sample.
+ * In these test cases following features are tested.
+ * 1. Setting temperature and Coffee level
+ * 2. Order coffee
+ * 3. Test the stat graphs
+ */
+public class SampleFunctionalityTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driverDevice;
+ private WebDriver driverServer;
+ private ConnectedCupDeviceInterface sampleViewPage;
+ private ConnectedCupDeviceViewPage deviceViewPage;
+
+ @BeforeClass(alwaysRun = true)
+ public void setUp() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driverDevice = BrowserManager.getWebDriver();
+ driverServer = BrowserManager.getWebDriver();
+ LoginUtils.login(driverServer, automationContext, getWebAppURL());
+ driverServer.get(getWebAppURL() + Constants.IOT_DEVICES_URL);
+ DevicesPage devicesPage = new DevicesPage(driverServer);
+ deviceViewPage = devicesPage.viewDevice(Constants.IOT_CONNECTED_CUP_NAME);
+
+ //Opens the connected cup device interface in the browser.
+ driverDevice.get(deviceViewPage.getDeviceLink());
+ sampleViewPage = new ConnectedCupDeviceInterface(driverDevice);
+ }
+
+ @Test(description = "Set the temperature level.",
+ groups = Constants.TestSample.VERIFY,
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY)
+ public void setTemperatureTest() {
+ Assert.assertTrue(sampleViewPage.changeTemperature(Constants.ConnectedCup.TEMPERATURE));
+ }
+
+ @Test(description = "Set the coffee level.",
+ groups = Constants.TestSample.VERIFY,
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY)
+ public void setCoffeeLevelTest() throws IOException {
+ Assert.assertTrue(sampleViewPage.changeCoffeeLevel(Constants.ConnectedCup.COFFEE_LEVEl));
+ }
+
+ @Test(description = "Verify order coffee function.",
+ groups = Constants.TestSample.VERIFY,
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY)
+ public void orderCoffeeTest() throws IOException, InterruptedException {
+ Assert.assertTrue(sampleViewPage.orderCoffee());
+ }
+
+ @Test(description = "Test the graphs are present in device view.",
+ groups = Constants.TestSample.VERIFY,
+ dependsOnMethods = {"setTemperatureTest", "setCoffeeLevelTest", "orderCoffeeTest"})
+ public void verifyGraphs() throws IOException {
+ Assert.assertTrue(deviceViewPage.isGraphsAvailable(2));
+ }
+
+ @Test(description = "Test the Y axis name of Temperature graph.",
+ groups = {Constants.TestSample.VERIFY,
+ Constants.TestSample.TEMPERATURE},
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnMethods = {"verifyGraphs"})
+ public void temperatureGraphYAxisNameTest() throws IOException {
+ Assert.assertTrue(deviceViewPage.graphAxisName(Constants.IOT_GRAPH_Y_AXIS,
+ Constants.ConnectedCup.TEMPERATURE_ID,
+ Constants.ConnectedCup.TEMPERATURE_Y_AXIS));
+ }
+
+ @Test(description = "Test the X axis name of Temperature graph.",
+ groups = {Constants.TestSample.VERIFY,
+ Constants.TestSample.TEMPERATURE},
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnMethods = {"verifyGraphs"})
+ public void temperatureGraphXAxisNameTest() throws IOException {
+ Assert.assertTrue(deviceViewPage.graphAxisName(Constants.IOT_GRAPH_X_AXIS,
+ Constants.ConnectedCup.TEMPERATURE_ID,
+ Constants.ConnectedCup.TEMPERATURE_X_AXIS));
+ }
+
+ @Test(description = "Test the whether the Coffee Level graph legend is present.",
+ groups = {Constants.TestSample.VERIFY,
+ Constants.TestSample.TEMPERATURE},
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnMethods = {"verifyGraphs"})
+ public void temperatureGraphLegendTest() {
+ Assert.assertTrue(deviceViewPage.graphLegendName(Constants.ConnectedCup.TEMPERATURE_ID,
+ Constants.ConnectedCup.TEMPERATURE_LEGEND));
+ }
+
+ @Test(description = "Test the whether the Temperature graph path is visible.",
+ groups = {Constants.TestSample.VERIFY,
+ Constants.TestSample.TEMPERATURE},
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnMethods = {"verifyGraphs"})
+ public void temperatureGraphPathTest() {
+ Assert.assertTrue(deviceViewPage.checkGraphPath(Constants.ConnectedCup.TEMPERATURE_GRAPH_ID));
+ }
+
+ @Test(description = "Test the whether the Temperature graph gets values.",
+ groups = {Constants.TestSample.VERIFY,
+ Constants.TestSample.TEMPERATURE},
+ dependsOnGroups = Constants.TestSample.ENROLL_VERIFY,
+ dependsOnMethods = {"verifyGraphs"})
+ public void temperatureGraphDataPublisherTest() {
+ Assert.assertTrue(deviceViewPage.checkGraphValues(Constants.ConnectedCup.TEMPERATURE_GRAPH_ID,
+ Constants.ConnectedCup.TEMPERATURE));
+ }
+
+ @Test(description = "Test the Y axis name of Coffee Level graph.",
+ groups = Constants.TestSample.COFFEE_LEVEL,
+ dependsOnGroups = Constants.TestSample.TEMPERATURE)
+ public void coffeeLevelGraphYAxisNameTest() {
+ Assert.assertTrue(deviceViewPage.graphAxisName(Constants.IOT_GRAPH_Y_AXIS,
+ Constants.ConnectedCup .COFFEE_LEVEL_ID,
+ Constants.ConnectedCup.COFFEE_LEVEL_Y_AXIS));
+ }
+
+ @Test(description = "Test the X axis name of Coffee Level graph.",
+ groups = Constants.TestSample.COFFEE_LEVEL,
+ dependsOnGroups = {Constants.TestSample.ENROLL_VERIFY,
+ Constants.TestSample.TEMPERATURE})
+ public void coffeeLevelGraphXAxisNameTest() {
+ Assert.assertTrue(deviceViewPage.graphAxisName(Constants.IOT_GRAPH_X_AXIS,
+ Constants.ConnectedCup.COFFEE_LEVEL_ID,
+ Constants.ConnectedCup.COFFEE_LEVEL_X_AXIS));
+ }
+
+ @Test(description = "Test the whether the Coffee Level graph legend is present.",
+ groups = Constants.TestSample.COFFEE_LEVEL,
+ dependsOnGroups = {Constants.TestSample.TEMPERATURE})
+ public void coffeeLevelGraphLegendTest() throws IOException {
+ Assert.assertTrue(deviceViewPage.graphLegendName(Constants.ConnectedCup.COFFEE_LEVEL_ID,
+ Constants.ConnectedCup.COFFEE_LEVEL_LEGEND));
+ }
+
+ @Test(description = "Test the whether the Coffee Level graph path is visible.",
+ groups = Constants.TestSample.COFFEE_LEVEL,
+ dependsOnGroups = {Constants.TestSample.TEMPERATURE})
+ public void coffeeLevelGraphPathTest() {
+ Assert.assertTrue(deviceViewPage.checkGraphPath(Constants.ConnectedCup.COFFEE_LEVEL_GRAPH_ID));
+ }
+
+ @Test(description = "Test the whether the Coffee Level graph gets values.",
+ groups = Constants.TestSample.COFFEE_LEVEL,
+ dependsOnGroups = Constants.TestSample.TEMPERATURE)
+ public void coffeeLevelGraphDataPublisherTest() {
+ Assert.assertTrue(deviceViewPage.checkGraphValues(Constants.ConnectedCup.COFFEE_LEVEL_GRAPH_ID,
+ Constants.ConnectedCup.COFFEE_LEVEl));
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() {
+ driverServer.quit();
+ driverDevice.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationTest.java
new file mode 100644
index 00000000..1368e0b1
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationTest.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.samples;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.authenticator.stub.LoginAuthenticationExceptionException;
+import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
+import org.wso2.carbon.integration.common.admin.client.LogViewerClient;
+import org.wso2.carbon.integration.common.utils.exceptions.AutomationUtilException;
+import org.wso2.carbon.integration.common.utils.mgt.ServerConfigurationManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.logging.view.stub.LogViewerLogViewerException;
+import org.wso2.carbon.logging.view.stub.types.carbon.LogEvent;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.MalformedURLException;
+import java.rmi.RemoteException;
+import java.util.Properties;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Test cases for building and installation of sample device types.
+ * When installing a custom device type to the IOT server, developer has to create the device type as a feature and
+ * put it in to the samples folder.
+ * Then build the device type created with maven.
+ * After that install the device type by running the device-deployer.xml.
+ * Then the server has to be restarted, in order to activate newly installed device type.
+ *
+ * In this test case, the build process of a new device type and installation to the server is tested.
+ */
+public class SampleInstallationTest extends IOTIntegrationUIBaseTestCase {
+ private Log log = LogFactory.getLog(SampleInstallationTest.class);
+ private Process tempProcess = null;
+ private Properties properties = System.getProperties();
+ private String carbonHome = properties.getProperty(Constants.CARBON_HOME);
+ private String[] commands;
+ private LogViewerClient logViewerClient;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException, AutomationFrameworkException,
+ LoginAuthenticationExceptionException {
+ super.init();
+ logViewerClient = new LogViewerClient(getBackendURL(), getSessionCookie(automationContext));
+ }
+
+ @Test(description = "Verify the sample build process",
+ groups = Constants.TestSample.SAMPLE_INSTALL)
+ public void sampleBuildTest() throws IOException {
+ String connectedCupDir = carbonHome + File.separator + "samples" + File.separator + "connectedcup";
+ log.info("Connected cup Sample: " + connectedCupDir);
+ File dir = new File(connectedCupDir);
+ try {
+ if (System.getProperty(Constants.OS_NAME).toLowerCase().contains("windows")) {
+ log.info("Executing maven clean install --------------------------------");
+ commands = new String[]{"cmd.exe", "/c", "mvn clean install"};
+ tempProcess = Runtime.getRuntime().exec(commands, null, dir);
+ } else {
+ log.info("Executing maven clean install --------------------------------");
+ commands = new String[]{"mvn", "clean", "install"};
+ tempProcess = Runtime.getRuntime().exec(commands, null, dir);
+ }
+
+ boolean buildStatus = waitForMessage(tempProcess.getInputStream(), Constants.BUILD_SUCCESS_MSG);
+ Assert.assertTrue(buildStatus, "Building the sample was not successful");
+ } finally {
+ if (tempProcess != null) {
+ tempProcess.destroy();
+ }
+ }
+ }
+
+ @Test(description = "Verify the sample installation process",
+ groups = Constants.TestSample.SAMPLE_INSTALL,
+ dependsOnMethods = {"sampleBuildTest"})
+ public void sampleInstallationTest() throws IOException {
+
+ log.info("CARBON_HOME: " + System.getProperty(Constants.CARBON_HOME));
+ File dir = new File(carbonHome);
+ log.info("Sample installation started : mvn clean install -f device-deployer.xml");
+ try {
+ if (System.getProperty(Constants.OS_NAME).toLowerCase().contains("windows")) {
+ commands = new String[]{"cmd.exe", "/c", "mvn clean install -f device-deployer.xml"};
+ tempProcess = Runtime.getRuntime().exec(commands, null, dir);
+ } else {
+ commands = new String[]{"mvn", "clean", "install", "-f", "device-deployer.xml"};
+ tempProcess = Runtime.getRuntime().exec(commands, null, dir);
+ }
+ boolean buildStatus = waitForMessage(tempProcess.getInputStream(), Constants.BUILD_SUCCESS_MSG);
+ Assert.assertTrue(buildStatus, "Sample installation was not successful");
+ } finally {
+ if (tempProcess != null) {
+ tempProcess.destroy();
+ }
+ }
+ }
+
+ @Test(description = "Test restarting the server",
+ groups = Constants.TestSample.SAMPLE_INSTALL,
+ dependsOnMethods = {"sampleInstallationTest"})
+ public void serverRestartTest() {
+ ServerConfigurationManager serverManager;
+ try {
+ serverManager = new ServerConfigurationManager(automationContext);
+ log.info("Restart Triggered -------------------------------------------------------------------");
+ serverManager.restartGracefully();
+ logViewerClient.getAllRemoteSystemLogs();
+ waitForRestart();
+ } catch (AutomationUtilException | XPathExpressionException | MalformedURLException e) {
+ log.error("Restart failed due to : " + e.getLocalizedMessage());
+ } catch (RemoteException | LogViewerLogViewerException e) {
+ log.error("Cannot get server log due to : " + e.getLocalizedMessage());
+ }
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ if (tempProcess != null) {
+ tempProcess.destroy();
+ }
+ }
+
+ /**
+ * Wait for a given message to be printed in terminal. Used for processes.
+ * @param inputStream : Input stream of the process
+ * @param message : The message which is to be look for
+ */
+ private boolean waitForMessage(InputStream inputStream, String message) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
+ String line;
+ boolean status = false;
+ while ((line = br.readLine()) != null) {
+ log.info(line);
+ if (!status && line.contains(message)) {
+ status = true;
+ }
+ }
+ return status;
+ }
+
+ /**
+ * Wait until the server restarts.
+ * This method looks for "Mgt console URL:" to be appeared in the terminal.
+ * If it does not appear within the given timeout an Exception will be thrown.
+ */
+ private void waitForRestart() {
+ ExecutorService service = Executors.newSingleThreadExecutor();
+ try {
+ Runnable r = new Runnable() {
+ @Override
+ public void run() {
+ try {
+ LogEvent[] logEvents = logViewerClient.getAllRemoteSystemLogs();
+ for (LogEvent event : logEvents) {
+ log.info(event.getMessage() + " @ " + event.getLogTime());
+ if (event.getMessage().contains("Mgt Console URL : " )){
+ log.info("Server restarted successfully");
+ Assert.assertTrue(true);
+ }
+ }
+ } catch (RemoteException | LogViewerLogViewerException e) {
+ log.error("Error reading logs. \n" + e.getMessage());
+ Assert.assertTrue(false);
+ }
+ }
+ };
+
+ Future> f = service.submit(r);
+
+ f.get(Constants.IOT_RESTART_THREAD_TIMEOUT, TimeUnit.MINUTES);
+ } catch (final InterruptedException e) {
+ log.error("Interrupted "+e.getMessage());
+ Assert.assertTrue(false);
+ } catch (final TimeoutException e) {
+ log.error("Timeout " + e.getMessage());
+ Assert.assertTrue(false);
+ } catch (final ExecutionException e) {
+ log.error("Execution failed " + e.getMessage());
+ Assert.assertTrue(false);
+ } finally {
+ service.shutdown();
+ }
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationVerification.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationVerification.java
new file mode 100644
index 00000000..6c9d54c6
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/samples/SampleInstallationVerification.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.samples;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.devices.EnrollDevicePage;
+import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test cases to verify the sample installation is successful and device type is installed correctly.
+ */
+public class SampleInstallationVerification extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private IOTAdminDashboard adminDashboard;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ adminDashboard = new IOTAdminDashboard(driver);
+ }
+
+ @Test(description = "Verify the sample is available in Virtual devices section.",
+ groups = Constants.TestSample.INSTALL_VERIFY,
+ dependsOnGroups = Constants.TestSample.SAMPLE_INSTALL)
+ public void installationVerificationTest() throws IOException {
+ EnrollDevicePage enrollDevicePage = adminDashboard.enrollNewDevice();
+ Assert.assertTrue(enrollDevicePage.isInstalled());
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void teardown() {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AddUserFormValidationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AddUserFormValidationTest.java
new file mode 100644
index 00000000..44175b14
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AddUserFormValidationTest.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.user;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Class contains test cases for Add user form validation.
+ * 1. Empty form submission
+ * 2. Short user name
+ * 3. Empty First Name
+ * 4. Empty Last Name
+ * 5. Empty email
+ * 6. Incorrect email
+ */
+public class AddUserFormValidationTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+ private WebElement firstNameField;
+ private WebElement lastNameField;
+ private WebElement emailField;
+ private WebElement userNameField;
+ private WebElement addUserButton;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ driver.get(getWebAppURL() + Constants.IOT_USER_ADD_URL);
+ uiElementMapper = UIElementMapper.getInstance();
+
+ userNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.username.id")));
+ firstNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.firstName.id")));
+ lastNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.lastName.id")));
+ emailField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.email.id")));
+
+ addUserButton = driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath")));
+ }
+
+ @Test(description = "Test for empty form submission")
+ public void emptyFormTest() {
+ clearForm();
+
+ firstNameField.sendKeys("");
+ lastNameField.sendKeys("");
+ emailField.sendKeys("");
+ userNameField.sendKeys("");
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for empty form not is displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), "Username is a required field. It cannot be empty.");
+ }
+
+ @Test(description = "Test for short user name")
+ public void shortUserNameTest() {
+ clearForm();
+
+ firstNameField.sendKeys(Constants.User.Add.FIRST_NAME);
+ lastNameField.sendKeys(Constants.User.Add.LAST_NAME);
+ emailField.sendKeys(Constants.User.Add.EMAIL);
+ userNameField.sendKeys(Constants.User.Add.SHORT_USER_NAME);
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for short user name is not displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), Constants.User.Add.SHORT_USER_NAME_ERROR_MSG);
+ }
+
+ @Test(description = "Test for empty first name")
+ public void emptyFirstNameTest() {
+ clearForm();
+
+ firstNameField.sendKeys("");
+ lastNameField.sendKeys(Constants.User.Add.LAST_NAME);
+ emailField.sendKeys(Constants.User.Add.EMAIL);
+ userNameField.sendKeys(Constants.User.Add.USER_NAME);
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for First name is not displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), Constants.User.Add.FIRST_NAME_ERROR_MSG);
+ }
+
+ @Test(description = "Test for empty last name")
+ public void emptyLastNameTest() {
+ clearForm();
+
+ firstNameField.sendKeys(Constants.User.Add.FIRST_NAME);
+ lastNameField.sendKeys("");
+ emailField.sendKeys(Constants.User.Add.EMAIL);
+ userNameField.sendKeys(Constants.User.Add.USER_NAME);
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for Last name is not displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), Constants.User.Add.LAST_NAME_ERROR_MSG);
+ }
+
+ @Test(description = "Test for empty email name")
+ public void emptyEmailTest() {
+ clearForm();
+
+ firstNameField.sendKeys(Constants.User.Add.FIRST_NAME);
+ lastNameField.sendKeys(Constants.User.Add.LAST_NAME);
+ emailField.sendKeys("");
+ userNameField.sendKeys(Constants.User.Add.USER_NAME);
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for E-mail is not displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), Constants.User.Add.NO_EMAIL_ERROR_MSG);
+ }
+
+ @Test(description = "Test for incorrect email")
+ public void incorrectEmailTest() {
+ clearForm();
+
+ firstNameField.sendKeys(Constants.User.Add.FIRST_NAME);
+ lastNameField.sendKeys(Constants.User.Add.LAST_NAME);
+ emailField.sendKeys(Constants.User.Add.EMAIL_ERROR);
+ userNameField.sendKeys(Constants.User.Add.USER_NAME);
+
+ addUserButton.click();
+
+ WebElement alert = driver.findElement(By.xpath(
+ uiElementMapper.getElement("iot.admin.addUser.formError.xpath")));
+
+ if (!alert.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for incorrect E-mail is not displayed.");
+ }
+
+ Assert.assertEquals(alert.getText(), Constants.User.Add.WRONG_EMAIL_ERROR_MSG);
+ }
+
+ private void clearForm() {
+ firstNameField.clear();
+ lastNameField.clear();
+ emailField.clear();
+ userNameField.clear();
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AdminFunctionsTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AdminFunctionsTest.java
new file mode 100644
index 00000000..e25740e9
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/AdminFunctionsTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.user;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
+import org.wso2.iot.integration.ui.pages.uesr.AddUserPage;
+import org.wso2.iot.integration.ui.pages.uesr.UserListingPage;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test for check following admin capabilities.
+ * - Create a new User
+ * - Delete a user
+ */
+public class AdminFunctionsTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws IOException, XPathExpressionException, XMLStreamException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ LoginUtils.login(driver, automationContext, getWebAppURL());
+ }
+
+ @Test(description = "Test for creating a new user")
+ public void createUserTest() throws IOException {
+ IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
+ AddUserPage addUserPage = adminDashboard.addUser();
+ addUserPage.createNewUser("user1", "User", "User", "user@wso2.com");
+ }
+
+ @Test(description = "Test for deleting a created user", dependsOnMethods = {"createUserTest"})
+ public void deleteUserTest() throws XPathExpressionException, IOException, InterruptedException {
+ driver.get(getWebAppURL() + Constants.IOT_HOME_URL);
+ IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
+ UserListingPage userListingPage = adminDashboard.viewUser();
+ userListingPage.deleteUser();
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/NewUserRegistrationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/NewUserRegistrationTest.java
new file mode 100644
index 00000000..3d66675f
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/NewUserRegistrationTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.user;
+
+import org.openqa.selenium.WebDriver;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+import org.wso2.iot.integration.ui.pages.home.IOTHomePage;
+import org.wso2.iot.integration.ui.pages.login.LoginPage;
+import org.wso2.iot.integration.ui.pages.uesr.NewUserRegisterPage;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * Test for registering a new user and login
+ */
+public class NewUserRegistrationTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
+ }
+
+ @Test(description = "Verify new User registration")
+ public void userRegisterTest() throws IOException {
+ LoginPage login = new LoginPage(driver);
+ NewUserRegisterPage registerTest = login.registerNewUser();
+ LoginPage loginPage = registerTest.registerUser(Constants.User.Register.FIRST_NAME,
+ Constants.User.Register.LAST_NAME,
+ Constants.User.Register.EMAIL,
+ Constants.User.Register.USER_NAME,
+ Constants.User.Register.PASSWORD,
+ Constants.User.Register.CONFIRM_PASSWORD);
+
+ IOTHomePage homePage = loginPage.loginAsUser(Constants.User.Register.USER_NAME,
+ Constants.User.Register.PASSWORD);
+
+ Assert.assertTrue(homePage.checkUserName());
+ }
+
+ @Test(description = "Test user logout function", dependsOnMethods = {"userRegisterTest"})
+ public void logoutTest() throws IOException {
+ IOTHomePage homePage = new IOTHomePage(driver);
+ homePage.logout();
+ Assert.assertEquals(driver.getTitle(), Constants.User.Login.PAGE_TITLE);
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() throws Exception {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/RegistrationFormValidationTest.java b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/RegistrationFormValidationTest.java
new file mode 100644
index 00000000..60af0de3
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/java/org/wso2/carbon/iot/integration/web/ui/test/user/RegistrationFormValidationTest.java
@@ -0,0 +1,145 @@
+/*
+ * Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
+ *
+ * WSO2 Inc. licenses this file to you under the Apache License,
+ * Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.wso2.carbon.iot.integration.web.ui.test.user;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.WebElement;
+import org.testng.Assert;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
+import org.wso2.carbon.iot.integration.web.ui.test.common.Constants;
+import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
+import org.wso2.iot.integration.ui.pages.UIElementMapper;
+import org.wso2.iot.integration.ui.pages.uesr.NewUserRegisterPage;
+
+import javax.xml.stream.XMLStreamException;
+import javax.xml.xpath.XPathExpressionException;
+import java.io.IOException;
+
+/**
+ * These test cases check for following:
+ * - Submitting an empty form
+ * - Existing username
+ * - Non matching passwords
+ * - Password, username length
+ */
+public class RegistrationFormValidationTest extends IOTIntegrationUIBaseTestCase {
+
+ private WebDriver driver;
+ private UIElementMapper uiElementMapper;
+ private NewUserRegisterPage registerPage;
+
+ @BeforeClass(alwaysRun = true)
+ public void setup() throws XPathExpressionException, XMLStreamException, IOException {
+ super.init();
+ driver = BrowserManager.getWebDriver();
+ driver.get(getWebAppURL() + Constants.IOT_USER_REGISTER_URL);
+ registerPage = new NewUserRegisterPage(driver);
+ uiElementMapper = UIElementMapper.getInstance();
+ }
+
+ @Test(description = "Test for submitting an empty registration form")
+ public void emptyFormTest() throws IOException {
+ registerPage.validateForm("", "", "", "", "", "");
+
+ WebElement alertFirstName = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.firstname.error")));
+ WebElement alertLastName = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.lastname.error")));
+ WebElement alertEmail = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.email.error")));
+ WebElement alertUserName = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.username.error")));
+ WebElement alertPassword = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.password.error")));
+ WebElement alertConfPassword = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.confirmPassword.error")));
+
+ if (!alertFirstName.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for first name is not displayed");
+ }
+ if (!alertLastName.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for last name is not displayed");
+ }
+ if (!alertEmail.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for email is not displayed");
+ }
+ if (!alertUserName.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for user name is not displayed");
+ }
+ if (!alertPassword.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for password is not displayed");
+ }
+ if (!alertConfPassword.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for confirm password is not displayed");
+ }
+
+ Assert.assertEquals(alertFirstName.getText(), "Firstname is a required field. This cannot be empty.");
+ Assert.assertEquals(alertLastName.getText(), "Lastname is a required field. This cannot be empty.");
+ Assert.assertEquals(alertEmail.getText(), "Email is a required field. This cannot be empty.");
+ Assert.assertEquals(alertUserName.getText(), "Username is a required field. This cannot be empty.");
+ Assert.assertEquals(alertPassword.getText(), "Please enter a user login password");
+ Assert.assertEquals(alertConfPassword.getText(), "Please enter a user login password");
+ }
+
+ @Test(description = "Test for non matching passwords")
+ public void nonMatchingPasswordTest() {
+ registerPage.validateForm("user", "user", "user@wso2.com", "user1", "password", "Password");
+ WebElement alertConfPassword = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.confirmPassword.error")));
+
+ if (!alertConfPassword.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for confirm password is not displayed");
+ }
+
+ Assert.assertEquals(alertConfPassword.getText(), "Please enter the same password as above");
+ }
+
+ @Test(description = "Test for email")
+ public void incorrectEmailTest() {
+ registerPage.validateForm("user", "user", "user123", "user1", "password", "password");
+ WebElement alertEmail = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.email.error")));
+ if (!alertEmail.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for email is not displayed");
+ }
+
+ Assert.assertEquals(alertEmail.getText(), "Email is not valid. Please enter a correct email address.");
+ }
+
+ @Test(description = "Test for password length")
+ public void passwordLengthTest() {
+ registerPage.validateForm("user", "user", "user@wso2.com", "user1", "pass", "pass");
+ WebElement alertPassword = driver.findElement(By.id(
+ uiElementMapper.getElement("iot.user.register.password.error")));
+ if (!alertPassword.isDisplayed()) {
+ Assert.assertTrue(false, "Alert for password is not displayed");
+ }
+
+ Assert.assertEquals(alertPassword.getText(), "Password should be between 5 and 30 characters.");
+ }
+
+ @AfterClass(alwaysRun = true)
+ public void tearDown() {
+ driver.quit();
+ }
+
+}
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/automation.xml b/modules/integration/tests-iot-web-ui/src/test/resources/automation.xml
new file mode 100644
index 00000000..936e23ed
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/automation.xml
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+ 60000
+
+ 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.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension
+ org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/automationXMLSchema.xsd b/modules/integration/tests-iot-web-ui/src/test/resources/automationXMLSchema.xsd
new file mode 100644
index 00000000..b800b2ba
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/automationXMLSchema.xsd
@@ -0,0 +1,611 @@
+
+
+
+
+
+
+ =================================================
+ 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 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/modules/integration/tests-iot-web-ui/src/test/resources/axis2config/axis2_client.xml b/modules/integration/tests-iot-web-ui/src/test/resources/axis2config/axis2_client.xml
new file mode 100644
index 00000000..a8b584d0
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/axis2config/axis2_client.xml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+ true
+ false
+ false
+
+
+ 500
+
+ 15000
+
+
+ false
+
+
+
+ true
+
+
+
+
+
+ false
+
+
+ admin
+ axis2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 6071
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HTTP/1.1
+ chunked
+ 60000
+ 60000
+
+
+ HTTP/1.1
+ chunked
+ 60000
+ 60000
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar
new file mode 100644
index 00000000..57f85764
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v10.mar differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v11-20140908.185829-596.mar b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v11-20140908.185829-596.mar
new file mode 100644
index 00000000..4ca7737a
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v11-20140908.185829-596.mar differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v15.mar b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v15.mar
new file mode 100644
index 00000000..68f5cbd6
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/addressing-1.6.1-wso2v15.mar differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/rampart-1.6.1-wso2v8.mar b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/rampart-1.6.1-wso2v8.mar
new file mode 100644
index 00000000..60cd6cdf
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/client/modules/rampart-1.6.1-wso2v8.mar differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/emma.properties b/modules/integration/tests-iot-web-ui/src/test/resources/emma.properties
new file mode 100644
index 00000000..9c48e81b
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/emma.properties
@@ -0,0 +1,105 @@
+# -------------------------------------------------------------
+#
+# for user-editable property overrides use one of these options:
+#
+# (1) option-specific command line overrides, e.g.
+# -Dreport.txt.out.file=coverage.txt
+#
+# (2) '-p ' command line option,
+#
+# (3) 'emma.properties' resource placed somewhere in the classpath
+# (e.g., in \classes directory -- note that it does
+# not exist by default),
+#
+# (4) '-Demma.*' JVM options, e.g.
+# -Demma.report.txt.out.file=coverage.txt
+#
+# (5) 'emma.properties' JVM option pointing to a properties file
+# -Demma.properties=./myproperties.txt
+# -------------------------------------------------------------
+
+# -------------------------------------------------------------
+# logging properties:
+
+verbosity.level: none
+
+# classloading properties:
+
+#clsload.forced_delegation_filter:
+#clsload.through_delegation_filter: -*
+
+# -------------------------------------------------------------
+
+# instrumentation properties:
+
+instr.exclude_empty_classes: true
+instr.exclude_synthetic_methods: true
+instr.exclude_bridge_methods: true
+instr.do_suid_compensation: true
+
+# -------------------------------------------------------------
+
+# runtime properties:
+
+rt.control: false
+rt.control.host: localhost
+#rt.control.port: 44444
+
+rt.filelock: true
+#rt.filelock.portbase: 59141
+rt.filelock.maxtime: 120000
+rt.filelock.retries: 11
+
+# -------------------------------------------------------------
+
+# apprunner session data output properties:
+
+session.out.file: coverage.es
+session.out.merge: true
+
+# -------------------------------------------------------------
+
+# runtime coverage data output properties:
+
+coverage.out.file: coverage.ec
+coverage.out.merge: true
+
+# -------------------------------------------------------------
+
+# instr metadata output properties:
+
+metadata.out.file: coverage.em
+metadata.out.merge: true
+
+# -------------------------------------------------------------
+
+# common report defaults:
+
+report.units: instr
+report.depth: method
+report.columns: name, line, block, method, class
+report.sort: -line,-block,-method,-class,+name
+report.metrics: method:40,block:80,line:40,class:100
+
+# -------------------------------------------------------------
+# txt report properties:
+
+report.txt.depth: all
+report.txt.columns: class,method,block,line,name
+report.txt.out.file: coverage.txt
+
+# -------------------------------------------------------------
+# html report properties:
+
+#report.html.out.dir: coverage
+#report.html.out.file: /Users/azeez/Desktop/coverage/index.html
+report.html.out.encoding: ISO-8859-1
+
+# -------------------------------------------------------------
+# xml report properties:
+
+#report.xml.out.file: coverage.xml
+report.xml.out.encoding: UTF-8
+# -------------------------------------------------------------
+# end of file
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/filters.txt b/modules/integration/tests-iot-web-ui/src/test/resources/filters.txt
new file mode 100644
index 00000000..54913a22
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/filters.txt
@@ -0,0 +1,17 @@
+-*.stub*
+-*.stub_
+-*.stub_4.0.0
+-*.stub-
+-org.eclipse.*
+-*.equinox.*
+-org.wso2.carbon.user.core.*
+-samples.*
+-*.log4j*
+-*.axis2*
+-*.ui*
+-*.tenant*
+-*.stratos*
+-*.eventing*
+-*transports*
+-org.wso2.carbon.mediation.statistics*
+-*startup*
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/instrumentation.txt b/modules/integration/tests-iot-web-ui/src/test/resources/instrumentation.txt
new file mode 100644
index 00000000..917b2bb7
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/instrumentation.txt
@@ -0,0 +1,11 @@
+org.wso2.carbon.datasource_
+org.wso2.carbon.dataservices.core_
+org.wso2.carbon.transaction.manager_
+org.wso2.carbon.dataservices.sql.driver_
+org.wso2.carbon.dataservices.task_
+org.wso2.carbon.ndatasource.common_
+org.wso2.carbon.ndatasource.core_
+org.wso2.carbon.ndatasource.rdbms_
+org.wso2.carbon.ntask.common_
+org.wso2.carbon.ntask.core_
+org.wso2.carbon.ntask.solutions_
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/client-truststore.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/client-truststore.jks
new file mode 100644
index 00000000..ab222fdd
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/client-truststore.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2carbon.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2carbon.jks
new file mode 100644
index 00000000..79784a5e
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2carbon.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2certs.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2certs.jks
new file mode 100644
index 00000000..eb27997d
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2certs.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2mdm.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2mdm.jks
new file mode 100644
index 00000000..66b68ea3
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/products/wso2mdm.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/client-truststore.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/client-truststore.jks
new file mode 100644
index 00000000..ab222fdd
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/client-truststore.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2carbon.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2carbon.jks
new file mode 100644
index 00000000..79784a5e
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2carbon.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2certs.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2certs.jks
new file mode 100644
index 00000000..eb27997d
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2certs.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2emm.jks b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2emm.jks
new file mode 100644
index 00000000..ae5670b0
Binary files /dev/null and b/modules/integration/tests-iot-web-ui/src/test/resources/keystores/stratos/wso2emm.jks differ
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/log4j.properties b/modules/integration/tests-iot-web-ui/src/test/resources/log4j.properties
new file mode 100644
index 00000000..6fc06a7e
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/log4j.properties
@@ -0,0 +1,43 @@
+#
+# Copyright 2009 WSO2, Inc. (http://wso2.com)
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#
+# This is the log4j configuration file used by WSO2 Carbon
+#
+# IMPORTANT : Please do not remove or change the names of any
+# of the Appenders defined here. The layout pattern & log file
+# can be changed using the WSO2 Carbon Management Console, and those
+# settings will override the settings in this file.
+#
+
+log4j.rootLogger=INFO, console, Default
+
+log4j.logger.org.wso2=INFO
+
+#Automation file apender
+log4j.appender.Default=org.apache.log4j.RollingFileAppender
+log4j.appender.Default.File=logs/automation.log
+log4j.appender.Default.Append=true
+log4j.appender.Default.MaxFileSize=10MB
+log4j.appender.Default.MaxBackupIndex=10
+log4j.appender.Default.layout=org.apache.log4j.PatternLayout
+log4j.appender.Default.layout.ConversionPattern=%d{ISO8601} %-5p [%c] - %m%n
+
+
+#Automation console apender
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%-5p [%c] - %m%n
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario-config.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario-config.xml
new file mode 100644
index 00000000..79f018ca
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario-config.xml
@@ -0,0 +1,201 @@
+
+
+
+
+
+
+ UsernameToken
+ Provides Authentication. Clients have Username Tokens
+ ut
+
+ rampart
+
+ UTOverTransport
+ basic
+
+
+ Non-repudiation
+ Provides Authentication and Integrity. Clients have X509 certificates
+ keystore
+
+ rampart
+
+ SigOnly
+ basic
+
+
+ Integrity
+ Provides Integrity. Clients do not have X509 certificates
+ keystore
+
+ rampart
+
+ SgnOnlyAnonymous
+ basic
+
+
+ Confidentiality
+ Provides Confidentiality. Clients do not have X509 certificates
+ keystore
+
+ rampart
+
+ EncrOnlyAnonymous
+ basic
+
+
+
+
+ Sign and encrypt - X509 Authentication
+ Provides Authentication, Integrity and Confidentiality. Clients have X509 certificates
+
+ keystore
+
+ rampart
+
+ SigEncr
+ advanced
+
+
+ Sign and Encrypt - Anonymous clients
+ Provides Integrity and Confidentiality.
+ keystore
+
+ rampart
+
+ SgnEncrAnonymous
+ advanced
+
+
+ Encrypt only - Username Token Authentication
+ Provides Authentication and Confidentiality. Clients have Username Tokens
+ ut-keystore
+
+ rampart
+
+ EncrOnlyUsername
+ advanced
+
+
+ Sign and Encrypt - Username Token Authentication
+ Provides Authentication, Integrity and Confidentiality. Clients have Username Tokens
+ ut-keystore
+
+ rampart
+
+ SgnEncrUsername
+ advanced
+
+
+ SecureConversation - Sign only - Service as STS - Bootstrap policy - Sign and Encrypt , X509
+ Authentication
+
+ Provides Authentication and Integrity. Multiple message exchange.Clients have X509 certificates.
+
+ keystore
+
+ rampart
+ rahas
+
+ SecConSignOnly
+ advanced
+
+
+ SecureConversation - Encrypt only - Service as STS - Bootstrap policy -
+ Sign and Encrypt , X509 Authentication
+
+ Provides Confidentiality. Multiple message exchange.Clients have X509 certificates.
+ keystore
+
+ rampart
+ rahas
+
+ SecConEncrOnly
+ advanced
+
+
+ SecureConversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and Encrypt , X509
+ Authentication
+
+ Provides Authentication, Integrity and Confidentiality. Multiple message exchange.Clients have X509
+ certificates.
+
+ keystore
+
+ rampart
+ rahas
+
+ SecConSgnEncr
+ advanced
+
+
+ SecureConversation - Sign Only - Service as STS - Bootstrap policy - Sign and Encrypt , Anonymous
+ clients
+
+ Provides Integrity. Multiple message exchange.
+ keystore
+
+ rampart
+ rahas
+
+ SecConSignOnlyAnonymous
+ advanced
+
+
+ SecureConversation - Encrypt Only - Service as STS - Bootstrap policy - Sign and Encrypt , Anonymous
+ clients
+
+ Provides Confidentiality. Multiple message exchange.
+ keystore
+
+ rampart
+ rahas
+
+ SecConEncrOnlyAnonymous
+ advanced
+
+
+ SecureConversation - Encrypt Only - Service as STS - Bootstrap policy - Sign and Encrypt , Username
+ Token Authentication
+
+ Provides Authentication and Confidentiality. Multiple message exchange. Clients have Username
+ Tokens.
+
+ ut-keystore
+
+ rampart
+ rahas
+
+ SecConEncrUsername
+ advanced
+
+
+ SecureConversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and Encrypt , Username
+ Token Authentication
+
+ Provides Authentication Integrity and Confidentiality. Multiple message exchange. Clients have
+ Username Tokens.
+
+ ut-keystore
+
+ rampart
+ rahas
+
+ SecConSgnEncrUsername
+ advanced
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario1-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario1-policy.xml
new file mode 100644
index 00000000..4a232f73
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario1-policy.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario10-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario10-policy.xml
new file mode 100644
index 00000000..2d076e06
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario10-policy.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario11-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario11-policy.xml
new file mode 100644
index 00000000..794d52ee
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario11-policy.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario12-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario12-policy.xml
new file mode 100644
index 00000000..6ac14ecd
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario12-policy.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario13-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario13-policy.xml
new file mode 100644
index 00000000..dbefeda8
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario13-policy.xml
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario14-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario14-policy.xml
new file mode 100644
index 00000000..bafd7263
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario14-policy.xml
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario15-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario15-policy.xml
new file mode 100644
index 00000000..47fb6711
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario15-policy.xml
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario16-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario16-policy.xml
new file mode 100644
index 00000000..dc383d79
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario16-policy.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ https://kirillgdev04/Security_Federation_SecurityTokenService_Indigo/Symmetric.svc/Scenario_1_IssuedTokenOverTransport_UsernameOverTransport
+
+
+
+
+ urn:oasis:names:tc:SAML:1.0:assertion
+
+
+ http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
+
+
+ 256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario17-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario17-policy.xml
new file mode 100644
index 00000000..637cf81d
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario17-policy.xml
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ http://foo.bar/we/don/t/process/this/yet
+
+
+
+
+ urn:oasis:names:tc:SAML:1.0:assertion
+
+
+ http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
+
+ 256
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario2-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario2-policy.xml
new file mode 100644
index 00000000..08a45d55
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario2-policy.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario3-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario3-policy.xml
new file mode 100644
index 00000000..0bfd14eb
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario3-policy.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario4-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario4-policy.xml
new file mode 100644
index 00000000..9ee47cc2
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario4-policy.xml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario5-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario5-policy.xml
new file mode 100644
index 00000000..9454c745
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario5-policy.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario6-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario6-policy.xml
new file mode 100644
index 00000000..7de14746
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario6-policy.xml
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario7-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario7-policy.xml
new file mode 100644
index 00000000..db95d371
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario7-policy.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario8-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario8-policy.xml
new file mode 100644
index 00000000..1fdfd940
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario8-policy.xml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario9-policy.xml b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario9-policy.xml
new file mode 100644
index 00000000..73fa833b
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/security/policies/scenario9-policy.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/testng-server-mgt.xml b/modules/integration/tests-iot-web-ui/src/test/resources/testng-server-mgt.xml
new file mode 100644
index 00000000..b57f1223
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/testng-server-mgt.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/integration/tests-iot-web-ui/src/test/resources/testng.xml b/modules/integration/tests-iot-web-ui/src/test/resources/testng.xml
new file mode 100644
index 00000000..3b2623fb
--- /dev/null
+++ b/modules/integration/tests-iot-web-ui/src/test/resources/testng.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/modules/samples/connectedcup/component/controller/src/main/java/org/coffeeking/controller/service/transport/ConnectedCupMQTTConnector.java b/modules/samples/connectedcup/component/controller/src/main/java/org/coffeeking/controller/service/transport/ConnectedCupMQTTConnector.java
index 00c6f569..142d6569 100644
--- a/modules/samples/connectedcup/component/controller/src/main/java/org/coffeeking/controller/service/transport/ConnectedCupMQTTConnector.java
+++ b/modules/samples/connectedcup/component/controller/src/main/java/org/coffeeking/controller/service/transport/ConnectedCupMQTTConnector.java
@@ -122,6 +122,7 @@ public class ConnectedCupMQTTConnector extends MQTTTransportHandler {
public void processIncomingMessage(MqttMessage mqttMessage, String... strings) throws TransportHandlerException {
String topic = strings[0];
+
String ownerAndId = topic.replace("wso2" + File.separator, "");
ownerAndId = ownerAndId.replace(File.separator + ConnectedCupConstants.DEVICE_TYPE + File.separator, ":");
ownerAndId = ownerAndId.replace(File.separator + "connected_publisher", "");
@@ -133,32 +134,14 @@ public class ConnectedCupMQTTConnector extends MQTTTransportHandler {
String[] messageData = mqttMessage.toString().split(":");
Float value = Float.valueOf(messageData[1]);
-// if (actualMessage.contains("PUBLISHER")) {
-// float temperature = Float.parseFloat(actualMessage.split(":")[2]);
-//
-// if (!ConnectedCupServiceUtils.publishToDAS(owner, deviceId, messageData[0], value)) {
-// log.error("MQTT Subscriber: Publishing data to DAS failed.");
-// }
-//
-// if (log.isDebugEnabled()) {
-// log.debug("MQTT Subscriber: Published data to DAS successfully.");
-// }
-//
-// } else if (actualMessage.contains("TEMPERATURE")) {
-// String temperatureValue = actualMessage.split(":")[1];
-// SensorDataManager.getInstance().setSensorRecord(deviceId, ConnectedCupConstants.SENSOR_TEMPERATURE,
-// temperatureValue,
-// Calendar.getInstance().getTimeInMillis());
-// }
-//
-//
-
switch(messageData[0]) {
- case "temperature": SensorDataManager.getInstance().setSensorRecord(deviceId, ConnectedCupConstants.SENSOR_TEMPERATURE,
+ case "temperature":
+ SensorDataManager.getInstance().setSensorRecord(deviceId, ConnectedCupConstants.SENSOR_TEMPERATURE,
String.valueOf(messageData[1]),
Calendar.getInstance().getTimeInMillis());
break;
- case "coffeelevel": SensorDataManager.getInstance().setSensorRecord(deviceId, ConnectedCupConstants.SENSOR_LEVEL,
+ case "coffeelevel":
+ SensorDataManager.getInstance().setSensorRecord(deviceId, ConnectedCupConstants.SENSOR_LEVEL,
String.valueOf(messageData[1]),
Calendar.getInstance().getTimeInMillis());
break;
diff --git a/pom.xml b/pom.xml
index 711438a1..513579af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,7 @@
modules/features
modules/p2-profile-gen
modules/distribution
-
+ modules/integration
@@ -282,10 +282,6 @@
org.wso2.carbon.commons
org.wso2.carbon.user.mgt.stub
-
- org.wso2.carbon.commons
- org.wso2.carbon.logging.view.stub
-
org.wso2.carbon.commons
org.wso2.carbon.ndatasource.stub
@@ -307,7 +303,7 @@
org.wso2.iot
org.wso2.carbon.iot.integration.ui.pages
- ${carbon.device.mgt.plugin.version}
+ ${carbon.iot.device.mgt.version}
test
@@ -1049,6 +1045,9 @@
1.1.0-SNAPSHOT
[0.8.0, 2.0.0)
+
+ 1.0.0-SNAPSHOT
+
2.0.4-SNAPSHOT
2.0.0-SNAPSHOT