application-manager-new
lakshani 8 years ago
commit 9f1637bc9f

@ -471,7 +471,7 @@ org.owasp.csrfguard.unprotected.storeAcs=%servletContext%/store/acs
org.owasp.csrfguard.unprotected.apiStoreAcs=%servletContext%/api-store/acs
org.owasp.csrfguard.unprotected.apiStoreApis=%servletContext%/api-store/apis
org.owasp.csrfguard.unprotected.portalAcs=%servletContext%/portal/acs
org.owasp.csrfguard.unprotected.portalApis=%servletContext%/portal/apis
org.owasp.csrfguard.unprotected.portalApis=%servletContext%/portal/apis/*
org.owasp.csrfguard.unprotected.socialAcs=%servletContext%/social/acs
org.owasp.csrfguard.unprotected.socialApis=%servletContext%/social/apis
org.owasp.csrfguard.unprotected.appStoreDevices=%servletContext%/store/apps/devices/*

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
@ -27,14 +27,13 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>wso2iot-integration</artifactId>
<name>&gt;WSO2 IoT - Integration Tests</name>
<name>WSO2 IoT - Integration Tests</name>
<packaging>pom</packaging>
<modules>
<module>tests-artifacts</module>
<module>tests-common</module>
<!--<module>tests-integration</module>-->
<!--<module>tests-ui-integration</module>-->
<module>tests-integration</module>
<module>tests-iot-web-ui</module>
</modules>

@ -22,7 +22,7 @@
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>tests-common</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>3.1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

@ -22,7 +22,7 @@
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>tests-common</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>3.1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
@ -36,6 +36,6 @@
<name>Apache License Version 2.0</name>
<url>http://www.apache.org/licenses/LICENSE-2.0</url>
</license>
</licenses>
</licenses>
</project>

@ -1,116 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>tests-common</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.wso2.carbon.iot.core.integration.ui.pages</artifactId>
<packaging>jar</packaging>
<name>WSO2 IoT - Integration Test Common UI Pages</name>
<dependencies>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.admin.client</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.user.mgt.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.logging.view.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.ndatasource.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.server.admin.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.throttle.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.tenant.mgt.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.application.mgt.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.security.mgt.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.identity.user.profile.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.identity.user.profile.stub</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.extensions</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.test.utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.engine</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -1,71 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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 EMMIntegrationUiBaseTestCase {
private static final Log log = LogFactory.getLog(EMMIntegrationUiBaseTestCase.class);
protected AutomationContext automationContext;
protected void init() throws IOException, XMLStreamException, XPathExpressionException {
automationContext = new AutomationContext("EMM", "emm001", 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());
String sessionCookie = authenticationAdminClient.login(automationContext.getSuperTenant().
getTenantAdmin().getUserName(), automationContext.getSuperTenant().
getTenantAdmin().getPassword(),
automationContext.getDefaultInstance().getHosts().get("default"));
return sessionCookie;
}
protected String getServiceURL() throws XPathExpressionException {
String serviceURL = automationContext.getContextUrls().getServiceUrl();
return automationContext.getContextUrls().getServiceUrl();
}
protected String getLoginURL() throws XPathExpressionException {
return HomePageGenerator.getProductHomeURL(automationContext);
}
}

@ -1,57 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.Notification;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class NotificationView {
private static final Log log = LogFactory.getLog(NotificationView.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public NotificationView(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("notification-listing"))) {
throw new IllegalStateException("This is not the notification-listing page");
}
}
public void viewNotification() {
WebElement unReadNotificationTab = driver.findElement(By.id(uiElementMapper.
getElement("emm.notification.unread.identifier")));
WebElement notificationTab = driver.findElement(By.id(uiElementMapper.
getElement("emm.notification.all.identifier")));
if (!unReadNotificationTab.isDisplayed()) {
throw new IllegalStateException("Notification View must be having two tabs");
}
if (!notificationTab.isDisplayed()) {
throw new IllegalStateException("Notification View must be having two tabs");
}
}
}

@ -1,65 +0,0 @@
/*
* 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.
*/
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.InputStream;
import java.util.Properties;
/**
* Read mapper.properties file and load it's uiElements into Properties object.
*/
public class UIElementMapper {
public static final Properties uiProperties = new Properties();
private static final Log log = LogFactory.getLog(UIElementMapper.class);
private static UIElementMapper instance;
private UIElementMapper() {
}
public static synchronized UIElementMapper getInstance() throws IOException {
if (instance == null) {
setStream();
instance = new UIElementMapper();
}
return instance;
}
public static Properties setStream() throws IOException {
InputStream inputStream = UIElementMapper.class.getResourceAsStream("/mapper.properties");
if (inputStream.available() > 0) {
uiProperties.load(inputStream);
inputStream.close();
return uiProperties;
}
return null;
}
public String getElement(String key) {
if (uiProperties != null) {
return uiProperties.getProperty(key);
}
return null;
}
}

@ -1,64 +0,0 @@
/*
* 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.
*/
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.WebDriver;
import org.openqa.selenium.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
import org.wso2.iot.integration.ui.pages.login.ManagementConsoleLoginPage;
/**
* Home page class holds the information of product page you got once login
* It also contain sign-out method as well.
*/
public class HomePage {
private static final Log log = LogFactory.getLog(HomePage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public HomePage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!driver.findElement(By.id(uiElementMapper.getElement("home.dashboard.middle.text"))).
getText().contains("Home")) {
throw new IllegalStateException("This is not the home page");
}
}
public ManagementConsoleLoginPage logout() throws IOException {
driver.findElement(By.xpath(uiElementMapper.getElement("home.greg.sign.out.xpath"))).click();
return new ManagementConsoleLoginPage(driver);
}
public void checkNotificationCount(String value) {
WebElement notificationBubble = driver.findElement(By.id(uiElementMapper.
getElement("emm.notification.bubble.identifier")));
if (!notificationBubble.getText().contains(value)) {
throw new IllegalStateException("Invalid amount of notification in home page");
}
}
}

@ -1,49 +0,0 @@
/*
* 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.
*/
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.WebDriver;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class MDMHomePage {
private static final Log log = LogFactory.getLog(MDMHomePage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public MDMHomePage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!driver.findElement(By.xpath(uiElementMapper.getElement("emm.dashboard.device.div.xpath"))).getText()
.contains("DEVICES")) {
throw new IllegalStateException("This is not the home page");
}
}
// public MDMLoginPage logout() throws IOException {
// driver.findElement(By.xpath("/html/body/div[3]/header/div/div[2]/div/div/div[3]/a")).click();
// return new MDMLoginPage(driver);
// }
}

@ -1,63 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.login;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.home.MDMHomePage;
import java.io.IOException;
public class MDMLoginPage {
private static final Log log = LogFactory.getLog(MDMLoginPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public MDMLoginPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("mdm/login"))) {
// Alternatively, we could navigate to the login page, perhaps logging out first
throw new IllegalStateException("This is not the login page");
}
}
/**
* Provide facility to log into the products using user credentials
*
* @param userName login user name
* @param password login password
* @return reference to Home page
* @throws java.io.IOException if mapper.properties file not found
*/
public MDMHomePage loginAs(String userName, String password) throws IOException {
WebElement userNameField = driver.findElement(By.name(uiElementMapper.getElement("emm.login.username")));
WebElement passwordField = driver.findElement(By.name(uiElementMapper.getElement("emm.login.password")));
userNameField.sendKeys(userName);
passwordField.sendKeys(password);
driver.findElement(By.xpath(uiElementMapper.getElement("emm.login.button.xpath"))).click();
return new MDMHomePage(driver);
}
}

@ -1,68 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.login;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
import org.wso2.iot.integration.ui.pages.home.HomePage;
/**
* Login page class - contains methods to login to wso2 products.
*/
public class ManagementConsoleLoginPage {
private static final Log log = LogFactory.getLog(ManagementConsoleLoginPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public ManagementConsoleLoginPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("login.jsp"))) {
// Alternatively, we could navigate to the login page, perhaps logging out first
throw new IllegalStateException("This is not the login page");
}
}
/**
* Provide facility to log into the products using user credentials
*
* @param userName login user name
* @param password login password
* @return reference to Home page
* @throws java.io.IOException if mapper.properties file not found
*/
public HomePage loginAs(String userName, String password) throws IOException {
log.info("Login as " + userName);
WebElement userNameField = driver.findElement(By.name(uiElementMapper.getElement("login.username")));
WebElement passwordField = driver.findElement(By.name(uiElementMapper.getElement("login.password")));
userNameField.sendKeys(userName);
passwordField.sendKeys(password);
driver.findElement(By.className(uiElementMapper.getElement("login.sign.in.button"))).click();
return new HomePage(driver);
}
}

@ -1,76 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.platformConfiguration;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class PlatformConfiguration {
private static final Log log = LogFactory.getLog(PlatformConfiguration.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public PlatformConfiguration(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("platform-configuration"))) {
throw new IllegalStateException("This is not the platform-configuration page");
}
}
public void changeGeneralConfig(String value) {
WebElement generalConfigButton = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.general.tab.identifier"))));
WebElement inputGeneralConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.general.input.monitoringFr.identifier"))));
WebElement buttonSaveConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.general.button.save.identifier"))));
generalConfigButton.click();
inputGeneralConfig.sendKeys(value);
buttonSaveConfig.click();
}
public void changeAndroidConfig(String value) {
WebElement androidConfigButton = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.android.tab.identifier"))));
WebElement inputAndroidConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.android.input.identifier"))));
WebElement buttonSaveConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.android.button.save.identifier"))));
androidConfigButton.click();
inputAndroidConfig.sendKeys(value);
buttonSaveConfig.click();
}
public void changeWindowsConfig(String value) {
WebElement windowsConfigButton = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.widows.tab.identifier"))));
WebElement inputWindowsConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.windows.input.identifier"))));
WebElement buttonSaveConfig = driver.findElement(By.xpath((uiElementMapper.getElement("emm.configuration.windows.button.save.identifier"))));
windowsConfigButton.click();
inputWindowsConfig.sendKeys(value);
buttonSaveConfig.click();
}
}

@ -1,55 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.role;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class AddRolePage {
private static final Log log = LogFactory.getLog(RoleListPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public AddRolePage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("roles/add-role"))) {
throw new IllegalStateException("This is not the add role page");
}
}
public void addRole(String role) {
WebElement roleName = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.add.rolename.input")));
roleName.sendKeys(role);
WebElement addRoleButton = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.add.role.button")));
addRoleButton.click();
String resultText = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.add.role.created.msg.div")
)).getText();
if (!resultText.contains("ROLE WAS ADDED SUCCESSFULLY")) {
throw new IllegalStateException("Role was not added");
}
}
}

@ -1,55 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.role;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class EditRolePage {
private static final Log log = LogFactory.getLog(RoleListPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public EditRolePage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains("roles/edit-role"))) {
throw new IllegalStateException("This is not the edit role page");
}
}
public void editRole(String role) {
WebElement roleName = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.update.rolename.input")));
roleName.sendKeys(role);
WebElement addRoleButton = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.update.role.button")));
addRoleButton.click();
String resultText = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.update.role.created.msg.div")
)).getText();
if (!resultText.contains("ROLE WAS UPDATED SUCCESSFULLY")) {
throw new IllegalStateException("Role was not edited");
}
}
}

@ -1,52 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.role;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class RoleListPage {
private static final Log log = LogFactory.getLog(RoleListPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public RoleListPage(WebDriver driver, String url) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (!(driver.getCurrentUrl().contains(url))) {
throw new IllegalStateException("This is not the roles list page");
}
}
public void addRole(String role) throws Exception {
WebElement addButton = driver.findElement(By.id(uiElementMapper.getElement("emm.roles.add.button")));
addButton.click();
AddRolePage rolePage = new AddRolePage(driver);
rolePage.addRole(role);
}
}

@ -1,55 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.user;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class AddUserPage {
private WebDriver driver;
private UIElementMapper uiElementMapper;
public AddUserPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (driver.findElement(By.id(uiElementMapper.getElement("emm.user.add.button"))).getText() == null) {
throw new IllegalStateException("This is not the add user page");
}
}
public UserAddedPage addUser(String username, String firstName, String lastName,
String email) throws IOException {
WebElement usernameField = driver.findElement(By.id(uiElementMapper.getElement("emm.add.user.username")));
WebElement firstNameField = driver.findElement(By.id(uiElementMapper.getElement("emm.add.user.firstname")));
WebElement lastNameField = driver.findElement(By.id(uiElementMapper.getElement("emm.add.user.lastname")));
WebElement emailField = driver.findElement(By.id(uiElementMapper.getElement("emm.add.user.email")));
usernameField.sendKeys(username);
firstNameField.sendKeys(firstName);
lastNameField.sendKeys(lastName);
emailField.sendKeys(email);
driver.findElement(By.id(uiElementMapper.getElement("emm.user.add.button"))).click();
return new UserAddedPage(driver);
}
}

