Code formatting

application-manager-new
Menaka Madushanka 9 years ago
parent 7cf8fcf4ac
commit 67cb3df652

@ -0,0 +1,5 @@
package org.wso2.iot.integration.ui.pages;
public class UIConstants {
public static long webDriverTimeOut = 10;
}

@ -17,9 +17,6 @@
*/ */
package org.wso2.iot.integration.ui.pages; package org.wso2.iot.integration.ui.pages;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.Properties; import java.util.Properties;
@ -29,8 +26,7 @@ import java.util.Properties;
*/ */
public class UIElementMapper { public class UIElementMapper {
public static final Properties uiPropertiies = new Properties(); public static final Properties uiProperties = new Properties();
private static final Log log = LogFactory.getLog(UIElementMapper.class);
private static UIElementMapper instance; private static UIElementMapper instance;
private UIElementMapper(){ private UIElementMapper(){
@ -50,16 +46,16 @@ public class UIElementMapper {
InputStream inputStream = UIElementMapper.class.getResourceAsStream("/mapper.properties"); InputStream inputStream = UIElementMapper.class.getResourceAsStream("/mapper.properties");
if (inputStream.available() > 0) { if (inputStream.available() > 0) {
uiPropertiies.load(inputStream); uiProperties.load(inputStream);
inputStream.close(); inputStream.close();
return uiPropertiies; return uiProperties;
} }
return null; return null;
} }
public String getElement (String key) { public String getElement (String key) {
if (uiPropertiies != null) { if (!uiProperties.isEmpty()) {
return uiPropertiies.getProperty(key); return uiProperties.getProperty(key);
} }
return null; return null;
} }

@ -17,12 +17,9 @@
*/ */
package org.wso2.iot.integration.ui.pages.groups; package org.wso2.iot.integration.ui.pages.groups;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException; import java.io.IOException;
@ -34,14 +31,12 @@ import java.io.IOException;
*/ */
public class DeviceAddGroupPage { public class DeviceAddGroupPage {
private static final Log log = LogFactory.getLog(DeviceAddGroupPage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
public DeviceAddGroupPage(WebDriver driver) throws IOException { public DeviceAddGroupPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!driver.findElement(By.xpath if (!driver.findElement(By.xpath
(uiElementMapper.getElement("iot.device.group.addNewGroup.xpath"))).getText().contains("ADD NEW GROUP")) { (uiElementMapper.getElement("iot.device.group.addNewGroup.xpath"))).getText().contains("ADD NEW GROUP")) {
@ -54,9 +49,8 @@ public class DeviceAddGroupPage {
* @param name The group name that is need to be created. * @param name The group name that is need to be created.
* @param description the description for the group * @param description the description for the group
* @return The resultant page. * @return The resultant page.
* @throws Exception
*/ */
public DeviceGroupsPage addNewGroup (String name, String description) throws Exception{ public DeviceGroupsPage addNewGroup(String name, String description) throws IOException {
WebElement nameField = driver.findElement(By.id( WebElement nameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.name.id"))); uiElementMapper.getElement("iot.device.group.addGroupForm.name.id")));

@ -17,13 +17,12 @@
*/ */
package org.wso2.iot.integration.ui.pages.groups; package org.wso2.iot.integration.ui.pages.groups;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException; import java.io.IOException;
@ -31,14 +30,13 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
public class DeviceGroupsPage { public class DeviceGroupsPage {
private static final Log log = LogFactory.getLog(DeviceGroupsPage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
public DeviceGroupsPage(WebDriver driver) throws IOException { public DeviceGroupsPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.textToBePresentInElement(driver.findElement(By.xpath( if (!webDriverWait.until(ExpectedConditions.textToBePresentInElement(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.device.groups.view.header.xpath"))), "GROUPS"))) { uiElementMapper.getElement("iot.device.groups.view.header.xpath"))), "GROUPS"))) {
@ -46,7 +44,7 @@ public class DeviceGroupsPage {
} }
} }
public DeviceAddGroupPage addNewGroup() throws Exception { public DeviceAddGroupPage addNewGroup() throws IOException {
WebElement addNewGroupBtn = driver.findElement(By.xpath( WebElement addNewGroupBtn = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.device.viewGroup.empty.addGroup.xpath"))); uiElementMapper.getElement("iot.device.viewGroup.empty.addGroup.xpath")));
addNewGroupBtn.click(); addNewGroupBtn.click();
@ -67,5 +65,4 @@ public class DeviceGroupsPage {
} }
} }

@ -73,22 +73,22 @@ public class IOTAdminDashboard {
return new LoginPage(driver); return new LoginPage(driver);
} }
public DeviceAddGroupPage addGroup() throws Exception { public DeviceAddGroupPage addGroup() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.addButton.xpath"))).click(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.addButton.xpath"))).click();
return new DeviceAddGroupPage(driver); return new DeviceAddGroupPage(driver);
} }
public DeviceGroupsPage viewGroups() throws Exception { public DeviceGroupsPage viewGroups() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.viewButton.xpath"))).click(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.viewButton.xpath"))).click();
return new DeviceGroupsPage(driver); return new DeviceGroupsPage(driver);
} }
public AddUserPage addUser() throws Exception { public AddUserPage addUser() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.addButton.xpath"))).click(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.addButton.xpath"))).click();
return new AddUserPage(driver); return new AddUserPage(driver);
} }
public UserListingPage viewUser() throws Exception { public UserListingPage viewUser() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.viewButton.xpath"))).click(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.viewButton.xpath"))).click();
return new UserListingPage(driver); return new UserListingPage(driver);
} }

@ -17,13 +17,12 @@
*/ */
package org.wso2.iot.integration.ui.pages.home; package org.wso2.iot.integration.ui.pages.home;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By; import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.enroll.EnrollDevicePage; import org.wso2.iot.integration.ui.pages.enroll.EnrollDevicePage;
import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage; import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
@ -36,7 +35,6 @@ import java.io.IOException;
* For admin this is the dashboard. * For admin this is the dashboard.
*/ */
public class IOTHomePage { public class IOTHomePage {
private static final Log log = LogFactory.getLog(IOTHomePage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
@ -44,19 +42,19 @@ public class IOTHomePage {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page. // Check that we're on the right page.
WebDriverWait wait = new WebDriverWait(driver, 10); WebDriverWait wait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!wait.until(ExpectedConditions.titleIs("Device Management | IoT Server"))) { if (!wait.until(ExpectedConditions.titleIs("Device Management | IoT Server"))) {
throw new IllegalStateException("This is not the home page"); throw new IllegalStateException("This is not the home page");
} }
} }
public boolean checkUserName() throws Exception{ public boolean checkUserName() {
String name = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).getText(); String name = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).getText();
return name.contains(uiElementMapper.getElement("iot.user.login.username")); return name.contains(uiElementMapper.getElement("iot.user.login.username"));
} }
//To logout //To logout
public LoginPage logout() throws Exception { public LoginPage logout() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).click(); driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).click();
WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath"))); WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath")));
logout.click(); logout.click();
@ -64,7 +62,7 @@ public class IOTHomePage {
} }
//To enroll devices as user //To enroll devices as user
public EnrollDevicePage enrollNewDevice() throws Exception{ public EnrollDevicePage enrollNewDevice() throws IOException {
driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click();
driver.findElement(By.xpath("iot.home.page.uuf-menu.devicemgt.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.devicemgt.xpath")).click();
driver.findElement(By.xpath("iot.home.enrollDevice.xpath")).click(); driver.findElement(By.xpath("iot.home.enrollDevice.xpath")).click();
@ -72,12 +70,12 @@ public class IOTHomePage {
} }
//To add new Device groups as user //To add new Device groups as user
public void goToGroupMgt() throws Exception { public void goToGroupMgt() {
driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click();
driver.findElement(By.xpath("iot.home.page.uuf-menu.groupmgt.xpath")).click(); driver.findElement(By.xpath("iot.home.page.uuf-menu.groupmgt.xpath")).click();
} }
public DeviceAddGroupPage addNewGroup() throws Exception { public DeviceAddGroupPage addNewGroup() throws IOException {
driver.findElement(By.xpath("iot.device.viewGroup.empty.addGroup.xpath")).click(); driver.findElement(By.xpath("iot.device.viewGroup.empty.addGroup.xpath")).click();
return new DeviceAddGroupPage(driver); return new DeviceAddGroupPage(driver);
} }

@ -24,6 +24,7 @@ import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard; import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
import org.wso2.iot.integration.ui.pages.home.IOTHomePage; import org.wso2.iot.integration.ui.pages.home.IOTHomePage;
@ -43,7 +44,7 @@ public class LoginPage {
public LoginPage(WebDriver driver) throws IOException { public LoginPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.titleContains("Login | IoT Server"))) { if (!webDriverWait.until(ExpectedConditions.titleContains("Login | IoT Server"))) {
throw new IllegalStateException("This is not the Login page"); throw new IllegalStateException("This is not the Login page");

@ -1,28 +1,28 @@
package org.wso2.iot.integration.ui.pages.uesr; 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.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
/** /**
* This class represents the add user page of the IOT server. * This class represents the add user page of the IOT server.
*/ */
public class AddUserPage { public class AddUserPage {
private static final Log log = LogFactory.getLog(AddUserPage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
public AddUserPage(WebDriver driver) throws Exception { public AddUserPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))) { if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))) {
throw new IllegalStateException("This is not the Add User page"); throw new IllegalStateException("This is not the Add User page");
} }
@ -30,14 +30,15 @@ public class AddUserPage {
/** /**
* Method to create a new user. * Method to create a new user.
*
* @param userName The username for the user. * @param userName The username for the user.
* @param firstName The user's first name. * @param firstName The user's first name.
* @param lastName The user's last name. * @param lastName The user's last name.
* @param email Email address of the user. * @param email Email address of the user.
* @return The user added confirmation page. * @return The user added confirmation page.
* @throws Exception
*/ */
public UserAddedConfirmationPage createNewUser(String userName, String firstName, String lastName, String email) throws Exception { public UserAddedConfirmationPage createNewUser(String userName, String firstName, String lastName, String email)
throws IOException {
WebElement userNameField = driver.findElement(By.id( WebElement userNameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.admin.addUser.username.id"))); uiElementMapper.getElement("iot.admin.addUser.username.id")));
@ -53,7 +54,7 @@ public class AddUserPage {
lastNameField.sendKeys(lastName); lastNameField.sendKeys(lastName);
emailField.sendKeys(email); emailField.sendKeys(email);
WebDriverWait wait = new WebDriverWait(driver, 10); WebDriverWait wait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath( wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath")))); uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath"))));

@ -6,6 +6,7 @@ import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
/** /**
@ -20,7 +21,7 @@ public class EditUserPage {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){ if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
throw new IllegalStateException("This is not the Edit User page"); throw new IllegalStateException("This is not the Edit User page");
} }

@ -1,12 +1,11 @@
package org.wso2.iot.integration.ui.pages.uesr; 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.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.login.LoginPage; import org.wso2.iot.integration.ui.pages.login.LoginPage;
@ -16,7 +15,6 @@ import java.io.IOException;
* This class represents the new user registration page. * This class represents the new user registration page.
*/ */
public class NewUserRegisterPage { public class NewUserRegisterPage {
private static final Log log = LogFactory.getLog(NewUserRegisterPage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
@ -24,7 +22,7 @@ public class NewUserRegisterPage {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page. // Check that we're on the right page.
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.titleContains("Register | IoT Server"))) { if (!webDriverWait.until(ExpectedConditions.titleContains("Register | IoT Server"))) {
throw new IllegalStateException("This is not the Register page"); throw new IllegalStateException("This is not the Register page");
} }
@ -32,6 +30,7 @@ public class NewUserRegisterPage {
/** /**
* The method to register a new user. * The method to register a new user.
*
* @param firstName First name of the user. * @param firstName First name of the user.
* @param lastName Last name of the user. * @param lastName Last name of the user.
* @param email Email address of the user. * @param email Email address of the user.

@ -6,6 +6,8 @@ import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
/** /**
* This class represents the confirmation page for adding a new user. * This class represents the confirmation page for adding a new user.
*/ */
@ -14,7 +16,7 @@ public class UserAddedConfirmationPage {
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
public UserAddedConfirmationPage(WebDriver driver) throws Exception { public UserAddedConfirmationPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
@ -23,5 +25,4 @@ public class UserAddedConfirmationPage {
} }
} }

@ -17,36 +17,30 @@
*/ */
package org.wso2.iot.integration.ui.pages.uesr; 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.By;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement; import org.openqa.selenium.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
/** /**
* Class to represent the user listing page. * Class to represent the user listing page.
*/ */
public class UserListingPage { public class UserListingPage {
private static final Log log = LogFactory.getLog(UserListingPage.class);
private WebDriver driver; private WebDriver driver;
private UIElementMapper uiElementMapper; private UIElementMapper uiElementMapper;
public UserListingPage(WebDriver driver) throws Exception { public UserListingPage(WebDriver driver) throws IOException {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
if (!driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.listing.page.subtitle.xpath")))
.getText().contains("USERS")){
throw new IllegalStateException("This is not the User Listing page");
}
} }
/** /**
* @return After deleting a user, returns back to the user listing page. * @return After deleting a user, returns back to the user listing page.
* @throws Exception
*/ */
public UserListingPage deleteUser() throws Exception { //Don't use generic exceptions.
public UserListingPage deleteUser() throws IOException, InterruptedException {
WebElement deleteBtn = driver.findElement(By.xpath( WebElement deleteBtn = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.deleteUser.btn.xpath"))); uiElementMapper.getElement("iot.admin.deleteUser.btn.xpath")));
if (deleteBtn != null) { if (deleteBtn != null) {
@ -60,6 +54,4 @@ public class UserListingPage {
return new UserListingPage(driver); return new UserListingPage(driver);
} }
} }

@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIConstants;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
/** /**
@ -19,7 +20,7 @@ public class ViewUserPage {
this.driver = driver; this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance(); this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10); WebDriverWait webDriverWait = new WebDriverWait(driver, UIConstants.webDriverTimeOut);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){ if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
throw new IllegalStateException("This is not the User view page"); throw new IllegalStateException("This is not the User view page");
} }

@ -19,27 +19,25 @@ package org.wso2.carbon.iot.integration.web.ui.test;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.wso2.carbon.automation.engine.context.AutomationContext; import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.login.LoginPage; 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 system as the Admin. * This class is used to login to the system as the Admin.
*/ */
public class LoginUtils { public class LoginUtils {
private static UIElementMapper uiElementMapper;
/** /**
*
* This method is used to login as admin. * This method is used to login as admin.
* *
* @param driver The selenium web driver * @param driver The selenium web driver
* @param automationContext Test Automation context * @param automationContext Test Automation context
* @param webAppURL The server url * @param webAppURL The server url
* @throws Exception
*/ */
public static void login(WebDriver driver, AutomationContext automationContext, public static void login(WebDriver driver, AutomationContext automationContext,
String webAppURL) throws Exception { String webAppURL) throws IOException, XPathExpressionException {
uiElementMapper = UIElementMapper.getInstance();
driver.get(webAppURL + Constants.IOT_LOGIN_PATH); driver.get(webAppURL + Constants.IOT_LOGIN_PATH);
LoginPage test = new LoginPage(driver); LoginPage test = new LoginPage(driver);
test.loginAsAdmin(automationContext.getSuperTenant().getTenantAdmin().getUserName(), test.loginAsAdmin(automationContext.getSuperTenant().getTenantAdmin().getUserName(),

@ -60,16 +60,14 @@ public class LoginFailTest extends IOTIntegrationUIBaseTestCase {
loginButton.click(); loginButton.click();
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.username.error"))) Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.username.error"))).
.getText(), "Please enter a username"); getText(), "Please enter a username");
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error"))) Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error"))).
.getText(), "Please provide a password"); getText(), "Please provide a password");
} }
@Test(description = "Test for incorrect username") @Test(description = "Test for incorrect username")
public void incorrectUserNameTest() throws Exception { public void incorrectUserNameTest() throws Exception {
clearForm(); clearForm();
userNameField.sendKeys("admin1"); userNameField.sendKeys("admin1");
@ -77,9 +75,8 @@ public class LoginFailTest extends IOTIntegrationUIBaseTestCase {
loginButton.click(); loginButton.click();
Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath"))) Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath"))).
.getText(), "Incorrect username or password.!"); getText(), "Incorrect username or password.!");
} }
@Test(description = "Test for incorrect password") @Test(description = "Test for incorrect password")
@ -91,15 +88,13 @@ public class LoginFailTest extends IOTIntegrationUIBaseTestCase {
loginButton.click(); loginButton.click();
Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath"))) Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath"))).
.getText(), "Incorrect username or password.!"); getText(), "Incorrect username or password.!");
} }
@Test(description = "Test for short password") @Test(description = "Test for short password")
public void shortPasswordTest() throws Exception { public void shortPasswordTest() throws Exception {
clearForm(); clearForm();
userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getUserName()); userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getUserName());
@ -107,9 +102,8 @@ public class LoginFailTest extends IOTIntegrationUIBaseTestCase {
loginButton.click(); loginButton.click();
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error"))) Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error"))).
.getText(), "Your password must be at least 3 characters long"); getText(), "Your password must be at least 3 characters long");
} }
public void clearForm() throws Exception { public void clearForm() throws Exception {

@ -29,7 +29,6 @@ import org.wso2.iot.integration.ui.pages.login.LoginPage;
/** /**
* Test Login as Admin * Test Login as Admin
*
*/ */
public class LoginTest extends IOTIntegrationUIBaseTestCase { public class LoginTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver; private WebDriver driver;
@ -48,11 +47,11 @@ public class LoginTest extends IOTIntegrationUIBaseTestCase {
automationContext.getSuperTenant().getTenantAdmin().getUserName(), automationContext.getSuperTenant().getTenantAdmin().getUserName(),
automationContext.getSuperTenant().getTenantAdmin().getPassword()); automationContext.getSuperTenant().getTenantAdmin().getPassword());
dashboard.logout(); dashboard.logout();
driver.close();
} }
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void tearDown() throws Exception { public void tearDown() throws Exception {
driver.close();
driver.quit(); driver.quit();
} }
} }