@ -1,39 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.user;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class UserAddedPage {
private WebDriver driver;
private UIElementMapper uiElementMapper;
public UserAddedPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
if (driver.findElement(By.tagName("canvas")) == null) {
throw new IllegalStateException("This is not the user added success page");
}
}
}

@ -1,51 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.user;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class UserEditPage {
private static final Log log = LogFactory.getLog(UserListPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public UserEditPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
//Check that we're on the right page.
if (driver.findElement(By.id(uiElementMapper.getElement("emm.user.add.button"))).getText() == null) {
throw new IllegalStateException("This is not the add edit page");
}
}
public void editUser() throws IOException {
WebElement deleteButton = driver.findElement(By.xpath(uiElementMapper.getElement("emm.user.delete.button")));
deleteButton.click();
WebElement deleteConfirmButton = driver.findElement(By.id(uiElementMapper.getElement("emm.user.delete.button" +
".confirm")));
deleteConfirmButton.click();
}
}

@ -1,51 +0,0 @@
/*
* 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.
*/
package org.wso2.iot.integration.ui.pages.user;
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.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
public class UserListPage {
private static final Log log = LogFactory.getLog(UserListPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public UserListPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
if (!(driver.getCurrentUrl().contains("mdm/users"))) {
// Alternatively, we could navigate to the login page, perhaps logging out first
throw new IllegalStateException("This is not the list users page");
}
}
public void deleteUser() throws IOException {
WebElement deleteButton = driver.findElement(By.xpath(uiElementMapper.getElement("emm.user.delete.button")));
deleteButton.click();
WebElement deleteConfirmButton = driver.findElement(By.id(uiElementMapper.getElement("emm.user.delete.button" +
".confirm")));
deleteConfirmButton.click();
}
}

@ -1,512 +0,0 @@
#
# 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.
#
emm.login.username=username
emm.login.password=password
emm.dashboard.device.div.xpath=/html/body/div[3]/div[7]/div[1]/div/div/div[1]
emm.login.button.xpath=/html/body/div[3]/div[3]/div/button
emm.user.add.button = add-user-btn
emm.add.user.username=username
emm.add.user.firstname=firstname
emm.add.user.lastname=lastname
emm.add.user.email=emailAddress
emm.user.delete.button=//*[@id="inosh"]/td[5]/a[3]
emm.user.delete.button.confirm=remove-user-yes-link
emm.user.delete.button.success=remove-user-success-link
emm.roles.add.button=appbar-btn-
emm.roles.add.rolename.input=rolename
emm.roles.add.role.button=add-role-btn
emm.roles.add.role.created.msg.div=role-created-msg
emm.roles.update.rolename.input=rolename
emm.roles.update.role.button=add-role-btn
emm.roles.update.role.created.msg.div=role-created-msg
emm.roles.update.role.created.success.msg=ROLE WAS UPDATED SUCCESSFULLY
emm.configuration.android.tab.identifier=id('androidConfigLink')
emm.configuration.widows.tab.identifier=id('windowsConfigLink')
emm.configuration.ios.tab.identifier=id('iosConfigLink')
emm.configuration.general.tab.identifier=id('generalConfigLink')
emm.configuration.general.input.monitoringFr.identifier=id('monitoring-config-frequency')
emm.configuration.general.button.save.identifier=id('monitoring-config-frequency')
emm.configuration.saved.lable.identifier=id('record-created-msg')
emm.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.
emm.configuration.saved.button.back.identifier=id('btnBack')
emm.configuration.saved.button.back.val=Go back to configurations
emm.configuration.saved.button.exit.identifier=id('btnExit')
emm.configuration.saved.button.exit.val=Exit
emm.configuration.android.select.identifier=id('android-config-notifier')
emm.configuration.android.input.identifier=id('android-config-notifier-frequency')
emm.configuration.android.button.save.identifier=id('save-android-btn')
emm.configuration.windows.input.identifier=id('windows-config-notifier-frequency')
emm.configuration.windows.button.save.identifier=id('save-windows-btn')
emm.configuration.android.button.save.identifier=id('save-android-btn')
emm.notification.bubble.identifier=notification-bubble
emm.notification.unread.identifier=unReadNotifications
emm.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=middle
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
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