@ -24,13 +24,16 @@ import org.testng.Assert;
import org.testng.annotations.AfterClass; import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager; import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants; import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils; import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase; import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import javax.xml.stream.XMLStreamException;
import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
/** /**
* Test cases for * Test cases for
* 1. Empty form submission * 1. Empty form submission
@ -52,7 +55,7 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
WebElement addUserButton; WebElement addUserButton;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setup() throws Exception { public void setup() throws XPathExpressionException, XMLStreamException, IOException {
super.init(); super.init();
driver = BrowserManager.getWebDriver(); driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL()); LoginUtils.login(driver, automationContext, getWebAppURL());
@ -82,7 +85,6 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
Assert.assertEquals(driver.findElement(By.xpath( Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(), uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Username is a required field. It cannot be empty."); "Username is a required field. It cannot be empty.");
} }
@Test(description = "Test for short user name") @Test(description = "Test for short user name")
@ -99,7 +101,6 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
Assert.assertEquals(driver.findElement(By.xpath( Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(), uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Username must be between 3 and 30 characters long."); "Username must be between 3 and 30 characters long.");
} }
@Test(description = "Test for empty first name") @Test(description = "Test for empty first name")
@ -116,7 +117,6 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
Assert.assertEquals(driver.findElement(By.xpath( Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(), uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Firstname is a required field. It cannot be empty."); "Firstname is a required field. It cannot be empty.");
} }
@Test(description = "Test for empty last name") @Test(description = "Test for empty last name")
@ -132,7 +132,6 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
Assert.assertEquals(driver.findElement(By.xpath( Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(), uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Lastname is a required field. It cannot be empty."); "Lastname is a required field. It cannot be empty.");
} }
@Test(description = "Test for empty email name") @Test(description = "Test for empty email name")
@ -149,7 +148,6 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
Assert.assertEquals(driver.findElement(By.xpath( Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(), uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Email is a required field. It cannot be empty."); "Email is a required field. It cannot be empty.");
} }
@Test(description = "Test for incorrect email") @Test(description = "Test for incorrect email")
@ -168,7 +166,8 @@ public class AddUserFailTest extends IOTIntegrationUIBaseTestCase {
"Provided email is invalid. Please check."); "Provided email is invalid. Please check.");
} }
public void clearForm() {
private void clearForm() {
firstNameField.clear(); firstNameField.clear();
lastNameField.clear(); lastNameField.clear();
emailField.clear(); emailField.clear();

@ -18,6 +18,7 @@
package org.wso2.carbon.iot.integration.web.ui.test.user; package org.wso2.carbon.iot.integration.web.ui.test.user;
import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass; import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import org.testng.annotations.Test;
@ -29,23 +30,26 @@ 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.login.LoginPage;
import org.wso2.iot.integration.ui.pages.uesr.NewUserRegisterPage; 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 * Test for registering a new user and login
*
*/ */
public class RegisterTest extends IOTIntegrationUIBaseTestCase { public class RegisterTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver; private WebDriver driver;
UIElementMapper uiElementMapper; UIElementMapper uiElementMapper;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setup() throws Exception { public void setup() throws XPathExpressionException, XMLStreamException, IOException {
super.init(); super.init();
driver = BrowserManager.getWebDriver(); driver = BrowserManager.getWebDriver();
driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH); driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
} }
@Test(description = "Verify new User registration") @Test(description = "Verify new User registration")
public void testUserRegister() throws Exception { public void userRegisterTest() throws IOException {
LoginPage test = new LoginPage(driver); LoginPage test = new LoginPage(driver);
uiElementMapper = UIElementMapper.getInstance(); uiElementMapper = UIElementMapper.getInstance();
NewUserRegisterPage registerTest = test.registerNewUser(); NewUserRegisterPage registerTest = test.registerNewUser();
@ -60,9 +64,7 @@ public class RegisterTest extends IOTIntegrationUIBaseTestCase {
IOTHomePage homePage = loginPage.loginAsUser(uiElementMapper.getElement("iot.user.add.username"), IOTHomePage homePage = loginPage.loginAsUser(uiElementMapper.getElement("iot.user.add.username"),
uiElementMapper.getElement("iot.user.add.password")); uiElementMapper.getElement("iot.user.add.password"));
if (!homePage.checkUserName()){ Assert.assertTrue(homePage.checkUserName());
throw new Exception("Incorrect user logged in");
}
homePage.logout(); homePage.logout();

@ -31,6 +31,10 @@ import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase; import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper; import org.wso2.iot.integration.ui.pages.UIElementMapper;
import javax.xml.stream.XMLStreamException;
import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
/** /**
* These test cases check for following: * These test cases check for following:
* - Submitting an empty form * - Submitting an empty form
@ -38,7 +42,7 @@ import org.wso2.iot.integration.ui.pages.UIElementMapper;
* - Non matching passwords * - Non matching passwords
* - Password, username length * - Password, username length
*/ */
public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{ public class RegistrationFormValidationTests extends IOTIntegrationUIBaseTestCase {
private WebDriver driver; private WebDriver driver;
UIElementMapper uiElementMapper; UIElementMapper uiElementMapper;
@ -51,7 +55,7 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
WebElement registerButton; WebElement registerButton;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setup() throws Exception { public void setup() throws XPathExpressionException, XMLStreamException, IOException {
super.init(); super.init();
driver = BrowserManager.getWebDriver(); driver = BrowserManager.getWebDriver();
driver.get(getWebAppURL() + Constants.IOT_USER_REGISTER_URL); driver.get(getWebAppURL() + Constants.IOT_USER_REGISTER_URL);
@ -78,7 +82,7 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
} }
@Test(description = "Test for submitting an empty registration form") @Test(description = "Test for submitting an empty registration form")
public void emptyFormTest() throws Exception { public void emptyFormTest() {
clearForm(); clearForm();
firstNameField.sendKeys(""); firstNameField.sendKeys("");
lastNameField.sendKeys(""); lastNameField.sendKeys("");
@ -110,7 +114,7 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
} }
@Test(description = "Test for non matching passwords") @Test(description = "Test for non matching passwords")
public void nonMatchingPasswordTest() throws Exception { public void nonMatchingPasswordTest() {
clearForm(); clearForm();
firstNameField.sendKeys("User"); firstNameField.sendKeys("User");
@ -127,7 +131,7 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
} }
@Test(description = "Test for email") @Test(description = "Test for email")
public void incorrectEmail() throws Exception { public void incorrectEmailTest() {
clearForm(); clearForm();
firstNameField.sendKeys("User"); firstNameField.sendKeys("User");
@ -138,11 +142,10 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
Assert.assertEquals(driver.findElement(By.id( Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.email.error"))).getText(), uiElementMapper.getElement("iot.user.register.email.error"))).getText(),
"Email is not valid. Please enter a correct email address."); "Email is not valid. Please enter a correct email address.");
} }
@Test(description = "Test for password length") @Test(description = "Test for password length")
public void passwordLengthTest() throws Exception { public void passwordLengthTest() {
clearForm(); clearForm();
firstNameField.sendKeys("User"); firstNameField.sendKeys("User");
@ -156,11 +159,10 @@ public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
Assert.assertEquals(driver.findElement(By.id( Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.password.error"))).getText(), uiElementMapper.getElement("iot.user.register.password.error"))).getText(),
"Password should be between 5 and 30 characters."); "Password should be between 5 and 30 characters.");
} }
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void tearDown() throws Exception { public void tearDown() {
driver.quit(); driver.quit();
} }

@ -29,6 +29,10 @@ 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.AddUserPage;
import org.wso2.iot.integration.ui.pages.uesr.UserListingPage; 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. * Test for check following admin capabilities.
* - Create a new User * - Create a new User
@ -39,28 +43,27 @@ public class TestAdminFunctions extends IOTIntegrationUIBaseTestCase {
private WebDriver driver; private WebDriver driver;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setup() throws Exception { public void setup() throws IOException, XPathExpressionException, XMLStreamException {
super.init(); super.init();
driver = BrowserManager.getWebDriver(); driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL()); LoginUtils.login(driver, automationContext, getWebAppURL());
} }
@Test(description = "Test for creating a new user") @Test(description = "Test for creating a new user")
public void createUserTest() throws Exception { public void createUserTest() throws IOException {
IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver); IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
AddUserPage addUserPage = adminDashboard.addUser(); AddUserPage addUserPage = adminDashboard.addUser();
addUserPage.createNewUser("user1", "User", "User", "user@wso2.com"); addUserPage.createNewUser("user1", "User", "User", "user@wso2.com");
} }
@Test(description = "Test for deleting a created user", dependsOnMethods = {"createUserTest"}) @Test(description = "Test for deleting a created user", dependsOnMethods = {"createUserTest"})
public void deleteUserTest() throws Exception { public void deleteUserTest() throws XPathExpressionException, IOException, InterruptedException {
driver.get(getWebAppURL() + Constants.IOT_HOME_URL); driver.get(getWebAppURL() + Constants.IOT_HOME_URL);
IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver); IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
UserListingPage userListingPage = adminDashboard.viewUser(); UserListingPage userListingPage = adminDashboard.viewUser();
userListingPage.deleteUser(); userListingPage.deleteUser();
} }
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void tearDown() throws Exception { public void tearDown() throws Exception {
driver.quit(); driver.quit();

@ -307,7 +307,7 @@
<dependency> <dependency>
<groupId>org.wso2.iot</groupId> <groupId>org.wso2.iot</groupId>
<artifactId>org.wso2.carbon.iot.integration.ui.pages</artifactId> <artifactId>org.wso2.carbon.iot.integration.ui.pages</artifactId>
<version>${carbon.device.mgt.plugin.version}</version> <version>${carbon.iot.device.mgt.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
@ -1049,6 +1049,9 @@
<carbon.device.mgt.version>1.1.0-SNAPSHOT</carbon.device.mgt.version> <carbon.device.mgt.version>1.1.0-SNAPSHOT</carbon.device.mgt.version>
<carbon.device.mgt.version.range>[0.8.0, 2.0.0)</carbon.device.mgt.version.range> <carbon.device.mgt.version.range>[0.8.0, 2.0.0)</carbon.device.mgt.version.range>
<!-- IOT Device Management -->
<carbon.iot.device.mgt.version>1.0.0-SNAPSHOT</carbon.iot.device.mgt.version>
<!-- Carbon Device Management Plugins--> <!-- Carbon Device Management Plugins-->
<carbon.device.mgt.plugin.version>2.0.4-SNAPSHOT</carbon.device.mgt.plugin.version> <carbon.device.mgt.plugin.version>2.0.4-SNAPSHOT</carbon.device.mgt.plugin.version>
<mdm.version>2.0.0-SNAPSHOT</mdm.version> <mdm.version>2.0.0-SNAPSHOT</mdm.version>

Loading…
Cancel
Save