@ -1,266 +0,0 @@
<!--
~ 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.
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-integration</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>tests-integration</artifactId>
<packaging>jar</packaging>
<name>WSO2 IoT - Backend Integration Tests</name>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>false</inherited>
<version>2.12.4</version>
<configuration>
<argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m</argLine>
<parallel>false</parallel>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng-server-mgt.xml</suiteXmlFile>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<systemProperties>
<property>
<name>maven.test.haltafterfailure</name>
<value>false</value>
</property>
<property>
<name>carbon.zip</name>
<value>
${basedir}/../../distribution/target/wso2iot-${product.iot.version}.zip
</value>
</property>
<property>
<name>framework.resource.location</name>
<value>
${basedir}/src/test/resources/
</value>
</property>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<sec.verifier.dir>${basedir}/target/security-verifier/</sec.verifier.dir>
<instr.file>${basedir}/src/test/resources/instrumentation.txt</instr.file>
<filters.file>${basedir}/src/test/resources/filters.txt</filters.file>
</systemProperties>
<workingDirectory>${basedir}/target</workingDirectory>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-jacoco-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jacoco</outputDirectory>
<includeTypes>jar</includeTypes>
<includeArtifactIds>org.jacoco.agent</includeArtifactIds>
</configuration>
</execution>
<execution>
<id>copy-secVerifier</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/security-verifier</outputDirectory>
<includeTypes>aar</includeTypes>
<includeArtifactIds>SecVerifier</includeArtifactIds>
<stripVersion>true</stripVersion>
</configuration>
</execution>
<execution>
<id>unpack-jks</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot</artifactId>
<version>${product.iot.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${basedir}/target/tobeCopied/</outputDirectory>
<includes>**/*.jks</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<outputDirectory>${basedir}/target/report</outputDirectory>
<outputName>registry-api-test</outputName>
</configuration>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>report-only</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources-jks</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/keystores/products
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${product.iot.version}/repository/resources/security/
</directory>
<includes>
<include>**/*.jks</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.engine</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.extensions</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.test.utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.extensions</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -1,233 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<automation xmlns="automationSchema.xsd">
<!-- ================================================= -->
<!-- Parameters -->
<!-- ================================================= -->
<configurations>
<!--
Change this to edit wait time for test artifact deployment
-->
<deploymentDelay>60000</deploymentDelay>
<!--
Change this to product|platform/cloud to execute test on specific environment
-->
<executionEnvironment>standalone</executionEnvironment>
<!--
Change this to user/tenant to execute test with user mode or tenant mode
-->
<multiTenantMode>false</multiTenantMode>
<!--
Change this to true if you want to generate coverage statistics
-->
<coverage>false</coverage>
<!--
Change this to true if you want to enable framework dashboard
-->
<frameworkDashboard>false</frameworkDashboard>
<!--
Browser type with used by framework to execute UI test, supported types - chrome|firefox|opera|ie|htmlUnit
-->
</configurations>
<tools>
<selenium>
<!-- Change to enable remote webDriver -->
<!-- URL of remote webDriver server -->
<remoteDriverUrl enable="true">http://10.100.2.51:4444/wd/hub/</remoteDriverUrl>
<!-- Type of the browser selenium tests are running" -->
<browser>
<browserType>firefox</browserType>
<!-- path to webDriver executable - required only for chrome-->
<webdriverPath enable="false">/home/test/name/webDriver</webdriverPath>
</browser>
</selenium>
</tools>
<!--
Database configuration to be used for data service testing. DB configuration in dbs files will be replaced with
below configuration at test run time
-->
<datasources>
<datasource name="dataService">
<url>jdbc:h2:testDB</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
</datasource>
<datasource name="dataService1">
<url>jdbc:h2:testDB</url>
<username>wso2carbon</username>
<password>wso2carbon</password>
<driverClassName>org.h2.Driver</driverClassName>
</datasource>
</datasources>
<security>
<!--
KeyStore which will be used for encrypting/decrypting passwords
and other sensitive information.
-->
<keystore name="wso2">
<!-- Keystore file location -->
<fileName>keystores/products/wso2carbon.jks</fileName>
<!-- Keystore type (JKS/PKCS12 etc.) -->
<type>JKS</type>
<!-- Keystore password -->
<password>wso2carbon</password>
<!-- Private Key alias -->
<keyAlias>wso2carbon</keyAlias>
<!-- Private Key password -->
<keyPassword>wso2carbon</keyPassword>
</keystore>
<!--
System wide trust-store which is used to maintain the certificates of all
the trusted parties.
-->
<truststore name="wso2">
<!-- trust-store file location -->
<fileName>client-truststore.jks</fileName>
<!-- trust-store type (JKS/PKCS12 etc.) -->
<type>JKS</type>
<!-- trust-store password -->
<password>wso2carbon</password>
</truststore>
</security>
<featureManagement>
<p2Repositories>
<repository name="localDefault">
<repository repo-id="online-repository">https://wso2.org/repo</repository>
<repository repo-id="file-repository">file:///home/krishantha/test</repository>
</repository>
</p2Repositories>
</featureManagement>
<!--
System wide users who to be registered at the test initiation
-->
<userManagement>
<superTenant>
<tenant domain="carbon.super" key="superTenant">
<admin>
<user key="superAdmin">
<userName>admin</userName>
<password>admin</password>
</user>
</admin>
<users>
<user key="user1">
<userName>testuser11</userName>
<password>testuser11</password>
</user>
<user key="user2">
<userName>testuser21</userName>
<password>testuser21</password>
</user>
</users>
</tenant>
</superTenant>
<tenants>
<tenant domain="wso2.com" key="wso2">
<admin>
<user key="admin">
<userName>admin</userName>
<password>admin</password>
</user>
</admin>
<users>
<user key="user1">
<userName>testuser11</userName>
<password>testuser11</password>
</user>
<user key="user2">
<userName>testuser21</userName>
<password>testuser21</password>
</user>
</users>
</tenant>
</tenants>
</userManagement>
<!--
This section will initiate the initial deployment of the platform required by
the test suites.
-->
<platform>
<!--
cluster instance details to be used to platform test execution
-->
<productGroup name="MDM" clusteringEnabled="false" default="true">
<instance name="mdm" type="standalone" nonBlockingTransportEnabled="false">
<hosts>
<host type="default">localhost</host>
</hosts>
<ports>
<port type="http">10863</port>
<port type="https">10543</port>
</ports>
<properties>
</properties>
</instance>
</productGroup>
</platform>
<listenerExtensions>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
<platformExecutionManager>
<extentionClasses>
<class>
<name>
org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension
</name>
<parameter name="-DportOffset" value="1100"/>
<!--<parameter name="cmdArg" value="debug 5005" />-->
</class>
<class>
<name>
org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension
</name>
</class>
</extentionClasses>
</platformExecutionManager>
<PlatformSuiteManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
</extentionClasses>
</PlatformSuiteManager>
<PlatformAnnotationTransferManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
</extentionClasses>
</PlatformAnnotationTransferManager>
<PlatformTestManager>
<extentionClasses>
</extentionClasses>
</PlatformTestManager>
<PlatformReportManager>
<extentionClasses>
</extentionClasses>
</PlatformReportManager>
</listenerExtensions>
</automation>

@ -1,23 +0,0 @@
-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*

@ -1,41 +0,0 @@
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_

@ -1,45 +0,0 @@
#
# 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

@ -1,45 +0,0 @@
{
"POST": {
"name": "milan",
"type": "android",
"description": "milan123",
"deviceIdentifier": "1234",
"enrolmentInfo": {
"ownership": "BYOD",
"status": "ACTIVE",
"owner": "admin"
},
"properties": [
{
"name": "IMEI",
"value": "123123123"
},
{
"name": "IMSI",
"value": "123123123"
}
]
},
"PUT": {
"name": "milan123",
"type": "android",
"description": "updatedDescription",
"deviceIdentifier": "1234",
"enrolmentInfo": {
"ownership": "BYOD",
"status": "ACTIVE",
"owner": "admin",
"dateOfEnrolment": "1445438864650"
},
"properties": [
{
"name": "IMEI",
"value": "123123123"
},
{
"name": "IMSI",
"value": "123123123"
}
]
}
}

@ -1,18 +0,0 @@
{
"POST": {
"responseCode": "Created",
"responseMessage": "Device enrollment succeeded."
},
"PUT": {
"responseCode": "Accepted",
"responseMessage": "Device enrollment has updated successfully"
},
"GET": {
"responseCode": "Accepted",
"responseMessage": "Device has already enrolled"
},
"DELETE": {
"responseCode": "Accepted",
"responseMessage": "Device has removed successfully"
}
}

@ -1,23 +0,0 @@
<!--
~ 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.
-->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="mdm-suite">
</suite>

@ -1,112 +0,0 @@
<!--
~ 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.
-->
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="mdm-suite-initializer">
<parameter name="useDefaultListeners" value="false"/>
<listeners>
<listener
class-name="org.wso2.carbon.automation.engine.testlisteners.TestExecutionListener"/>
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestManagerListener"/>
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestReportListener"/>
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestSuiteListener"/>
<listener
class-name="org.wso2.carbon.automation.engine.testlisteners.TestTransformerListener"/>
</listeners>
<test name="mobile-device-mgt-no-devices" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.mobileDevice.MobileDeviceManagementWithNoDevices"/>
</classes>
</test>
<test name="android-enrollment" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.device.enrollment.AndroidEnrollment"/>
</classes>
</test>
<test name="android-operation" preserve-order="false" parallel="true">
<classes>
<class name="org.wso2.mdm.integration.device.operation.AndroidOperation"/>
</classes>
</test>
<test name="windows-enrollment" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.device.enrollment.WindowsEnrollment"/>
</classes>
</test>
<test name="android-device-mgt" preserve-order="false" parallel="true">
<classes>
<class name="org.wso2.mdm.integration.device.mgt.AndroidDeviceManagement"/>
</classes>
</test>
<test name="android-configuration" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.device.configuration.AndroidConfigurationManagement"/>
</classes>
</test>
<test name="android-policy" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.device.policy.AndroidPolicy"/>
</classes>
</test>
<test name="operation-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.operation.OperationManagement"/>
</classes>
</test>
<test name="mobile-device-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.mobileDevice.MobileDeviceManagement"/>
</classes>
</test>
<test name="user-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.user.UserManagement"/>
</classes>
</test>
<test name="role-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.role.RoleManagement"/>
</classes>
</test>
<test name="policy-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.policy.PolicyManagement"/>
</classes>
</test>
<test name="feature-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.feature.FeatureManagement"/>
</classes>
</test>
<test name="license-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.license.LicenseManagement"/>
</classes>
</test>
<test name="configuration-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.configuration.ConfigurationManagement"/>
</classes>
</test>
<test name="notification-mgt" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.mdm.integration.notification.NotificationManagement"/>
</classes>
</test>
</suite>

@ -1,60 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
~ Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~
~ WSO2 Inc. licenses this file to you under the Apache License,
~ Version 2.0 (the "License"); you may not use this file except
~ in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing,
~ software distributed under the License is distributed on an
~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
~ KIND, either express or implied. See the License for the
~ specific language governing permissions and limitations
~ under the License.
-->
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-integration</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>3.1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>tests-integration</artifactId>
<artifactId>org.wso2.carbon.iot.test.integration</artifactId>
<name>WSO2 IOT - Integration Test Module</name>
<description>Backend Integration Tests for WSO2 IOT Server.</description>
<packaging>jar</packaging>
<name>WSO2 IoT - Backend Integration Tests</name>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>false</inherited>
<version>2.12.4</version>
<configuration>
<argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m</argLine>
<parallel>false</parallel>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng-server-mgt.xml</suiteXmlFile>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<skipTests>${skipTests}</skipTests>
<systemProperties>
<property>
<name>maven.test.haltafterfailure</name>
<value>false</value>
</property>
<property>
<name>java.io.tmpdir</name>
<value>${basedir}/target/</value>
</property>
<property>
<name>carbon.zip</name>
<value>
${basedir}/../../distribution/target/wso2iot-${product.iot.version}.zip
${basedir}/../../distribution/target/wso2iot-${project.version}.zip
</value>
</property>
<property>
@ -63,37 +69,42 @@
${basedir}/src/test/resources/
</value>
</property>
<property>
<name>server.list</name>
<value>
IOT
</value>
</property>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<sec.verifier.dir>${basedir}/target/security-verifier/</sec.verifier.dir>
<eiot.home>${basedir}/target/iot</eiot.home>
<instr.file>${basedir}/src/test/resources/instrumentation.txt</instr.file>
<filters.file>${basedir}/src/test/resources/filters.txt</filters.file>
<iot.output>${basedir}/target/iot</iot.output>
</systemProperties>
<workingDirectory>${basedir}/target</workingDirectory>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-jacoco-dependencies</id>
<id>copy-emma-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/jacoco</outputDirectory>
<outputDirectory>${project.build.directory}/emma</outputDirectory>
<includeTypes>jar</includeTypes>
<includeArtifactIds>org.jacoco.agent</includeArtifactIds>
<includeArtifactIds>emma</includeArtifactIds>
</configuration>
</execution>
<execution>
<id>copy-secVerifier</id>
<phase>compile</phase>
@ -109,7 +120,7 @@
</execution>
<execution>
<id>unpack-jks</id>
<id>unpack-mar-jks</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
@ -119,11 +130,11 @@
<artifactItem>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot</artifactId>
<version>${product.iot.version}</version>
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${basedir}/target/tobeCopied/</outputDirectory>
<includes>**/*.jks</includes>
<includes>**/*.jks,**/*.mar,**/axis2_client.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
@ -142,24 +153,6 @@
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<outputDirectory>${basedir}/target/report</outputDirectory>
<outputName>registry-api-test</outputName>
</configuration>
<executions>
<execution>
<phase>integration-test</phase>
<goals>
<goal>report-only</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
@ -176,7 +169,7 @@
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${product.iot.version}/repository/resources/security/
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/resources/security/
</directory>
<includes>
<include>**/*.jks</include>
@ -185,82 +178,99 @@
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-stratos-jks</id>
<phase>compile</phase>
<goals>
<goal>test-jar</goal>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/keystores/stratos
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/resources/security/
</directory>
<includes>
<include>**/*.jks</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-axis2files</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/axis2config
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/conf/axis2/
</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources-mar</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/client/modules
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/deployment/client/modules
</directory>
<includes>
<include>**/*.mar</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.engine</artifactId>
<scope>compile</scope>
<groupId>org.wso2.iot</groupId>
<artifactId>org.wso2.carbon.iot.core.integration.ui.pages</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.extensions</artifactId>
<scope>compile</scope>
<artifactId>org.wso2.carbon.automation.engine</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.test.utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.utils</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.extensions</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.device.mgt.common</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.common</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.policy.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.wso2.carbon.devicemgt</groupId>
<artifactId>org.wso2.carbon.certificate.mgt.core</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
<skipTests>true</skipTests>
</properties>
</project>

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import java.io.File;
@ -24,15 +24,16 @@ import java.io.File;
*/
public final class Constants {
public static final String DEVICE_ID = "1234";
public static final String DEVICE_ID = "24f870f390352a41234";
public static final String NUMBER_NOT_EQUAL_TO_DEVICE_ID = "1111";
public static final String DEVICE_IMEI = "123123123";
public static final String AUTOMATION_CONTEXT = "MDM";
public static final String AUTOMATION_CONTEXT = "IOT";
public static final String APPLICATION_JSON = "application/json";
public static final String APPLICATION_URL_ENCODED = "application/x-www-form-urlencoded";
public static final String OAUTH_CLIENT_ID = "client_id";
public static final String OAUTH_CLIENT_SECRET = "client_secret";
public static final String OAUTH_ACCESS_TOKEN = "access_token";
public static final String SCOPE = "scope";
public static final String ANDROID_DEVICE_TYPE = "android";
public static final String HTTP_METHOD_POST = "POST";
public static final String HTTP_METHOD_PUT = "PUT";
@ -46,16 +47,53 @@ public final class Constants {
public static final String ZERO = "0";
public static final String NULL = "[]";
public static final class DynamicClientAuthentication {
public static final String REGISTRATION_ENDPOINT = "/dynamic-client-web/register";
public static final String TOKEN_ENDPOINT = "/oauth2/token";
public static final String OAUTH_TOKEN_PAYLOAD = "grant_type=password&username=admin&password=admin&scope=prod";
private static StringBuffer dynamicClientPayloadBuffer = new StringBuffer();
public static final String DYNAMIC_CLIENT_REGISTRATION_PAYLOAD = dynamicClientPayloadBuffer.append("{\"clientName\":").
append(" \"device\",\"owner\": \"admin\",\"grantType\": \"password\",\"callbackUrl\": \"www.google.lk\"," +
"\"saasApp\": \"" + true + "\"}").toString();
public static final String HTTPS = "https";
public static final String HTTP = "http";
public static final int HTTPS_GATEWAY_PORT = 8243;
public static final int HTTP_GATEWAY_PORT = 8280;
private DynamicClientAuthentication() {
public static final class APIApplicationRegistration {
public static final String API_APP_REGISTRATION_ENDPOINT = "/api-application-registration/register";
public static final String TOKEN_ENDPOINT = "/token";
public static final String OAUTH_TOKEN_PAYLOAD = "username=admin&password=admin&grant_type=password&scope=perm:android:enroll perm:android:wipe perm:android:ring perm:android:lock-devices perm:android:configure-vpn perm:android:configure-wifi perm:android:enroll perm:android:uninstall-application perm:android:manage-configuration perm:android:location perm:android:install-application perm:android:mute perm:android:change-lock-code perm:android:blacklist-applications perm:android:set-password-policy perm:android:encrypt-storage perm:android:clear-password perm:android:enterprise-wipe perm:android:info perm:android:view-configuration perm:android:upgrade-firmware perm:android:set-webclip perm:android:send-notification perm:android:disenroll perm:android:update-application perm:android:unlock-devices perm:android:control-camera perm:android:reboot perm:android:logcat appm:subscribe perm:sign-csr perm:admin:devices:view perm:roles:add perm:roles:add-users perm:roles:update perm:roles:permissions perm:roles:details perm:roles:view perm:roles:create-combined-role perm:roles:delete perm:dashboard:vulnerabilities perm:dashboard:non-compliant-count perm:dashboard:non-compliant perm:dashboard:by-groups perm:dashboard:device-counts perm:dashboard:feature-non-compliant perm:dashboard:count-overview perm:dashboard:filtered-count perm:dashboard:details perm:get-activity perm:devices:delete perm:devices:applications perm:devices:effective-policy perm:devices:compliance-data perm:devices:features perm:devices:operations perm:devices:search perm:devices:details perm:devices:update perm:devices:view perm:view-configuration perm:manage-configuration perm:policies:remove perm:policies:priorities perm:policies:deactivate perm:policies:get-policy-details perm:policies:manage perm:policies:activate perm:policies:update perm:policies:changes perm:policies:get-details perm:users:add perm:users:details perm:users:count perm:users:delete perm:users:roles perm:users:user-details perm:users:credentials perm:users:search perm:users:is-exist perm:users:update perm:users:send-invitation perm:admin-users:view perm:groups:devices perm:groups:update perm:groups:add perm:groups:device perm:groups:devices-count perm:groups:remove perm:groups:groups perm:groups:groups-view perm:groups:share perm:groups:count perm:groups:roles perm:groups:devices-remove perm:groups:devices-add perm:groups:assign perm:device-types:features perm:device-types:types perm:applications:install perm:applications:uninstall perm:admin-groups:count perm:admin-groups:view perm:notifications:mark-checked perm:notifications:view perm:admin:certificates:delete perm:admin:certificates:details perm:admin:certificates:view perm:admin:certificates:add perm:admin:certificates:verify perm:ios:enroll perm:ios:view-device perm:ios:apn perm:ios:ldap perm:ios:enterprise-app perm:ios:store-application perm:ios:remove-application perm:ios:app-list perm:ios:profile-list perm:ios:lock perm:ios:enterprise-wipe perm:ios:device-info perm:ios:restriction perm:ios:email perm:ios:cellular perm:ios:applications perm:ios:wifi perm:ios:ring perm:ios:location perm:ios:notification perm:ios:airplay perm:ios:caldav perm:ios:cal-subscription perm:ios:passcode-policy perm:ios:webclip perm:ios:vpn perm:ios:per-app-vpn perm:ios:app-to-per-app-vpn perm:ios:app-lock perm:ios:clear-passcode perm:ios:remove-profile perm:ios:get-restrictions perm:ios:wipe-data perm:admin";
private static StringBuffer dynamicClientPayloadBuffer = new StringBuffer();
public static final String API_APP_REGISTRATION_PAYLOAD = dynamicClientPayloadBuffer.append("{ \n"
+ " \"applicationName\":\"app_12345\",\n" + " \"isAllowedToAllDomains\":false,\n"
+ " \"tags\":[\"android\", \"device_management\"],\n" + " \"isMappingAnExistingOAuthApp\":false\n"
+ "}").toString();
public static final String PERMISSION_LIST = "default perm:admin-groups:count perm:admin-groups:view "
+ "perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete "
+ "perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view "
+ "perm:admin:devices:view perm:android:blacklist-applications perm:android:change-lock-code "
+ "perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi "
+ "perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage "
+ "perm:android:enroll perm:android:enterprise-wipe perm:android:info "
+ "perm:android:install-application perm:android:location perm:android:lock-devices "
+ "perm:android:logcat perm:android:manage-configuration perm:android:mute perm:android:reboot "
+ "perm:android:ring perm:android:send-notification perm:android:set-password-policy "
+ "perm:android:set-webclip perm:android:uninstall-application perm:android:unlock-devices "
+ "perm:android:update-application perm:android:upgrade-firmware perm:android:view-configuration "
+ "perm:android:wipe perm:applications:install perm:applications:uninstall perm:dashboard:by-groups "
+ "perm:dashboard:count-overview perm:dashboard:details perm:dashboard:device-counts "
+ "perm:dashboard:feature-non-compliant perm:dashboard:filtered-count perm:dashboard:non-compliant "
+ "perm:dashboard:non-compliant-count perm:dashboard:vulnerabilities perm:device-types:features "
+ "perm:device-types:types perm:devices:applications perm:devices:compliance-data perm:devices:delete"
+ " perm:devices:details perm:devices:effective-policy perm:devices:features perm:devices:operations "
+ "perm:devices:search perm:devices:update perm:devices:view perm:get-activity perm:groups:add "
+ "perm:groups:assign perm:groups:count perm:groups:device perm:groups:devices "
+ "perm:groups:devices-add perm:groups:devices-count perm:groups:devices-remove perm:groups:groups "
+ "perm:groups:groups-view perm:groups:remove perm:groups:roles perm:groups:share perm:groups:update "
+ "perm:manage-configuration perm:notifications:mark-checked perm:notifications:view "
+ "perm:policies:activate perm:policies:changes perm:policies:deactivate perm:policies:get-details "
+ "perm:policies:get-policy-details perm:policies:manage perm:policies:priorities "
+ "perm:policies:remove perm:policies:update perm:roles:add perm:roles:add-users "
+ "perm:roles:create-combined-role perm:roles:delete perm:roles:details perm:roles:permissions "
+ "perm:roles:update perm:roles:view perm:users:add perm:users:count perm:users:credentials "
+ "perm:users:delete perm:users:details perm:users:is-exist perm:users:roles perm:users:search "
+ "perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration";
private APIApplicationRegistration() {
throw new AssertionError();
}
}
@ -63,7 +101,7 @@ public final class Constants {
public static final class AndroidEnrollment {
public static final String ENROLLMENT_PAYLOAD_FILE_NAME = "android-enrollment-payloads.json";
public static final String ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME = "android-enrollment-response-payloads.json";
public static final String ENROLLMENT_ENDPOINT = "/mdm-android-agent/enrollment/";
public static final String ENROLLMENT_ENDPOINT = "/api/device-mgt/android/v1.0/devices";
public static final String ENROLLMENT_GROUP = "android-enrollment";
private AndroidEnrollment() {
@ -189,12 +227,13 @@ public final class Constants {
public static final class MobileDeviceManagement {
public static final String MOBILE_DEVICE_MANAGEMENT_GROUP = "mobile-device-mgt";
public static final String GET_DEVICE_COUNT_ENDPOINT = "/mdm-admin/devices/count";
public static final String GET_DEVICE_COUNT_ENDPOINT = "/api/device-mgt/v1.0/devices";
public static final String NO_OF_DEVICES = "1";
public static final String GET_ALL_DEVICES_ENDPOINT = "/mdm-admin/devices";
public static final String VIEW_DEVICE_TYPES_ENDPOINT = "/mdm-admin/devices/types";
public static final String VIEW_DEVICE_RESPONSE_PAYLOAD_FILE_NAME =
"mobile-device-mgt-view-device-types-response-payloads.json";
public static final String NO_DEVICE = "{\"devices\":[],\"count\":0}";
private MobileDeviceManagement() {
throw new AssertionError();

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
@ -27,42 +27,39 @@ import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* This class creates a customised Http Client Class
*/
public class MDMHttpClient {
public class IOTHttpClient {
private static final String AUTHORIZATION = "Authorization";
private static Log log = LogFactory.getLog(MDMHttpClient.class);
private static Log log = LogFactory.getLog(IOTHttpClient.class);
private String backEndUrl;
private String authrizationString;
private String authorizationString;
private Map<String, String> requestHeaders = new HashMap<String, String>();
public MDMHttpClient(String backEndUrl, String contentType, String authorization) {
public IOTHttpClient(String backEndUrl, String contentType, String authorization) {
this.backEndUrl = backEndUrl;
this.requestHeaders.put(Constants.CONTENT_TYPE, contentType);
if (authorization != null || !authorization.isEmpty()) {
this.authrizationString = authorization;
this.authorizationString = authorization;
this.requestHeaders.put(AUTHORIZATION, authorization);
}
}
public String getAuthrizationString() {
return authrizationString;
public String getAuthorizationString() {
return authorizationString;
}
public void setAuthrizationString(String authrizationString) {
this.authrizationString = authrizationString;
public void setAuthorizationString(String authorizationString) {
this.authorizationString = authorizationString;
}
public void setHttpHeader(String headerName, String value) {
@ -77,108 +74,108 @@ public class MDMHttpClient {
this.requestHeaders.remove(headerName);
}
public MDMResponse post(String endpoint, String body) {
public IOTResponse post(String endpoint, String body) {
HttpClient client = new HttpClient();
try {
ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory();
Protocol https = new Protocol("https", socketFactory, 9443);
Protocol.registerProtocol("https", https);
Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT);
Protocol.registerProtocol(Constants.HTTPS, https);
String url = backEndUrl + endpoint;
PostMethod method = new PostMethod(url);
method.setRequestHeader(AUTHORIZATION, authrizationString);
method.setRequestHeader(AUTHORIZATION, authorizationString);
StringRequestEntity requestEntity = new StringRequestEntity(body,
requestHeaders.get(Constants.CONTENT_TYPE), Constants.UTF8);
method.setRequestEntity(requestEntity);
MDMResponse mdmResponse = new MDMResponse();
mdmResponse.setStatus(client.executeMethod(method));
mdmResponse.setBody(method.getResponseBodyAsString());
return mdmResponse;
IOTResponse iotResponse = new IOTResponse();
iotResponse.setStatus(client.executeMethod(method));
iotResponse.setBody(method.getResponseBodyAsString());
return iotResponse;
} catch (GeneralSecurityException e) {
log.error("Failure occurred at MDMResponse post for GeneralSecurityException", e);
log.error("Failure occurred at IOTResponse post for GeneralSecurityException", e);
} catch (IOException e) {
log.error("Failure occured at MDMResponse post for IOException", e);
log.error("Failure occurred at IOTResponse post for IOException", e);
}
return null;
}
public MDMResponse put(String endpoint, String body) {
public IOTResponse put(String endpoint, String body) {
HttpClient client = new HttpClient();
try {
ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory();
Protocol https = new Protocol("https", socketFactory, 9443);
Protocol.registerProtocol("https", https);
Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT);
Protocol.registerProtocol(Constants.HTTPS, https);
String url = backEndUrl + endpoint;
PutMethod method = new PutMethod(url);
method.setRequestHeader(AUTHORIZATION, authrizationString);
method.setRequestHeader(AUTHORIZATION, authorizationString);
StringRequestEntity requestEntity = new StringRequestEntity(
body, requestHeaders.get(Constants.CONTENT_TYPE), Constants.UTF8);
method.setRequestEntity(requestEntity);
MDMResponse mdmResponse = new MDMResponse();
mdmResponse.setStatus(client.executeMethod(method));
mdmResponse.setBody(method.getResponseBodyAsString());
return mdmResponse;
IOTResponse iotResponse = new IOTResponse();
iotResponse.setStatus(client.executeMethod(method));
iotResponse.setBody(method.getResponseBodyAsString());
return iotResponse;
} catch (GeneralSecurityException e) {
log.error("Failure occurred at MDMResponse put for GeneralSecurityException", e);
log.error("Failure occurred at IOTResponse put for GeneralSecurityException", e);
} catch (IOException e) {
log.error("Failure occurred at MDMResponse put for IO Exception", e);
log.error("Failure occurred at IOTResponse put for IO Exception", e);
}
return null;
}
public MDMResponse get(String endpoint) {
public IOTResponse get(String endpoint) {
HttpClient client = new HttpClient();
try {
ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory();
Protocol https = new Protocol("https", socketFactory, 9443);
Protocol.registerProtocol("https", https);
Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT);
Protocol.registerProtocol(Constants.HTTPS, https);
String url = backEndUrl + endpoint;
GetMethod method = new GetMethod(url);
method.setRequestHeader(AUTHORIZATION, authrizationString);
method.setRequestHeader(AUTHORIZATION, authorizationString);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
MDMResponse mdmResponse = new MDMResponse();
mdmResponse.setStatus(client.executeMethod(method));
mdmResponse.setBody(new String(method.getResponseBody()));
return mdmResponse;
IOTResponse iotResponse = new IOTResponse();
iotResponse.setStatus(client.executeMethod(method));
iotResponse.setBody(new String(method.getResponseBody()));
return iotResponse;
} catch (GeneralSecurityException e) {
log.error("Failure occurred at MDMResponse get for GeneralSecurityException", e);
log.error("Failure occurred at IOTResponse get for GeneralSecurityException", e);
} catch (IOException e) {
log.error("Failure occurred at MDMResponse get for IOException", e);
log.error("Failure occurred at IOTResponse get for IOException", e);
}
return null;
}
public MDMResponse delete(String endpoint) {
public IOTResponse delete(String endpoint) {
HttpClient client = new HttpClient();
try {
ProtocolSocketFactory socketFactory = new EasySSLProtocolSocketFactory();
Protocol https = new Protocol("https", socketFactory, 9443);
Protocol.registerProtocol("https", https);
Protocol https = new Protocol(Constants.HTTPS, socketFactory, Constants.HTTPS_GATEWAY_PORT);
Protocol.registerProtocol(Constants.HTTPS, https);
String url = backEndUrl + endpoint;
DeleteMethod method = new DeleteMethod(url);
method.setRequestHeader(AUTHORIZATION, authrizationString);
method.setRequestHeader(AUTHORIZATION, authorizationString);
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(3, false));
MDMResponse mdmResponse = new MDMResponse();
mdmResponse.setStatus(client.executeMethod(method));
mdmResponse.setBody(method.getResponseBodyAsString());
return mdmResponse;
IOTResponse iotResponse = new IOTResponse();
iotResponse.setStatus(client.executeMethod(method));
iotResponse.setBody(method.getResponseBodyAsString());
return iotResponse;
} catch (GeneralSecurityException e) {
log.error("Failure occurred at MDMResponse delete for GeneralSecurityException", e);
log.error("Failure occurred at IOTResponse delete for GeneralSecurityException", e);
} catch (IOException e) {
log.error("Failure occurred at MDMResponse delete for IOException", e);
log.error("Failure occurred at IOTResponse delete for IOException", e);
}
return null;
}

@ -15,12 +15,12 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
/**
* This class contains the functions to handle a HTTP Response
*/
public class MDMResponse {
public class IOTResponse {
private int status;
private String body;

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import org.apache.commons.net.util.Base64;
import org.json.JSONObject;
@ -27,11 +27,19 @@ import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
*/
public class OAuthUtil {
public static String getOAuthToken(String backendHTTPURL, String backendHTTPSURL)
throws Exception {
RestClient client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON);
HttpResponse oAuthData = client.post(Constants.DynamicClientAuthentication.REGISTRATION_ENDPOINT,
Constants.DynamicClientAuthentication.DYNAMIC_CLIENT_REGISTRATION_PAYLOAD);
public static String getScopes(String backendHTTPURL, String backendHTTPSURL) throws Exception {
return getOAuthTokenPair(backendHTTPURL, backendHTTPSURL).get(Constants.SCOPE).toString();
}
public static String getOAuthToken(String backendHTTPURL, String backendHTTPSURL) throws Exception {
return getOAuthTokenPair(backendHTTPURL, backendHTTPSURL).get(Constants.OAUTH_ACCESS_TOKEN).toString();
}
public static JSONObject getOAuthTokenPair(String backendHTTPURL, String backendHTTPSURL) throws Exception {
String AuthString = "Basic YWRtaW46YWRtaW4=";
RestClient client = new RestClient(backendHTTPURL, Constants.APPLICATION_JSON, AuthString);
HttpResponse oAuthData = client.post(Constants.APIApplicationRegistration.API_APP_REGISTRATION_ENDPOINT,
Constants.APIApplicationRegistration.API_APP_REGISTRATION_PAYLOAD);
JSONObject jsonObj = new JSONObject(oAuthData.getData());
String clientId = jsonObj.get(Constants.OAUTH_CLIENT_ID).toString();
String clientSecret = jsonObj.get(Constants.OAUTH_CLIENT_SECRET).toString();
@ -39,9 +47,10 @@ public class OAuthUtil {
String basicAuthString = "Basic " + new String(bytesEncoded);
//Initiate a RestClient to get OAuth token
client = new RestClient(backendHTTPSURL, Constants.APPLICATION_URL_ENCODED, basicAuthString);
oAuthData = client.post(Constants.DynamicClientAuthentication.TOKEN_ENDPOINT,
Constants.DynamicClientAuthentication.OAUTH_TOKEN_PAYLOAD);
oAuthData = client.post(Constants.APIApplicationRegistration.TOKEN_ENDPOINT,
Constants.APIApplicationRegistration.OAUTH_TOKEN_PAYLOAD);
System.out.println(oAuthData.getData());
jsonObj = new JSONObject(oAuthData.getData());
return jsonObj.get(Constants.OAUTH_ACCESS_TOKEN).toString();
return jsonObj;
}
}

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
@ -35,7 +35,7 @@ public class PayloadGenerator {
public static JsonObject getJsonPayload(String fileName, String method)
throws FileNotFoundException {
URL url = Thread.currentThread().getContextClassLoader().getResource(PAYLOAD_LOCATION + fileName);
URL url = PayloadGenerator.class.getClassLoader().getResource(PAYLOAD_LOCATION + fileName);
JsonObject jsonObject = parser.parse(new FileReader(url.getPath())).getAsJsonObject();
return jsonObject.get(method).getAsJsonObject();
}

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.test.utils.http.client.HttpRequestUtil;
@ -23,6 +23,7 @@ import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.nio.charset.Charset;
@ -74,7 +75,7 @@ public class RestClient {
this.requestHeaders.remove(headerName);
}
public HttpResponse post(String endpoint, String body) throws Exception {
public HttpResponse post(String endpoint, String body) throws MalformedURLException, AutomationFrameworkException {
return HttpRequestUtil.doPost(new URL(backEndUrl + endpoint), body, requestHeaders);
}

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.common;
package org.wso2.iot.integration.common;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.TestUserMode;
@ -28,15 +28,16 @@ import javax.xml.xpath.XPathExpressionException;
* This is the base test class that provides common details necessary for other test cases.
*/
public class TestBase {
static String accessToken;
protected AutomationContext automationContext;
protected String backendHTTPSURL;
protected String backendHTTPURL;
protected void init(TestUserMode userMode) throws Exception {
automationContext = new AutomationContext(Constants.AUTOMATION_CONTEXT, userMode);
backendHTTPSURL = automationContext.getContextUrls().getWebAppURLHttps();
backendHTTPURL = automationContext.getContextUrls().getWebAppURL();
backendHTTPSURL = automationContext.getContextUrls().getWebAppURLHttps().replace("9443", String.valueOf(Constants
.HTTPS_GATEWAY_PORT));
backendHTTPURL = automationContext.getContextUrls().getWebAppURL().replace("9763", String.valueOf(Constants
.HTTP_GATEWAY_PORT));
}
protected void initPublisher(String productGroupName, String instanceName,
@ -55,7 +56,7 @@ public class TestBase {
}
protected String getBackendHTTPSURL() throws XPathExpressionException {
return automationContext.getContextUrls().getBackEndUrl();
return backendHTTPSURL;
}
protected String getSessionCookie() throws Exception {

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.configuration;
package org.wso2.iot.integration.configuration;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -24,7 +24,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for configuration management backend services.
@ -33,7 +33,7 @@ public class ConfigurationManagement extends TestBase {
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.ConfigurationManagement.CONFIGURATION_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.ConfigurationManagement.CONFIGURATION_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.device.configuration;
package org.wso2.iot.integration.device.configuration;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -24,7 +24,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for Android configuration management backend services.
@ -33,7 +33,7 @@ public class AndroidConfigurationManagement extends TestBase {
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.AndroidConfigurationManagement.DEVICE_CONFIGURATION_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.AndroidConfigurationManagement.DEVICE_CONFIGURATION_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);

@ -15,16 +15,18 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.device.enrollment;
package org.wso2.iot.integration.device.enrollment;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This contains testing of Android device enrollment which is necessary to run prior to all other Android related
@ -32,8 +34,10 @@ import org.wso2.mdm.integration.common.*;
*/
public class AndroidEnrollment extends TestBase {
private RestClient client;
private String deviceId;
@BeforeClass(alwaysRun = true, groups = {Constants.AndroidEnrollment.ENROLLMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.AndroidEnrollment.ENROLLMENT_GROUP}, dependsOnGroups =
Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP)
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);
@ -42,24 +46,27 @@ public class AndroidEnrollment extends TestBase {
@Test(description = "Test an Android device enrollment.")
public void testEnrollment() throws Exception {
JsonObject enrollmentData = PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST);
enrollmentData.addProperty(Constants.DEVICE_IDENTIFIER_KEY, Constants.DEVICE_ID);
HttpResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData.toString());
String enrollmentData = PayloadGenerator.getJsonPayload(Constants.AndroidEnrollment
.ENROLLMENT_PAYLOAD_FILE_NAME, Constants.HTTP_METHOD_POST).toString();
HttpResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData);
JsonParser jsonParser = new JsonParser();
JsonElement element = jsonParser.parse(response.getData());
JsonObject jsonObject = element.getAsJsonObject();
JsonElement msg = jsonObject.get("responseMessage");
deviceId = msg.getAsString().split("\'")[1].split("\'")[0];
Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST).toString(), response.getData().toString(), true);
Constants.HTTP_METHOD_POST).toString(), response.getData(), true);
}
@Test(description = "Test an Android device is enrolled.", dependsOnMethods = {"testEnrollment"})
public void testIsEnrolled() throws Exception {
HttpResponse response = client.get(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + Constants.DEVICE_ID);
HttpResponse response = client.get(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + "/" + deviceId + "/status");
Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_GET).toString(), response.getData().toString(), true);
Constants.HTTP_METHOD_GET).toString(), response.getData(), true);
}
@Test(description = "Test modify enrollment.", dependsOnMethods = {"testIsEnrolled"})
@ -67,21 +74,19 @@ public class AndroidEnrollment extends TestBase {
JsonObject enrollmentData = PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_PUT);
enrollmentData.addProperty(Constants.DEVICE_IDENTIFIER_KEY, Constants.DEVICE_ID);
HttpResponse response = client.put(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + Constants.DEVICE_ID,
HttpResponse response = client.put(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + "/" + deviceId,
enrollmentData.toString());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_PUT).toString(), response.getData().toString(), true);
Constants.HTTP_METHOD_PUT).toString(), response.getData(), true);
}
@Test(description = "Test disenrollment.", dependsOnMethods = {"testModifyEnrollment"})
@Test(description = "Test disEnrollment.", dependsOnMethods = {"testModifyEnrollment"})
public void testDisEnrollDevice() throws Exception {
HttpResponse response = client.delete(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + Constants.DEVICE_ID);
HttpResponse response = client.delete(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT + "/" + deviceId);
Assert.assertEquals(HttpStatus.SC_OK, response.getResponseCode());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_DELETE).toString(),
response.getData().toString(), true);
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_DELETE).toString(), response.getData(), true);
}
}

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.device.enrollment;
package org.wso2.iot.integration.device.enrollment;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -25,10 +25,10 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.Constants;
import org.wso2.mdm.integration.common.OAuthUtil;
import org.wso2.mdm.integration.common.RestClient;
import org.wso2.mdm.integration.common.TestBase;
import org.wso2.iot.integration.common.Constants;
import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.RestClient;
import org.wso2.iot.integration.common.TestBase;
import java.io.File;
import java.net.URL;
@ -42,7 +42,7 @@ public class WindowsEnrollment extends TestBase {
private static String bsd;
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.WindowsEnrollment.WINDOWS_ENROLLMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.WindowsEnrollment.WINDOWS_ENROLLMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.device.mgt;
package org.wso2.iot.integration.device.mgt;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@ -27,8 +27,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for Android device management backend services.

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.device.operation;
package org.wso2.iot.integration.device.operation;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@ -26,7 +26,7 @@ import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This contain tests to check operations supported by Android. Test are executed against a previously enrolled device
@ -34,7 +34,7 @@ import org.wso2.mdm.integration.common.*;
public class AndroidOperation extends TestBase {
private RestClient client;
@BeforeTest(alwaysRun = true, groups = {Constants.AndroidEnrollment.ENROLLMENT_GROUP})
@BeforeTest(alwaysRun = true, groups = { Constants.AndroidEnrollment.ENROLLMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);

@ -16,15 +16,13 @@
* under the License.
*/
package org.wso2.mdm.integration.device.policy;
package org.wso2.iot.integration.device.policy;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This contain tests to check policy endpoints supported by Android.
@ -34,7 +32,7 @@ public class AndroidPolicy extends TestBase {
private RestClient client;
@BeforeTest(alwaysRun = true, groups = {Constants.AndroidEnrollment.ENROLLMENT_GROUP})
@BeforeTest(alwaysRun = true, groups = { Constants.AndroidEnrollment.ENROLLMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPURL, backendHTTPSURL);

@ -0,0 +1,89 @@
/*
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.iot.integration.extensions;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.ContextXpathConstants;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension;
import org.wso2.carbon.automation.extensions.ExtensionConstants;
import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension;
import javax.xml.xpath.XPathExpressionException;
/**
* Test Automation server extension to start the DAS.
* This will set the carbon_home to {carbonHome}/core and port offset : 2
*/
public class AnalyticsServerExtension extends ExecutionListenerExtension {
private CustomTestServerManager serverManager;
private static final Log log = LogFactory.getLog(CarbonServerExtension.class);
private String executionEnvironment;
private AutomationContext automationContext;
@Override
public void initiate() throws AutomationFrameworkException {
try {
automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER);
if(getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) {
getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, "2");
}
serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters());
executionEnvironment =
automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT);
} catch (XPathExpressionException e) {
handleException("Error while initiating test environment", e);
}
}
@Override
public void onExecutionStart() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
String carbonHome = serverManager.startServer("analytics");
log.info(carbonHome);
System.setProperty(ExtensionConstants.CARBON_HOME, carbonHome);
}
} catch (Exception e) {
handleException("Fail to start carbon server ", e);
}
}
@Override
public void onExecutionFinish() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
serverManager.stopServer();
}
} catch (Exception e) {
handleException("Fail to stop carbon server ", e);
}
}
private static void handleException(String msg, Exception e) {
log.error(msg, e);
throw new RuntimeException(msg, e);
}
}

@ -0,0 +1,89 @@
/*
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.iot.integration.extensions;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.ContextXpathConstants;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension;
import org.wso2.carbon.automation.extensions.ExtensionConstants;
import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension;
import javax.xml.xpath.XPathExpressionException;
/**
* Test Automation server extension to start the Broker.
* This will set the carbon_home to {carbonHome}/core and port offset : 3
*/
public class BrokerServerExtension extends ExecutionListenerExtension {
private CustomTestServerManager serverManager;
private static final Log log = LogFactory.getLog(CarbonServerExtension.class);
private String executionEnvironment;
private AutomationContext automationContext;
@Override
public void initiate() throws AutomationFrameworkException {
try {
automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER);
if(getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) {
getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, "3");
}
serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters());
executionEnvironment =
automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT);
} catch (XPathExpressionException e) {
handleException("Error while initiating test environment", e);
}
}
@Override
public void onExecutionStart() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
String carbonHome = serverManager.startServer("broker");
log.info(carbonHome);
System.setProperty(ExtensionConstants.CARBON_HOME, carbonHome);
}
} catch (Exception e) {
handleException("Fail to start carbon server ", e);
}
}
@Override
public void onExecutionFinish() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
serverManager.stopServer();
}
} catch (Exception e) {
handleException("Fail to stop carbon server ", e);
}
}
private static void handleException(String msg, Exception e) {
log.error(msg, e);
throw new RuntimeException(msg, e);
}
}

@ -0,0 +1,147 @@
/*
* Copyright (c) 2005-2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.iot.integration.extensions;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.automation.engine.FrameworkConstants;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.extensions.ExtensionConstants;
import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerManager;
import javax.xml.xpath.XPathExpressionException;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class CustomTestServerManager {
protected CarbonServerManager carbonServer;
protected String carbonZip;
protected int portOffset;
protected Map<String, String> commandMap = new HashMap<String, String>();
private static final Log log = LogFactory.getLog(CustomTestServerManager.class);
protected String carbonHome;
public CustomTestServerManager(AutomationContext context) {
carbonServer = new CarbonServerManager(context);
}
public CustomTestServerManager(AutomationContext context, String carbonZip) {
carbonServer = new CarbonServerManager(context);
this.carbonZip = carbonZip;
}
public CustomTestServerManager(AutomationContext context, int portOffset) {
carbonServer = new CarbonServerManager(context);
this.portOffset = portOffset;
commandMap.put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, String.valueOf(portOffset));
}
public CustomTestServerManager(AutomationContext context, String carbonZip,
Map<String, String> commandMap) {
carbonServer = new CarbonServerManager(context);
this.carbonZip = carbonZip;
if (commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) != null) {
this.portOffset = Integer.parseInt(commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND));
} else {
throw new IllegalArgumentException("portOffset value must be set in command list");
}
this.commandMap = commandMap;
}
public String getCarbonZip() {
return carbonZip;
}
public String getCarbonHome() {
return carbonHome;
}
public int getPortOffset() {
return portOffset;
}
public void configureServer() throws AutomationFrameworkException {
}
public Map<String, String> getCommands() {
return commandMap;
}
/**
* This method is called for starting a Carbon server in preparation for execution of a
* TestSuite
* <p/>
* Add the @BeforeSuite TestNG annotation in the method overriding this method
* @param server : The server which needs to be start.
* @return The CARBON_HOME
* @throws IOException If an error occurs while copying the deployment artifacts into the
* Carbon server
*/
public String startServer(String server)
throws AutomationFrameworkException, IOException, XPathExpressionException {
if(carbonHome == null) {
if (carbonZip == null) {
carbonZip = System.getProperty(FrameworkConstants.SYSTEM_PROPERTY_CARBON_ZIP_LOCATION);
}
if (carbonZip == null) {
throw new IllegalArgumentException("carbon zip file cannot find in the given location");
}
carbonHome = carbonServer.setUpCarbonHome(carbonZip) + "/" + server;
configureServer();
}
log.info("Carbon Home - " + carbonHome );
if (commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) != null) {
this.portOffset = Integer.parseInt(commandMap.get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND));
} else {
this.portOffset = 0;
}
carbonServer.startServerUsingCarbonHome(carbonHome, commandMap);
return carbonHome;
}
/**
* Restarting server already started by the method startServer
* @throws AutomationFrameworkException
*/
public void restartGracefully() throws AutomationFrameworkException {
if(carbonHome == null) {
throw new AutomationFrameworkException("No Running Server found to restart. " +
"Please make sure whether server is started");
}
carbonServer.restartGracefully();
}
/**
* This method is called for stopping a Carbon server
* <p/>
* Add the @AfterSuite annotation in the method overriding this method
*
* @throws AutomationFrameworkException If an error occurs while shutting down the server
*/
public void stopServer() throws AutomationFrameworkException {
carbonServer.serverShutdown(portOffset);
}
}

@ -0,0 +1,89 @@
/*
* Copyright (c) 2017, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.iot.integration.extensions;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.automation.engine.annotations.ExecutionEnvironment;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.engine.context.ContextXpathConstants;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException;
import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension;
import org.wso2.carbon.automation.extensions.ExtensionConstants;
import org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension;
import javax.xml.xpath.XPathExpressionException;
/**
* Test Automation server extension to start the IOT core.
* This will set the carbon_home to {carbonHome}/core and port offset : 0
*/
public class IOTServerExtension extends ExecutionListenerExtension {
private CustomTestServerManager serverManager;
private static final Log log = LogFactory.getLog(CarbonServerExtension.class);
private String executionEnvironment;
private AutomationContext automationContext;
@Override
public void initiate() throws AutomationFrameworkException {
try {
automationContext = new AutomationContext("IOT", TestUserMode.SUPER_TENANT_USER);
if(getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) {
getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, "0");
}
serverManager = new CustomTestServerManager(getAutomationContext(), null, getParameters());
executionEnvironment =
automationContext.getConfigurationValue(ContextXpathConstants.EXECUTION_ENVIRONMENT);
} catch (XPathExpressionException e) {
handleException("Error while initiating test environment", e);
}
}
@Override
public void onExecutionStart() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
String carbonHome = serverManager.startServer("core");
log.info(carbonHome);
System.setProperty(ExtensionConstants.CARBON_HOME, carbonHome);
}
} catch (Exception e) {
handleException("Fail to start carbon server ", e);
}
}
@Override
public void onExecutionFinish() throws AutomationFrameworkException {
try {
if (executionEnvironment.equalsIgnoreCase(ExecutionEnvironment.STANDALONE.name())) {
serverManager.stopServer();
}
} catch (Exception e) {
handleException("Fail to stop carbon server ", e);
}
}
private static void handleException(String msg, Exception e) {
log.error(msg, e);
throw new RuntimeException(msg, e);
}
}

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.feature;
package org.wso2.iot.integration.feature;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -23,7 +23,10 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.Constants;
import org.wso2.iot.integration.common.OAuthUtil;
import org.wso2.iot.integration.common.RestClient;
import org.wso2.iot.integration.common.TestBase;
/**
* This class contains integration tests for feature management backend services.
@ -32,7 +35,7 @@ public class FeatureManagement extends TestBase {
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.FeatureManagement.FEATURE_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.FeatureManagement.FEATURE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.license;
package org.wso2.iot.integration.license;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -23,7 +23,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for license management backend services.
@ -32,7 +32,7 @@ public class LicenseManagement extends TestBase {
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.LicenseManagement.LICENSE_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.LicenseManagement.LICENSE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.mobileDevice;
package org.wso2.iot.integration.mobileDevice;
import com.google.gson.JsonObject;
import junit.framework.Assert;
@ -23,28 +23,27 @@ import org.apache.commons.httpclient.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for API Device management backend services.
*/
public class MobileDeviceManagement extends TestBase {
private MDMHttpClient client;
private IOTHttpClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
this.client = new MDMHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@Test(description = "Add an Android device.")
public void addEnrollment() throws Exception {
JsonObject enrollmentData = PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST);
Constants.AndroidEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME, Constants.HTTP_METHOD_POST);
enrollmentData.addProperty(Constants.DEVICE_IDENTIFIER_KEY, Constants.DEVICE_ID);
MDMResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData.toString());
IOTResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData.toString());
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
@ -53,21 +52,21 @@ public class MobileDeviceManagement extends TestBase {
@Test(dependsOnMethods = {"addEnrollment"}, description = "Test count devices")
public void testCountDevices() throws Exception {
MDMResponse response = client.get(Constants.MobileDeviceManagement.GET_DEVICE_COUNT_ENDPOINT);
IOTResponse response = client.get(Constants.MobileDeviceManagement.GET_DEVICE_COUNT_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
Assert.assertTrue(response.getBody().toString().equals(Constants.MobileDeviceManagement.NO_OF_DEVICES));
Assert.assertTrue(response.getBody().equals(Constants.MobileDeviceManagement.NO_OF_DEVICES));
}
@Test(dependsOnMethods = {"addEnrollment"}, description = "Test view devices")
public void testViewDevices() throws Exception {
MDMResponse response = client.get(Constants.MobileDeviceManagement.GET_ALL_DEVICES_ENDPOINT);
IOTResponse response = client.get(Constants.MobileDeviceManagement.GET_ALL_DEVICES_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
}
@Test(dependsOnMethods = {"addEnrollment"}, description = "Test view device types")
public void testViewDeviceTypes() throws Exception {
MDMResponse response = client.get(Constants.MobileDeviceManagement.VIEW_DEVICE_TYPES_ENDPOINT);
IOTResponse response = client.get(Constants.MobileDeviceManagement.VIEW_DEVICE_TYPES_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
Assert.assertEquals(PayloadGenerator.getJsonPayloadToString
(Constants.MobileDeviceManagement.VIEW_DEVICE_RESPONSE_PAYLOAD_FILE_NAME), response.getBody());

@ -16,40 +16,58 @@
* under the License.
*/
package org.wso2.mdm.integration.mobileDevice;
package org.wso2.iot.integration.mobileDevice;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.junit.experimental.theories.Theories;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
import java.util.concurrent.TimeUnit;
/**
* This class contains integration tests for API Mobile Device Management with No Devices Enrolled.
*/
public class MobileDeviceManagementWithNoDevices extends TestBase {
private MDMHttpClient client;
private IOTHttpClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
/**
* @BeforeSuite annotation is added to run this verification before the test suite starts.
* As in IoT server, apis are published after the server startup. Due to that the generated token doesn't get
* required scope.
* This method delays test suit startup until the tokens get required scopes.
* @throws Exception
*/
@BeforeSuite
public void verifyApiPublishing() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
while (!checkScopes(Constants.APIApplicationRegistration.PERMISSION_LIST)) {
TimeUnit.SECONDS.sleep(5);
}
}
@BeforeClass(alwaysRun = true, groups = { Constants.MobileDeviceManagement.MOBILE_DEVICE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
this.client = new MDMHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@Test(description = "Test count devices with no added devices")
public void testCountDevicesWithNoDevices() throws Exception {
MDMResponse response = client.get(Constants.MobileDeviceManagement.GET_DEVICE_COUNT_ENDPOINT);
IOTResponse response = client.get(Constants.MobileDeviceManagement.GET_DEVICE_COUNT_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
Assert.assertEquals(Constants.ZERO, response.getBody());
Assert.assertEquals(Constants.MobileDeviceManagement.NO_DEVICE, response.getBody());
}
@Test(description = "Test view devices with no added devices")
public void testViewDevicesWithNoDevices() throws Exception {
MDMResponse response = client.get(Constants.MobileDeviceManagement.GET_ALL_DEVICES_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
Assert.assertEquals(response.getBody(), Constants.NULL);
private boolean checkScopes(String permissionsList) throws Exception {
String tokenString = OAuthUtil.getScopes(backendHTTPSURL, backendHTTPSURL);
return tokenString.contains(permissionsList);
}
}

@ -15,7 +15,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.notification;
package org.wso2.iot.integration.notification;
import com.google.gson.JsonObject;
import junit.framework.Assert;
@ -24,7 +24,7 @@ import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for notification management backend services.

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.operation;
package org.wso2.iot.integration.operation;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
@ -25,7 +25,7 @@ import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -35,14 +35,14 @@ import org.testng.annotations.Test;
public class OperationManagement extends TestBase {
private JsonObject device;
private MDMHttpClient client;
private IOTHttpClient client;
private RestClient rclient;
@BeforeClass(alwaysRun = true, groups = {Constants.OperationManagement.OPERATION_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.OperationManagement.OPERATION_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
this.client = new MDMHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.rclient = new RestClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@ -52,7 +52,7 @@ public class OperationManagement extends TestBase {
Constants.AndroidEnrollment.ENROLLMENT_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST);
enrollmentData.addProperty(Constants.DEVICE_IDENTIFIER_KEY, Constants.DEVICE_ID);
MDMResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData.toString());
IOTResponse response = client.post(Constants.AndroidEnrollment.ENROLLMENT_ENDPOINT, enrollmentData.toString());
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
AssertUtil.jsonPayloadCompare(PayloadGenerator.getJsonPayload(
Constants.AndroidEnrollment.ENROLLMENT_RESPONSE_PAYLOAD_FILE_NAME,
@ -75,7 +75,7 @@ public class OperationManagement extends TestBase {
@Test(dependsOnMethods = {"testInstallApps"}, description = "Test get device apps with wrong Device ID")
public void testGetDeviceAppsWithWrongDeviceID() throws Exception {
MDMResponse response = client.get(Constants.OperationManagement.GET_DEVICE_APPS_ENDPOINT +
IOTResponse response = client.get(Constants.OperationManagement.GET_DEVICE_APPS_ENDPOINT +
Constants.NUMBER_NOT_EQUAL_TO_DEVICE_ID + Constants.OperationManagement.PATH_APPS);
Assert.assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, response.getStatus());
@ -83,7 +83,7 @@ public class OperationManagement extends TestBase {
@Test(dependsOnMethods = {"testInstallApps"}, description = "Test get operations for device with wrong Device ID")
public void testGetDeviceOperationsWithWrongDeviceID() throws Exception {
MDMResponse response = client.get(Constants.OperationManagement.GET_DEVICE_OPERATIONS_ENDPOINT + Constants.DEVICE_IMEI);
IOTResponse response = client.get(Constants.OperationManagement.GET_DEVICE_OPERATIONS_ENDPOINT + Constants.DEVICE_IMEI);
Assert.assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, response.getStatus());
}
}

@ -15,33 +15,33 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.policy;
package org.wso2.iot.integration.policy;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for policy management backend services.
*/
public class PolicyManagement extends TestBase {
private MDMHttpClient client;
private IOTHttpClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.PolicyManagement.POLICY_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.PolicyManagement.POLICY_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
this.client = new MDMHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@Test(description = "Test add policy.")
public void testAddPolicy() throws Exception {
MDMResponse response = client.post(Constants.PolicyManagement.ADD_POLICY_ENDPOINT,
IOTResponse response = client.post(Constants.PolicyManagement.ADD_POLICY_ENDPOINT,
PayloadGenerator.getJsonPayload(Constants.PolicyManagement.POLICY_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST).toString());
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
@ -52,7 +52,7 @@ public class PolicyManagement extends TestBase {
@Test(description = "Test view policy list.", dependsOnMethods = {"testAddPolicy"})
public void testViewPolicyList() throws Exception {
MDMResponse response = client.get(Constants.PolicyManagement.VIEW_POLICY_LIST_ENDPOINT);
IOTResponse response = client.get(Constants.PolicyManagement.VIEW_POLICY_LIST_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
}
@ -60,7 +60,7 @@ public class PolicyManagement extends TestBase {
@Test(description = "Test update policy.", dependsOnMethods = {"testViewPolicyList"})
public void testUpdatePolicy() throws Exception {
MDMResponse response = client.put(Constants.PolicyManagement.UPDATE_POLICY_ENDPOINT,
IOTResponse response = client.put(Constants.PolicyManagement.UPDATE_POLICY_ENDPOINT,
PayloadGenerator.getJsonPayload(
Constants.PolicyManagement.POLICY_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_PUT).toString());
@ -72,7 +72,7 @@ public class PolicyManagement extends TestBase {
@Test(description = "Test remove policy.", dependsOnMethods = {"testUpdatePolicy"})
public void testRemovePolicy() throws Exception {
MDMResponse response = client.post(Constants.PolicyManagement.REMOVE_POLICY_ENDPOINT,
IOTResponse response = client.post(Constants.PolicyManagement.REMOVE_POLICY_ENDPOINT,
Constants.PolicyManagement.REMOVE_POLICY_PAYLOAD_FILE_NAME);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
Assert.assertEquals(PayloadGenerator.getJsonPayload(Constants.PolicyManagement.POLICY_RESPONSE_PAYLOAD_FILE_NAME,

@ -15,33 +15,32 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.wso2.mdm.integration.role;
package org.wso2.iot.integration.role;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for role management backend services.
*/
public class RoleManagement extends TestBase {
private MDMHttpClient client;
private IOTHttpClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.RoleManagement.ROLE_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.RoleManagement.ROLE_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);
this.client = new MDMHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
this.client = new IOTHttpClient(backendHTTPSURL, Constants.APPLICATION_JSON, accessTokenString);
}
@Test(description = "Test add role.")
public void testAddRole() throws Exception {
MDMResponse response = client.post(Constants.RoleManagement.ADD_ROLE_ENDPOINT,
IOTResponse response = client.post(Constants.RoleManagement.ADD_ROLE_ENDPOINT,
PayloadGenerator.getJsonPayload(Constants.RoleManagement.ROLE_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_POST).toString());
Assert.assertEquals(HttpStatus.SC_CREATED, response.getStatus());
@ -49,7 +48,7 @@ public class RoleManagement extends TestBase {
@Test(description = "Test update permission role.", dependsOnMethods = {"testAddRole"})
public void testUpdateRolePermission() throws Exception {
MDMResponse response = client.put(Constants.RoleManagement.UPDATE_ROLE_PERMISSION_ENDPOINT,
IOTResponse response = client.put(Constants.RoleManagement.UPDATE_ROLE_PERMISSION_ENDPOINT,
PayloadGenerator.getJsonPayload(Constants.RoleManagement.UPDATE_ROLE_PERMISSION_PAYLOAD_FILE_NAME,
Constants.HTTP_METHOD_PUT).toString());
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
@ -57,7 +56,7 @@ public class RoleManagement extends TestBase {
@Test(description = "Test remove user.", dependsOnMethods = {"testUpdateRolePermission"})
public void testRemoveRole() throws Exception {
MDMResponse response = client.delete(Constants.RoleManagement.REMOVE_ROLE_ENDPOINT);
IOTResponse response = client.delete(Constants.RoleManagement.REMOVE_ROLE_ENDPOINT);
Assert.assertEquals(HttpStatus.SC_OK, response.getStatus());
}
}

@ -16,7 +16,7 @@
* under the License.
*/
package org.wso2.mdm.integration.user;
package org.wso2.iot.integration.user;
import junit.framework.Assert;
import org.apache.commons.httpclient.HttpStatus;
@ -24,7 +24,7 @@ import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.TestUserMode;
import org.wso2.carbon.automation.test.utils.http.client.HttpResponse;
import org.wso2.mdm.integration.common.*;
import org.wso2.iot.integration.common.*;
/**
* This class contains integration tests for user management backend services.
@ -33,7 +33,7 @@ public class UserManagement extends TestBase {
private RestClient client;
@BeforeClass(alwaysRun = true, groups = {Constants.UserManagement.USER_MANAGEMENT_GROUP})
@BeforeClass(alwaysRun = true, groups = { Constants.UserManagement.USER_MANAGEMENT_GROUP})
public void initTest() throws Exception {
super.init(TestUserMode.SUPER_TENANT_ADMIN);
String accessTokenString = "Bearer " + OAuthUtil.getOAuthToken(backendHTTPSURL, backendHTTPSURL);

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~ 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
@ -16,8 +16,7 @@
~ specific language governing permissions and limitations
~ under the License.
-->
<automation xmlns="automationSchema.xsd">
<automation xmlns="automationXMLSchema.xsd">
<!-- ================================================= -->
<!-- Parameters -->
<!-- ================================================= -->
@ -25,15 +24,11 @@
<!--
Change this to edit wait time for test artifact deployment
-->
<deploymentDelay>60000</deploymentDelay>
<deploymentDelay>100000</deploymentDelay>
<!--
Change this to product|platform/cloud to execute test on specific environment
Change this to standalone|platform|all to execute test on specific environment
-->
<executionEnvironment>standalone</executionEnvironment>
<!--
Change this to user/tenant to execute test with user mode or tenant mode
-->
<multiTenantMode>false</multiTenantMode>
<!--
Change this to true if you want to generate coverage statistics
-->
@ -50,7 +45,7 @@
<selenium>
<!-- Change to enable remote webDriver -->
<!-- URL of remote webDriver server -->
<remoteDriverUrl enable="true">http://10.100.2.51:4444/wd/hub/</remoteDriverUrl>
<remoteDriverUrl enable="false">http://10.100.2.51:4444/wd/hub/</remoteDriverUrl>
<!-- Type of the browser selenium tests are running" -->
<browser>
@ -169,39 +164,35 @@
<!--
cluster instance details to be used to platform test execution
-->
<productGroup name="MDM" clusteringEnabled="false" default="true">
<productGroup name="IOT" clusteringEnabled="false" default="true">
<instance name="mdm" type="standalone" nonBlockingTransportEnabled="false">
<instance name="iot001" type="standalone" nonBlockingTransportEnabled="false">
<hosts>
<host type="default">localhost</host>
</hosts>
<ports>
<port type="http">10863</port>
<port type="https">10543</port>
<port type="http">9763</port>
<!--<port type="https">9446</port>-->
<port type="https">9443</port>
<!--<port type="https">9445</port>-->
</ports>
<properties>
<properties>
<!--<property name="webContext">admin</property>-->
</properties>
</instance>
</productGroup>
</platform>
<listenerExtensions>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
<platformExecutionManager>
<extentionClasses>
<class>
<name>
org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension
</name>
<parameter name="-DportOffset" value="1100"/>
<!--<parameter name="cmdArg" value="debug 5005" />-->
</class>
<class>
<name>
org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension
</name>
<!--<name>org.wso2.iot.integration.extensions.BrokerServerExtension</name>-->
<name>org.wso2.iot.integration.extensions.IOTServerExtension</name>
<!--<name>org.wso2.iot.integration.extensions.AnalyticsServerExtension</name>-->
<name>org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension</name>
</class>
</extentionClasses>
</platformExecutionManager>
@ -209,13 +200,13 @@
<PlatformSuiteManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
<!--<className>org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension</className>-->
</extentionClasses>
</PlatformSuiteManager>
<PlatformAnnotationTransferManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extentions.servers.wso2server.Wso2ServerExtention</className>-->
<!--<className>org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension</className>-->
</extentionClasses>
</PlatformAnnotationTransferManager>

@ -1,11 +1,41 @@
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_
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_

@ -0,0 +1,186 @@
{
"POST": {
"id": 101234,
"name": "androiddevice1234",
"type": "android",
"description": "this is an android device",
"deviceIdentifier": "d24f870f390352a41234",
"enrolmentInfo": {
"id": 101234,
"device": {
},
"dateOfEnrolment": 0,
"dateOfLastUpdate": 0,
"ownership": "BYOD",
"status": "CREATED",
"owner": "admin"
},
"features": [
{
"id": 10,
"code": "aaaa1111",
"name": "newfeature1",
"description": "this is the new feature 1",
"deviceType": "android",
"metadataEntries": [
{
"id": 10,
"value": {
}
}
]
}
],
"properties": [
{
"name": "property1",
"value": "value1"
}
],
"deviceInfo": {
"deviceModel": "S8",
"vendor": "SAMSUNG",
"osVersion": "5.1",
"batteryLevel": 1,
"internalTotalMemory": 32,
"internalAvailableMemory": 24,
"externalTotalMemory": 64,
"externalAvailableMemory": 60,
"operator": "dialog",
"connectionType": "GSM",
"mobileSignalStrength": 1,
"ssid": "picassowifi",
"cpuUsage": 0,
"totalRAMMemory": 2,
"availableRAMMemory": 1,
"pluggedIn": false,
"location": {
"deviceId": 0,
"deviceIdentifier": {
"id": "string",
"type": "string"
},
"latitude": 0,
"longitude": 0,
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string"
},
"deviceDetailsMap": {
},
"imei": "string",
"imsi": "string"
},
"applications": [
{
"id": 0,
"platform": "string",
"category": "string",
"name": "string",
"locationUrl": "string",
"imageUrl": "string",
"version": "string",
"type": "string",
"appProperties": {
},
"applicationIdentifier": "string",
"memoryUsage": 0
}
]
},
"PUT": {
"id": 101234,
"name": "androiddevice1234",
"type": "android",
"description": "this is an android device",
"deviceIdentifier": "d24f870f390352a41234",
"enrolmentInfo": {
"id": 101234,
"device": {
},
"dateOfEnrolment": 0,
"dateOfLastUpdate": 0,
"ownership": "BYOD",
"status": "CREATED",
"owner": "admin"
},
"features": [
{
"id": 10,
"code": "aaaa1111",
"name": "newfeature2",
"description": "this is the new feature 2",
"deviceType": "android",
"metadataEntries": [
{
"id": 10,
"value": {
}
}
]
}
],
"properties": [
{
"name": "property2",
"value": "value2"
}
],
"deviceInfo": {
"deviceModel": "S8",
"vendor": "SAMSUNG",
"osVersion": "5.1",
"batteryLevel": 1,
"internalTotalMemory": 32,
"internalAvailableMemory": 24,
"externalTotalMemory": 64,
"externalAvailableMemory": 60,
"operator": "dialog",
"connectionType": "GSM",
"mobileSignalStrength": 1,
"ssid": "picassowifi",
"cpuUsage": 0,
"totalRAMMemory": 2,
"availableRAMMemory": 1,
"pluggedIn": false,
"location": {
"deviceId": 0,
"deviceIdentifier": {
"id": "string",
"type": "string"
},
"latitude": 0,
"longitude": 0,
"street1": "string",
"street2": "string",
"city": "string",
"state": "string",
"zip": "string",
"country": "string"
},
"deviceDetailsMap": {
},
"imei": "string",
"imsi": "string"
},
"applications": [
{
"id": 0,
"platform": "string",
"category": "string",
"name": "string",
"locationUrl": "string",
"imageUrl": "string",
"version": "string",
"type": "string",
"appProperties": {
},
"applicationIdentifier": "string",
"memoryUsage": 0
}
]
}
}

@ -0,0 +1,19 @@
{
"POST": {
"responseCode": "OK",
"responseMessage": "Android device, which carries the id \u0027d24f870f390352a41234\u0027 has successfully been enrolled"
},
"GET": {
"responseCode": "OK",
"responseMessage": "Android device that carries the id \u0027d24f870f390352a41234\u0027 is enrolled"
},
"PUT": {
"responseCode": "Accepted",
"responseMessage": "Enrollment of Android device that carries the id \u0027d24f870f390352a41234\u0027 has successfully updated"
},
"DELETE" : {
"responseCode":"OK",
"responseMessage":"Android device that carries id \u0027d24f870f390352a41234\u0027 has successfully dis-enrolled"
}
}

@ -0,0 +1,3 @@
{
"default perm:admin-groups:count perm:admin-groups:view perm:admin-users:view perm:admin:certificates:add perm:admin:certificates:delete perm:admin:certificates:details perm:admin:certificates:verify perm:admin:certificates:view perm:admin:devices:view perm:android:blacklist-applications perm:android:change-lock-code perm:android:clear-password perm:android:configure-vpn perm:android:configure-wifi perm:android:control-camera perm:android:disenroll perm:android:encrypt-storage perm:android:enroll perm:android:enterprise-wipe perm:android:info perm:android:install-application perm:android:location perm:android:lock-devices perm:android:logcat perm:android:manage-configuration perm:android:mute perm:android:reboot perm:android:ring perm:android:send-notification perm:android:set-password-policy perm:android:set-webclip perm:android:uninstall-application perm:android:unlock-devices perm:android:update-application perm:android:upgrade-firmware perm:android:view-configuration perm:android:wipe perm:applications:install perm:applications:uninstall perm:dashboard:by-groups perm:dashboard:count-overview perm:dashboard:details perm:dashboard:device-counts perm:dashboard:feature-non-compliant perm:dashboard:filtered-count perm:dashboard:non-compliant perm:dashboard:non-compliant-count perm:dashboard:vulnerabilities perm:device-types:features perm:device-types:types perm:devices:applications perm:devices:compliance-data perm:devices:delete perm:devices:details perm:devices:effective-policy perm:devices:features perm:devices:operations perm:devices:search perm:devices:update perm:devices:view perm:get-activity perm:groups:add perm:groups:assign perm:groups:count perm:groups:device perm:groups:devices perm:groups:devices-add perm:groups:devices-count perm:groups:devices-remove perm:groups:groups perm:groups:groups-view perm:groups:remove perm:groups:roles perm:groups:share perm:groups:update perm:manage-configuration perm:notifications:mark-checked perm:notifications:view perm:policies:activate perm:policies:changes perm:policies:deactivate perm:policies:get-details perm:policies:get-policy-details perm:policies:manage perm:policies:priorities perm:policies:remove perm:policies:update perm:roles:add perm:roles:add-users perm:roles:create-combined-role perm:roles:delete perm:roles:details perm:roles:permissions perm:roles:update perm:roles:view perm:users:add perm:users:count perm:users:credentials perm:users:delete perm:users:details perm:users:is-exist perm:users:roles perm:users:search perm:users:send-invitation perm:users:update perm:users:user-details perm:view-configuration"
}

@ -1,5 +1,5 @@
<!--
~ Copyright (c) 2016, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
~ 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
@ -18,9 +18,8 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="DssTestSuite" parallel="false">
<suite name="iot-suite-initializer">
<parameter name="useDefaultListeners" value="false"/>
<listeners>
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestExecutionListener"/>
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestManagerListener"/>
@ -29,10 +28,84 @@
<listener class-name="org.wso2.carbon.automation.engine.testlisteners.TestTransformerListener"/>
</listeners>
<test name="IOT-Integration-Test" parallel="false" verbose="2">
<test name="mobile-device-mgt-no-devices" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.iot.integration.mobileDevice.MobileDeviceManagementWithNoDevices"/>
</classes>
</test>
<test name="android-enrollment" preserve-order="true" parallel="false">
<classes>
<class name="org.wso2.iot.integration.device.enrollment.AndroidEnrollment"/>
</classes>
</test>
</suite>
<!--<test name="android-operation" preserve-order="false" parallel="true">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.device.operation.AndroidOperation"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="windows-enrollment" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.device.enrollment.WindowsEnrollment"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="android-device-mgt" preserve-order="false" parallel="true">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.device.mgt.AndroidDeviceManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="android-configuration" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.device.configuration.AndroidConfigurationManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="android-policy" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.device.policy.AndroidPolicy"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="operation-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.operation.OperationManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="mobile-device-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.mobileDevice.MobileDeviceManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="user-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.user.UserManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="role-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.role.RoleManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="policy-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.policy.PolicyManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="feature-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.feature.FeatureManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="license-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.license.LicenseManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="configuration-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.configuration.ConfigurationManagement"/>-->
<!--</classes>-->
<!--</test>-->
<!--<test name="notification-mgt" preserve-order="true" parallel="false">-->
<!--<classes>-->
<!--<class name="org.wso2.iot.integration.notification.NotificationManagement"/>-->
<!--</classes>-->
<!--</test>-->
</suite>

@ -21,7 +21,7 @@
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-integration</artifactId>
<version>3.0.0-SNAPSHOT</version>
<version>3.1.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>

@ -1,274 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ Copyright (c) 2014, 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.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot-integration</artifactId>
<version>3.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>WSO2 IoT - Integration Test UI Module</name>
<artifactId>org.wso2.carbon.iot.core.integration.test.ui.integration</artifactId>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<inherited>false</inherited>
<configuration>
<!--argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m -Xdebug -Xnoagent
-Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
</argLine-->
<argLine>-Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m</argLine>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng-server-mgt.xml</suiteXmlFile>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
<skipTests>${skipUiTests}</skipTests>
<systemProperties>
<property>
<name>maven.test.haltafterfailure</name>
<value>false</value>
</property>
<property>
<name>java.io.tmpdir</name>
<value>${basedir}/target/</value>
</property>
<property>
<name>carbon.zip</name>
<value>
${basedir}/../../distribution/target/wso2iot-${project.version}.zip
</value>
</property>
<property>
<name>framework.resource.location</name>
<value>
${basedir}/src/test/resources/
</value>
</property>
<property>
<name>server.list</name>
<value>
EMM
</value>
</property>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<sec.verifier.dir>${basedir}/target/security-verifier/</sec.verifier.dir>
<emma.home>${basedir}/target/emma</emma.home>
<instr.file>${basedir}/src/test/resources/instrumentation.txt</instr.file>
<filters.file>${basedir}/src/test/resources/filters.txt</filters.file>
<emma.output>${basedir}/target/emma</emma.output>
</systemProperties>
<workingDirectory>${basedir}/target</workingDirectory>
</configuration>
</plugin>
<plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-emma-dependencies</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/emma</outputDirectory>
<includeTypes>jar</includeTypes>
<includeArtifactIds>emma</includeArtifactIds>
</configuration>
</execution>
<execution>
<id>copy-secVerifier</id>
<phase>compile</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/security-verifier</outputDirectory>
<includeTypes>aar</includeTypes>
<includeArtifactIds>SecVerifier</includeArtifactIds>
<stripVersion>true</stripVersion>
</configuration>
</execution>
<execution>
<id>unpack-mar-jks</id>
<phase>compile</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.wso2.iot</groupId>
<artifactId>wso2iot</artifactId>
<version>${project.version}</version>
<type>zip</type>
<overWrite>true</overWrite>
<outputDirectory>${basedir}/target/tobeCopied/</outputDirectory>
<includes>**/*.jks,**/*.mar,**/axis2_client.xml</includes>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources-jks</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/keystores/products
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2emm-${project.version}/repository/resources/security/
</directory>
<includes>
<include>**/*.jks</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-stratos-jks</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/keystores/stratos
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/resources/security/
</directory>
<includes>
<include>**/*.jks</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-axis2files</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/axis2config
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/conf/axis2/
</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources-mar</id>
<phase>compile</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/src/test/resources/client/modules
</outputDirectory>
<resources>
<resource>
<directory>
${basedir}/target/tobeCopied/wso2iot-${project.version}/repository/deployment/client/modules
</directory>
<includes>
<include>**/*.mar</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.wso2.iot</groupId>
<artifactId>org.wso2.carbon.iot.core.integration.ui.pages</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.engine</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automation</groupId>
<artifactId>org.wso2.carbon.automation.test.utils</artifactId>
</dependency>
<dependency>
<groupId>org.wso2.carbon.automationutils</groupId>
<artifactId>org.wso2.carbon.integration.common.extensions</artifactId>
</dependency>
</dependencies>
<properties>
<skipUiTests>true</skipUiTests>
</properties>
</project>

@ -1,31 +0,0 @@
/*
* 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.
*/
package org.wso2.emm.ui.integration.test;
public class Constants {
public static final String MDM_LOGIN_PATH = "/mdm/login";
public static final String LOGIN_GROUP = "login-group";
public static final String MDM_ROLES_URL = "/mdm/roles";
public static final String MDM_USER_ADD_URL = "/mdm/users/add-user";
public static final String MDM_USER_URL = "/mdm/users/";
public static final String MDM_ROLES_EDIT_URL = "/mdm/roles/edit-role/";
public static final String MDM_PLATFORM_CONFIG_URL = "/mdm/platform-configuration";
public static final String MDM_NOTIFICATION_URL = "/mdm/notification-listing";
public static final String MDM_HOME_URL = "/mdm";
}

@ -1,65 +0,0 @@
/*
* 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.
*/
package org.wso2.emm.ui.integration.test;
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.iot.integration.ui.pages.EMMIntegrationUiBaseTestCase;
import org.wso2.iot.integration.ui.pages.platformConfiguration.PlatformConfiguration;
public class GeneralConfigurationTestCases extends EMMIntegrationUiBaseTestCase {
private static String configValue = "3600";
private WebDriver driver;
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
}
@Test(description = "verify updating general platform configuration in emm")
public void testChangeGeneralConfig() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_PLATFORM_CONFIG_URL);
PlatformConfiguration platformConfiguration = new PlatformConfiguration(driver);
platformConfiguration.changeGeneralConfig(configValue);
}
@Test(description = "verify updating android platform configuration in emm")
public void testChangeAndroidConfig() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_PLATFORM_CONFIG_URL);
PlatformConfiguration platformConfiguration = new PlatformConfiguration(driver);
platformConfiguration.changeAndroidConfig(configValue);
}
@Test(description = "verify updating windows platform configuration in emm")
public void testChangeWindowsConfig() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_PLATFORM_CONFIG_URL);
PlatformConfiguration platformConfiguration = new PlatformConfiguration(driver);
platformConfiguration.changeWindowsConfig(configValue);
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -1,45 +0,0 @@
/*
* 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.
*/
package org.wso2.emm.ui.integration.test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.login.MDMLoginPage;
public class LoginUtils {
private static UIElementMapper uiElementMapper;
public static void login(WebDriver driver, AutomationContext automationContext,
String webAppURL) throws Exception {
uiElementMapper = UIElementMapper.getInstance();
driver.get(webAppURL + Constants.MDM_LOGIN_PATH);
MDMLoginPage test = new MDMLoginPage(driver);
WebElement
userNameField = driver.findElement(By.name(uiElementMapper.getElement("emm.login.username")));
WebElement passwordField = driver.findElement(By.name(uiElementMapper.getElement("emm.login.password")));
userNameField
.sendKeys(new CharSequence[]{automationContext.getSuperTenant().getTenantAdmin().getUserName()});
passwordField.sendKeys(new CharSequence[]{
automationContext.getSuperTenant().getTenantAdmin().getPassword()});
driver.findElement(By.xpath(uiElementMapper.getElement("emm.login.button.xpath"))).click();
}
}

@ -1,58 +0,0 @@
/*
* 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.
*/
package org.wso2.emm.ui.integration.test;
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.iot.integration.ui.pages.EMMIntegrationUiBaseTestCase;
import org.wso2.iot.integration.ui.pages.Notification.NotificationView;
public class NotificationValidationTestCase extends EMMIntegrationUiBaseTestCase {
private static String notificationValue = "0";
private WebDriver driver;
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
}
// @Test(description = "verify notification count in emm")
// public void viewNotificationCount() throws Exception {
// driver.get(getWebAppURL() + Constants.MDM_HOME_URL);
// HomePage homePage = new HomePage(driver);
// homePage.checkNotificationCount(notificationValue);
// }
@Test(description = "verify notification visibility in emm")
public void verifyNotificationView() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_NOTIFICATION_URL);
NotificationView notificationView = new NotificationView(driver);
notificationView.viewNotification();
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -1,64 +0,0 @@
/*
* 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.
*/
package org.wso2.emm.ui.integration.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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.iot.integration.ui.pages.EMMIntegrationUiBaseTestCase;
import org.wso2.iot.integration.ui.pages.role.EditRolePage;
import org.wso2.iot.integration.ui.pages.role.RoleListPage;
public class RoleTestCases extends EMMIntegrationUiBaseTestCase {
private static final Log log = LogFactory.getLog(RoleTestCases.class);
private static String roleName = "role-manager";
private static String roleNameEdit = "role-wso2-manager";
private WebDriver driver;
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
}
@Test(description = "verify add role to emm")
public void testAddRole() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_ROLES_URL);
RoleListPage roleListPage = new RoleListPage(driver, Constants.MDM_ROLES_URL);
roleListPage.addRole(roleName);
}
@Test(description = "verify edit role to emm", dependsOnMethods = {"testAddRole"})
public void testEditRole() throws Exception {
driver.get(getWebAppURL() + Constants.MDM_ROLES_EDIT_URL + roleName);
EditRolePage rolePage = new EditRolePage(driver);
rolePage.editRole(roleNameEdit);
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save