Integration tests for IOT server

application-manager-new
Menaka Madushanka 9 years ago
parent 2e7637eda5
commit f91f4a3555

@ -33,11 +33,11 @@
<packaging>pom</packaging>
<modules>
<module>tests-artifacts</module>
<!--<module>tests-artifacts</module>-->
<module>tests-common</module>
<module>tests-integration</module>
<module>tests-ui-integration</module>
<module>tests-platform</module>
<!--<module>tests-integration</module>-->
<!--<module>tests-ui-integration</module>-->
<module>tests-iot-web-ui</module>
</modules>
<!--<build>-->

@ -31,9 +31,9 @@
<name>WSO2 IoT Server - Integration Test Common</name>
<modules>
<module>admin-clients</module>
<module>integration-test-utils</module>
<module>ui-pages</module>
<!--<module>admin-clients</module>-->
<!--<module>integration-test-utils</module>-->
<module>web-ui-pages</module>
</modules>
</project>

@ -0,0 +1,116 @@
<?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>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>org.wso2.carbon.iot.integration.ui.pages</artifactId>
<packaging>jar</packaging>
<name>WSO2 IoT Server - Integration Test Common Web 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>

@ -0,0 +1,57 @@
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;
/**
* Created by menaka on 1/19/16.
*
*/
public class IOTIntegrationUIBaseTestCase {
private static final Log log = LogFactory.getLog(IOTIntegrationUIBaseTestCase.class);
protected AutomationContext automationContext;
protected void init() throws IOException, XMLStreamException, XPathExpressionException {
automationContext = new AutomationContext("IOT", "iot001", TestUserMode.SUPER_TENANT_ADMIN);
}
protected String getBackendURL() throws XPathExpressionException {
return automationContext.getContextUrls().getBackEndUrl();
}
protected String getWebAppURL() throws XPathExpressionException {
return automationContext.getContextUrls().getWebAppURL();
}
protected String getSessionCookie(AutomationContext context)
throws RemoteException, XPathExpressionException,
LoginAuthenticationExceptionException {
AuthenticatorClient authenticationAdminClient = new AuthenticatorClient(context.getContextUrls().getBackEndUrl());
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);
}
}

@ -0,0 +1,51 @@
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 the mapper file and load the UI elements into Properties object.
*/
public class UIElementMapper {
public static final Properties uiPropertiies = 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) {
uiPropertiies.load(inputStream);
inputStream.close();
return uiPropertiies;
}
return null;
}
public String getElement (String key) {
if (uiPropertiies != null) {
return uiPropertiies.getProperty(key);
}
return null;
}
}

@ -0,0 +1,23 @@
package org.wso2.iot.integration.ui.pages.enroll;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.WebDriver;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
/**
* Device Enrollment page for new user
*/
public class EnrollDevicePage {
private static final Log log = LogFactory.getLog(EnrollDevicePage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public EnrollDevicePage(WebDriver driver) throws IOException{
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
}
}

@ -0,0 +1,69 @@
package org.wso2.iot.integration.ui.pages.groups;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
/**
* Add group page of iot server
*/
public class DeviceAddGroupPage {
private static final Log log = LogFactory.getLog(DeviceAddGroupPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public DeviceAddGroupPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!driver.findElement(By.xpath
(uiElementMapper.getElement("iot.device.group.addNewGroup.xpath"))).getText().contains("ADD NEW GROUP")){
throw new IllegalStateException("This is not the Add Group page");
}
}
public DeviceGroupsPage addNewGroup (String name, String description) throws Exception{
WebElement nameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.name.id")));
WebElement descriptionField = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.description.id")));
WebElement addGroupButton = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.addButton.id")));
nameField.sendKeys(name);
descriptionField.sendKeys(description);
addGroupButton.click();
return new DeviceGroupsPage(driver);
}
public String submitEmptyForm() {
WebElement nameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.name.id")));
WebElement descriptionField = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.description.id")));
WebElement addGroupButton = driver.findElement(By.id(
uiElementMapper.getElement("iot.device.group.addGroupForm.addButton.id")));
nameField.sendKeys("");
descriptionField.sendKeys("");
addGroupButton.click();
return driver.findElement(By.xpath(
uiElementMapper.getElement("iot.device.groups.add.emptyfrom.error"))).getText();
}
}

@ -0,0 +1,58 @@
package org.wso2.iot.integration.ui.pages.groups;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* Created by menaka on 1/24/16.
*
*/
public class DeviceGroupsPage {
private static final Log log = LogFactory.getLog(DeviceGroupsPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public DeviceGroupsPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.textToBePresentInElement(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.device.groups.view.header.xpath"))), "GROUPS"))) {
throw new IllegalStateException("This is not the Groups page");
}
}
public DeviceAddGroupPage addNewGroup() throws Exception {
WebElement addNewGroupBtn = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.device.viewGroup.empty.addGroup.xpath")));
addNewGroupBtn.click();
return new DeviceAddGroupPage(driver);
}
public boolean isGroupCreated (String groupName) {
WebElement table = driver.findElement(By.id(uiElementMapper.getElement("iot.device.table.id")));
List<WebElement> allGroupNames = table.findElements(By.tagName("h4"));
List<String> groupsList = new ArrayList<>();
for (WebElement name : allGroupNames) {
groupsList.add(name.getText());
}
return groupsList.contains(groupName);
}
}

@ -0,0 +1,63 @@
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 org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
import org.wso2.iot.integration.ui.pages.groups.DeviceGroupsPage;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
import org.wso2.iot.integration.ui.pages.uesr.AddUserPage;
import org.wso2.iot.integration.ui.pages.uesr.UserListingPage;
import java.io.IOException;
public class IOTAdminDashboard {
private static final Log log = LogFactory.getLog(IOTHomePage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public IOTAdminDashboard(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
log.info(driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.dashboard.title.xpath"))).
getText());
// Check that we're on the right page.
if (!driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.dashboard.title.xpath"))).
getText().contains("DASHBOARD")) {
throw new IllegalStateException("This is not the home page");
}
}
public LoginPage logout() throws IOException {
driver.findElement(By.xpath("/html/body/header/div/div[2]/a/span[1]")).click();
WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath")));
logout.click();
return new LoginPage(driver);
}
public DeviceAddGroupPage addGroup() throws Exception {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.addButton.xpath"))).click();
return new DeviceAddGroupPage(driver);
}
public DeviceGroupsPage viewGroups() throws Exception {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.device.group.viewButton.xpath"))).click();
return new DeviceGroupsPage(driver);
}
public AddUserPage addUser() throws Exception {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.addButton.xpath"))).click();
return new AddUserPage(driver);
}
public UserListingPage viewUser() throws Exception {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.viewButton.xpath"))).click();
return new UserListingPage(driver);
}
//ToDo : Need to add device and policy methods
}

@ -0,0 +1,71 @@
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.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.enroll.EnrollDevicePage;
import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
import java.io.IOException;
/**
* In IOT server, this page is the Devices page for users.
* For admin this is the dashboard.
*/
public class IOTHomePage {
private static final Log log = LogFactory.getLog(IOTHomePage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public IOTHomePage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
WebDriverWait wait = new WebDriverWait(driver, 10);
if (!wait.until(ExpectedConditions.titleIs("Device Management | IoT Server"))) {
throw new IllegalStateException("This is not the home page");
}
}
public boolean checkUserName() throws Exception{
String name = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).getText();
return name.contains(uiElementMapper.getElement("iot.user.login.username"));
}
//To logout
public LoginPage logout() throws Exception {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.registered.name"))).click();
WebElement logout = driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.logout.link.xpath")));
logout.click();
return new LoginPage(driver);
}
//To enroll devices as user
public EnrollDevicePage enrollNewDevice() throws Exception{
driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click();
driver.findElement(By.xpath("iot.home.page.uuf-menu.devicemgt.xpath")).click();
driver.findElement(By.xpath("iot.home.enrollDevice.xpath")).click();
return new EnrollDevicePage(driver);
}
//To add new Device groups as user
public void goToGroupMgt() throws Exception {
driver.findElement(By.xpath("iot.home.page.uuf-menu.xpath")).click();
driver.findElement(By.xpath("iot.home.page.uuf-menu.groupmgt.xpath")).click();
}
public DeviceAddGroupPage addNewGroup() throws Exception {
driver.findElement(By.xpath("iot.device.viewGroup.empty.addGroup.xpath")).click();
return new DeviceAddGroupPage(driver);
}
//ToDo : To add policies
}

@ -0,0 +1,67 @@
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.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
import org.wso2.iot.integration.ui.pages.home.IOTHomePage;
import org.wso2.iot.integration.ui.pages.uesr.NewUserRegisterPage;
import java.io.IOException;
/**
* Login page of the iot server
*
*/
public class LoginPage {
private static final Log log = LogFactory.getLog(LoginPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public LoginPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.titleContains("Login | IoT Server"))) {
throw new IllegalStateException("This is not the Login page");
}
}
public IOTHomePage loginAsUser(String username, String password) throws IOException {
log.info("Login as " + username);
WebElement userNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.username.xpath")));
WebElement passwordField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.password.xpath")));
userNameField.sendKeys(username);
passwordField.sendKeys(password);
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.button.xpath"))).click();
return new IOTHomePage(driver);
}
public IOTAdminDashboard loginAsAdmin(String username, String password) throws IOException {
log.info("Login as " + username);
WebElement userNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.username.xpath")));
WebElement passwordField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.password.xpath")));
userNameField.sendKeys(username);
passwordField.sendKeys(password);
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.button.xpath"))).click();
return new IOTAdminDashboard(driver);
}
public NewUserRegisterPage registerNewUser() throws IOException {
WebElement registerLink = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.register.link.xpath")));
registerLink.click();
return new NewUserRegisterPage(driver);
}
}

@ -0,0 +1,53 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
public class AddUserPage {
private static final Log log = LogFactory.getLog(AddUserPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public AddUserPage(WebDriver driver) throws Exception {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
throw new IllegalStateException("This is not the Add User page");
}
}
public UserAddedPage createNewUser(String userName, String firstName, String lastName, String email) throws Exception {
WebElement userNameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.admin.addUser.username.id")));
WebElement firstNameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.admin.addUser.firstName.id")));
WebElement lastNameField = driver.findElement(By.id(
uiElementMapper.getElement("iot.admin.addUser.lastName.id")));
WebElement emailField = driver.findElement(By.id(
uiElementMapper.getElement("iot.admin.addUser.email.id")));
userNameField.sendKeys(userName);
firstNameField.sendKeys(firstName);
lastNameField.sendKeys(lastName);
emailField.sendKeys(email);
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath"))));
driver.findElement(By.xpath("//button[@id='add-user-btn']")).click();
return new UserAddedPage(driver);
}
}

@ -0,0 +1,34 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* Created by menaka on 2/8/16.
*
*/
public class EditUserPage {
private static final Log log = LogFactory.getLog(EditUserPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public EditUserPage(WebDriver driver) throws Exception {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
throw new IllegalStateException("This is not the Edit User page");
}
}
public void editUser(String password, String firstName, String lastName) {
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.add.input.password.xpath")));
}
}

@ -0,0 +1,58 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
import java.io.IOException;
/**
* Created by menaka on 1/19/16.
*/
public class NewUserRegisterPage {
private static final Log log = LogFactory.getLog(NewUserRegisterPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public NewUserRegisterPage(WebDriver driver) throws IOException {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
// Check that we're on the right page.
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.titleContains("Register | IoT Server"))){
throw new IllegalStateException("This is not the Register page");
}
}
public LoginPage addUser(String firstName, String lastName, String email, String userName, String password,
String
confirmPassword) throws IOException {
WebElement firstNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.firstname.xpath")));
WebElement lastNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.lastname.xpath")));
WebElement emailField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.email.xpath")));
WebElement userNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.username.xpath")));
WebElement passwordField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.password.xpath")));
WebElement passwordConfirmationField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.confirmpassword.xpath")));
firstNameField.sendKeys(firstName);
lastNameField.sendKeys(lastName);
emailField.sendKeys(email);
userNameField.sendKeys(userName);
passwordField.sendKeys(password);
passwordConfirmationField.sendKeys(confirmPassword);
driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.add.register.button.xpath"))).click();
return new LoginPage(driver);
}
}

@ -0,0 +1,37 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* Created by menaka on 1/27/16.
*
*/
public class UserAddedPage {
private static final Log log = LogFactory.getLog(UserAddedPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public UserAddedPage(WebDriver driver) throws Exception {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.view.btn.xpath"))).click();
// WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
// if (!driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.user.added.page.subtitle.xpath")))
// .getText().contains("User was added successfully.")){
// throw new IllegalStateException("This is not the User Added page");
// }
}
}

@ -0,0 +1,44 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.jexl2.UnifiedJEXL;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.PortableServer.THREAD_POLICY_ID;
import org.openqa.selenium.By;
import org.openqa.selenium.ElementNotVisibleException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
public class UserListingPage {
private static final Log log = LogFactory.getLog(UserListingPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public UserListingPage(WebDriver driver) throws Exception {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
if (!driver.findElement(By.xpath("//span[@class='page-sub-title']"))
.getText().contains("USERS")){
throw new IllegalStateException("This is not the User Listing page");
}
}
public UserListingPage deleteUser() throws Exception {
WebElement deleteBtn = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.deleteUser.btn.xpath")));
if (deleteBtn!=null){
deleteBtn.click();
} else {
return new UserListingPage(driver);
}
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.deleteUser.yes.link.xpath"))).click();
Thread.sleep(1000);
driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.deleteUser.success.link.xpath"))).click();
return new UserListingPage(driver);
}
}

@ -0,0 +1,30 @@
package org.wso2.iot.integration.ui.pages.uesr;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* Created by menaka on 2/8/16.
*/
public class ViewUserPage {
private static final Log log = LogFactory.getLog(ViewUserPage.class);
private WebDriver driver;
private UIElementMapper uiElementMapper;
public ViewUserPage (WebDriver driver) throws Exception {
this.driver = driver;
this.uiElementMapper = UIElementMapper.getInstance();
WebDriverWait webDriverWait = new WebDriverWait(driver, 10);
if (!webDriverWait.until(ExpectedConditions.titleContains("User Management | IoT Server"))){
throw new IllegalStateException("This is not the User view page");
}
}
}

@ -0,0 +1,614 @@
#
# 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.
#
# User registration and login details-----------------------------------------------------------------------------------
iot.user.add.firstname=firstname
iot.user.add.lastname=lastname
iot.user.add.username=username
iot.user.add.password=password
iot.user.add.email=username@wso2.com
iot.user.login.username=username
iot.user.login.password=password
# User registration and login ui----------------------------------------------------------------------------------------
iot.user.registered.name=/html/body/header/div/div[2]/a/span[1]
iot.user.add.input.firstname.xpath=//*[@id="first_name"]
iot.user.add.input.lastname.xpath=//*[@id="last_name"]
iot.user.add.input.username.xpath=//*[@id="user_name"]
iot.user.add.input.password.xpath=//*[@id="password"]
iot.user.add.input.confirmpassword.xpath=//*[@id="password_confirmation"]
iot.user.add.input.email.xpath=//*[@id="email"]
iot.user.add.register.button.xpath=//*[@id="add-user-btn"]
iot.user.login.input.username.xpath=//*[@id="signInForm"]/div[1]/input
iot.user.login.input.password.xpath=//*[@id="signInForm"]/div[2]/input
iot.user.login.button.xpath=//*[@id="signInForm"]/div[3]/button
iot.user.register.link.xpath=//*[@id="register-link-wrapper"]/a
# Devices page elements ------------------------------------------------------------------------------------------------
iot.home.page.uuf-menu.xpath=//*[@id="_uuf-navmenu-button"]
iot.home.page.uuf-menu.devicemgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[1]/a
iot.home.page.uuf-menu.groupmgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[2]/a
iot.home.page.uuf-menu.policymgt.xpath=//*[@id="_uuf-navmenu-items"]/ul/li[3]/a
iot.home.page.title.xpath=/html/body/div[3]/div[1]/div/span
iot.admin.dashboard.title.xpath=/html/body/div[3]/div[1]/div/span
iot.home.enrollDevice.xpath=//*[@id="ast-container"]/div/p/a
iot.user.logout.link.xpath=/html/body/header/div/div[2]/ul/li[3]/a
# Register page error elements -----------------------------------------------------------------------------------------
iot.user.register.firstname.error=first_name-error
iot.user.register.lastname.error=last_name-error
iot.user.register.username.error=user_name-error
iot.user.register.email.error=email-error
iot.user.register.password.error=password-error
iot.user.register.confirmPassword.error=password_confirmation-error
# Incorrect login Credentials ------------------------------------------------------------------------------------------
iot.user.login.username.error=username-error
iot.user.login.password.error=password-error
iot.user.login.incorrect.xpath=/html/body/div/div/div/div[1]
iot.user.login.shortPassword=password-error
iot.dashboard.device.div.xpath=/html/body/div[3]/div[7]/div[1]/div/div/div[1]
#Grouping ---------------------------------------------------------------
iot.device.group.addButton.xpath=/html/body/div[3]/div[2]/div[1]/div[2]/div/div/div[2]/div[2]/span[2]/a[2]
iot.device.group.viewButton.xpath=/html/body/div[3]/div[2]/div[1]/div[2]/div/div/div[2]/div[2]/span[2]/a[1]
iot.device.group.addNewGroup.xpath=/html/body/div[3]/div/div[1]/div/p[1]
iot.device.viewGroup.empty.addGroup.xpath=//*[@id="ast-container"]/div/p/a
iot.device.group.addGroupForm.name.id=name
iot.device.group.addGroupForm.description.id=description
iot.device.group.addGroupForm.addButton.id=add-group-btn
iot.device.groups.view.header.xpath=/html/body/div[3]/div[1]/div/span
iot.device.groups.add.emptyfrom.error=/html/body/div[3]/div/div[1]/div/span/strong
iot.device.table.id=group-grid
#Add user --------------------------------------------------------------------------------------------------------------
iot.admin.user.addButton.xpath=/html/body/div[3]/div[2]/div[1]/div[3]/div/div/div[2]/div[2]/span[2]/a[2]/span/i[2]
iot.admin.user.viewButton.xpath=/html/body/div[3]/div[2]/div[1]/div[3]/div/div/div[2]/div[2]/span[2]/a[1]/span/i[2]
iot.admin.user.added.page.subtitle.xpath="//p[@class='page-sub-title']"
iot.admin.addUser.username.id=username
iot.admin.addUser.firstName.id=firstname
iot.admin.addUser.lastName.id=lastname
iot.admin.addUser.email.id=emailAddress
iot.admin.addUser.roles.id=roles
iot.admin.addUser.add.btn.xpath=//*[@id="add-user-btn"]
iot.admin.addUser.view.btn.xpath=//*[@id="user-created-msg"]/div/button
iot.admin.deleteUser.btn.xpath=//*[@id="user1"]/td[5]/a[3]/span[1]/i[2]
iot.admin.deleteUser.yes.link.xpath=//a[@id="remove-user-yes-link"]
iot.admin.deleteUser.success.link.xpath=//a[@id="remove-user-success-link"]
iot.admin.addUser.formError.xpath=//*[@id="user-create-error-msg"]
#----- User view page heading ----------------------------------------
iot.user.view.page.heading.xpath=/html/body/div[3]/div[1]/div/label
#----- Editing a user-------------------------------------------------
iot.admin.viewUser.btn.xpath=//*[@id="user1"]/td[5]/a[1]/span[1]/i[2]
iot.admin.editUser.btn.xpath=//*[@id="userEditBtn"]
iot.admin.editUser.edit.btn.xpath=//*[@id="add-user-btn"]
#-----------------------------------------------------------------------------------------------------------------------
iot.user.delete.button=//*[@id="inosh"]/td[5]/a[3]
iot.user.delete.button.confirm=remove-user-yes-link
iot.user.delete.button.success=remove-user-success-link
iot.roles.add.button=appbar-btn-
iot.roles.add.rolename.input=rolename
iot.roles.add.role.button=add-role-btn
iot.roles.add.role.created.msg.div=role-created-msg
iot.roles.update.rolename.input=rolename
iot.roles.update.role.button=add-role-btn
iot.roles.update.role.created.msg.div=role-created-msg
iot.roles.update.role.created.success.msg=ROLE WAS UPDATED SUCCESSFULLY
iot.configuration.android.tab.identifier=id('androidConfigLink')
iot.configuration.widows.tab.identifier=id('windowsConfigLink')
iot.configuration.ios.tab.identifier=id('iosConfigLink')
iot.configuration.general.tab.identifier=id('generalConfigLink')
iot.configuration.general.input.monitoringFr.identifier=id('monitoring-config-frequency')
iot.configuration.general.button.save.identifier=id('monitoring-config-frequency')
iot.configuration.saved.lable.identifier=id('record-created-msg')
iot.configuration.saved.lable.val=Please click "Go back to configurations", if you wish to save another configuration or click "Exit" to complete the process and go back to the dashboard.
iot.configuration.saved.button.back.identifier=id('btnBack')
iot.configuration.saved.button.back.val=Go back to configurations
iot.configuration.saved.button.exit.identifier=id('btnExit')
iot.configuration.saved.button.exit.val=Exit
iot.configuration.android.select.identifier=id('android-config-notifier')
iot.configuration.android.input.identifier=id('android-config-notifier-frequency')
iot.configuration.android.button.save.identifier=id('save-android-btn')
iot.configuration.windows.input.identifier=id('windows-config-notifier-frequency')
iot.configuration.windows.button.save.identifier=id('save-windows-btn')
iot.notification.bubble.identifier=notification-bubble
iot.notification.unread.identifier=unReadNotifications
iot.notification.all.identifier=allNotifications
app.sign.in.button=button.btn
app.redMine.login.button.name=login
app.redMine.issue.button=New issue
app.redMine.issue.subject=issue_subject
app.redMine.issue.description=issue_description
app.redMine.issue.submit=commit
app.AddNew.App.link=Add New Application
new.app.add.app.name=applicationName
new.app.add.app.key=applicationKey
new.app.add.app.icon=icon
new.app.add.app.Description=applicationDescription
new.app.add.app.edit.Description=appDescriptionEdit_textarea
new.app.add.app.type=applicationType
app.issue.version.id=issue_fixed_version_id
app.database.db.environment.id=rssInstances
app.database.db.environment.user=js_db_user
app.database.db.environment.template=js_db_template
new.app.add.repository.type=repositoryType
create.new.app.button=appcreation
app.homepage.search.textBox=search
app.first.element.of.home.page=/html/body/div/div/article/section/ul/li[2]/div/h2/a/b
app.overview.page.app.type.id=apptype
app.overview.page.app.description.id=description
app.overview.page.repository.type.id=repotype
app.overview.page.app.owner.id=appOwner
app.overview.page.app.key.xpath=/html/body/div/div/article/section[2]/div/div/div/p
app.add.member.link=Add Members
app.add.member.name=allUsersList
app.invite.users= btn_nvite_users
app.add.add.to.list.button=addToListBtn
app.add.branch.link=Create Branch
app.add.second.branch.xpath=(//a[contains(text(),'Branch')])[2]
app.add.branch.version=create_branchtrunk
app.add.branch.button.xpath=//input[@value='Create Branch']
app.add.branch.two.button.xpath=(//input[@value='Create Branch'])[2]
app.navigate.Link=Repos & Builds
app.navigate.Governance.page.link=menu_governance
app.navigate.isue.page.link.id=menu_trackIssues
app.trunk.overview.xpath=/html/body/div/div/article/section[3]/div/ul/li/p/strong
app.trunk.build.status.xpath=/html/body/div/div/article/section[3]/div/ul/li[2]/p/span/strong
governance.page.firstElement.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li/div/strong
governance.page.firstElement.date.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[2]/div[2]/form/div/input
governance.page.date.save.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[2]/div[2]/form/div/button
governance.page.promote.key.xpath=/html/body/div/div[2]/article/section/div[2]/ul/li/ul/li[3]/div/ul/li[2]/a/span
code.completed.status=(//input[@id='registry.custom_lifecycle.checklist.option.0.item'])[last()]
code.review.status=(//input[@id='registry.custom_lifecycle.checklist.option.1.item'])[last()]
design.review.status=(//input[@id='registry.custom_lifecycle.checklist.option.2.item'])[last()]
app.application.overview.page=Overview
app.overview.page.team.details.id=userCountList
app.team.page.id=menu_userAdmin
app.add.member.page.id=btnAddMembers
app.issue.redMine.tab.link=Track Issues
app.testing.first.element.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li/div/strong
app.testing.date.save.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li[2]/div/form/div/button
app.testing.first.element.arrow.xpath=/html/body/div/div[2]/article/section/div[2]/ul[2]/li/ul/li[3]/div/ul/li[2]/a
app.factory.issue.total.count.xpath=/html/body/div/div[2]/article/section/section/div/ul/li[2]
app.factory.issue.item.header.id=item_list
app.factory.database.configure.page.link=Database Configurations
app.factory.new.database.link=Database
app.factory.database.name.id=databaseName
app.factory.database.password=databaseUserPassword
app.factory.database.confirm.password=confirmDatabaseUserPassword
app.factory.database.submit.button=div.buttonrow > input[name="Submit"]
app.factory.database.advance.Checkbox=advancecheckbox
app.factory.database.user.CheckBox=Username
app.factory.database.user.password=Password
app.factory.database.user.Repeat.password=repeatPassword
app.factory.database.environment.id=rssInstances
app.factory.database.user.submit.name=Submit
app.factory.database.template.name=templateName
app.factory.database.template.submit.name=Submit
app.factory.db.admin.id=menu_dbAdmin
app.factory.db.dbUser.link=DB User
app.factory.db.template.link=DB Template
app.factory.db.resources.id=dbSection
app.db.link=Db
app.db.user=wso2usr
app.db.template=wso2Temp@Development
app.factory.delete.user=Delete User
app.factory.del.template=Delete Template
app.factory.delete.Ok=Ok
app.factory.delete.db=Delete DB
app.data.source.name=datasource_name
app.data.source.description=datasource_description
app.data.source.password=datasource_password_dev
app.data.source.username=datasource_username_text_dev
app.data.source.add.button=Submit
app.property.name=property_name
app.property.type=property_type
app.property.description=property_description
app.property.value=property_value
app.factory.registry.page.link=Endpoints & Registry
app.factory.data.source.page.link=Datasources
app.db.details.id=dbSection
app.db.user.id=dbUsrSection
app.db.template.id=dbTempSection
app.factory.new.data.source.page.button=//button[@type='button']
app.factory.api.panel.text=/html/body/div/div/article/section[3]
app.factory.sign.out.email=span.icon-chevron-down
app.factory.sing.out.text=Sign Out
app.factory.subscribe=Subscribe to APIs
app.factory.subscribe.api.element=li > div.thumbnail > a > img
app.api.select.app.name=application-list
app.api.subscribe.button=subscribe-button
app.api.api.manager.button=gotoApiManagerbtn
app.go.to.subscriptions.text=Go to My Subscriptions
app.api.manager.class.name.text=title-section
app.api.key.generate.text=Show Keys
app.api.sandbox.details.id=sandTable0
app.api.production.details.id=prodTable0
app.api.page.link.text=APIs
app.api.page.resource.list.id=keySection
app.factory.subscription.page=My Subscriptions
app.factory.list.view=a.icon-th-list.table_view
app.overview.link.css=/html/body/div/div[2]/article/nav/ul/li/a
login.username=username
login.password=password
login.sign.in.button=button
login.header.div=header-div
home.dashboard.middle.text.xpath=/html/body/div[3]/div[1]/div/span
home.greg.sign.out.xpath=//*[@id="header-div"]/div[4]/div/ul/li[3]/a
home.logged.user.dev=logged-user
jaggery.Main.tab=menu-panel-button1
jaggery.Region1.tab=region1_manage_menu
jaggery.dashboard.middle.text=middle
add.jaggery.href=Jaggery
jaggery.war.file.upload.name=warFileName
jaggery.upload.button.name=upload
jaggery.upload.successful.message=messagebox-info
jaggery.upload.successful.button=ui-dialog-titlebar-close
carbon.Main.tab=menu-panel-button1
carbon.Region1.tab=region1_manage_menu
carbon.add.href=Add
carbon.dashboard.middle.text=middle
carbon.file.upload.field=filename
carbon.upload.button=upload
carbon.upload.successful.message=messagebox-info
carbon.upload.successful.button=ui-dialog-titlebar-close
resource.Main.tab=menu-panel-button1
resource.Region3.tab=region3_registry_menu
resource.browse.link=Browse
resource.dashboard.middle.text=middle
resource.detailed.view=stdView
resource.add.resource.link=Add Resource
resource.add.collection.link=Add Collection
resource.add.resource.input.field=uResourceFile
resource.add.Collection.input.field=collectionName
resource.add.Url.input.id=irFetchURL
resource.add.collection.description=colDesc
resource.add.resource.name=uResourceName
Resource.add.resource.description=description
resource.add.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[5]/table/tbody/tr[2]/td/form/table/tbody/tr[6]/td/input
resource.add.Url.button.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[5]/table/tbody/tr[3]/td/form/table/tbody/tr[6]/td/input
resource.collection.add.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td/div[2]/div[3]/div[3]/div[7]/form/table/tbody/tr[5]/td/input
resource.upload.successful.message=messagebox-info
resource.upload.successful.collection.message=messagebox-info
resource.upload.successful.button=ui-dialog-titlebar-close
resource.upload.collection.successful.close.button=/html/body/div[5]/div/div/a
resource.add.Url.Successful.close=/html/body/div[4]/div/div/a
service.add.link=Service
service.dashboard.middle.text=middle
service.list.dashboard.middle.text=middle
service.add.name.id=id_Overview_Name
service.add.namespace.id=id_Overview_Namespace
service.check.save.service=Services
wsdl.dashboard.middle.text=middle
wsdl.list.dashboard.middle.text=middle
wsdl.add.link=WSDL
wsdl.add.url=irFetchURL
wsdl.add.name=irResourceName
wsdl.add.file.id=uResourceFile
wsdl.add.file.name.id=uResourceName
schema.add.link=Schema
schema.dashboard.middle.text=middle
schema.list.dashboard.middle.text=middle
schema.add.url=irFetchURL
schema.add.name=irResourceName
schema.add.schema.name.id=uResourceName
wsPolicy.add.link=Policy
wsPolicy.dashboard.middle.text=middle
ws.policy.list.dashboard.middle.text=middle
wsPolicy.add.url=irFetchURL
wsPolicy.add.name=irResourceName
wsPolicy.add.file.id=uResourceFile
wsPolicy.add.schema.name.id=uResourceName
api.add.link=API
api.dashboard.middle.text=middle
api.provider.id=id_Overview_Provider
api.name.id=id_Overview_Name
api.context.id=id_Overview_Context
api.version.id=id_Overview_Version
api.list.link=APIs
uri.add.link=URI
uri.add.list.id=URIs
uri.dashboard.middle.text=middle
uri.add.uri=id_Overview_URI
uri.add.uri.name=id_Overview_Name
uri.list.link=URIs
my.profile.region.tab.id=region5_my_identity_menu
my.profile.add.page.link=My Profiles
my.profile.dashboard.middle.text=middle
my.profile.new.profile.add.link=Add New Profile
my.profile.name.id=profile
my.profile.first.name.id=http://wso2.org/claims/givenname
my.profile.last.name.id=http://wso2.org/claims/lastname
my.profile.email.id=http://wso2.org/claims/emailaddress
my.profile.successful.save.pane=/html/body/div[3]/div/div/a
search.activity.link=Activities
search.activity.id=user
search.activity.name.id=path
search.activity.exists.id=activityList
search.page.link=Search
search.resource.name=resourcePath
search.results.id=1
filter.search.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form[3]/table/tbody/tr/td[8]/table/tbody/tr/td/a
users.add.new.user.link.id=Add New User
users.and.roles.link.text=Users and Roles
users.adn.roles.add.page.middle.text=middle
users.add.link.id=Users
users.add.new.user.name.id=username
users.add.new.user.password.name=password
users.add.new.user.password.retype.name=retype
users.admin.tick.name=userRoles
users.save=//input[contains(@value,'Finish')]
users.page.next.id=2
roles.add.link.id=Roles
role.add.new.user.link.id=Add New Role
role.add.new.user.name.id=roleName
role.permission.id=ygtvspacer
role.add.user.to.role.name=org.wso2.carbon.role.assign.filter
role.search.button=td.buttonRow > input.button
role.add.ok.button.css=button[type="button"]
role.add.user.to.role.name.tick=selectedUsers
role.add.user.finish.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form[2]/table/tbody/tr[2]/td/input[2]
pass.word.change.link=Change My Password
pass.word.current.name=currentPassword
pass.word.new.name=newPassword
pass.word.check.name=checkPassword
pass.word.change.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
password.change.dialog.xpath=/html/body/div[3]/div/div/a
features.add.link=Features
repository.add.tab.text=Repository Management
repositories.table.id=_table_manage_repositories
repository.add.link.text=Add Repository
repository.url.name=_txt_repository_location_url
repository.save.id=_btn_add_repository
repository.name.id=_txt_repository_name
installed.features.tab.linkText=Installed Features
repositories.dashboard.text=middle
features.filter.id=_txt_IF_filterString
feature.checkbox.click.name=chkSelectFeaturesToUninstall
feature.uninstall.next.button.id=_btn_next_review_uninstall_features
feature.uninstall.finish.button.id=_btn_uc_finish
server.shutdown.link.text=Shutdown/Restart
feature.revert.tab=Installation History
feature.find.feature.text=Available Features
feature.install.name.id=_txt_AF_filterString
feature.find.id=_btn_next_filter_repositories
feature.install.click=chkSelectFeaturesToInstall
feature.install.accept.button=_radio_af_accept_licenses
key.store.add.link=KeyStores
key.store.dashboard.middle.text=middle
key.store.add.new.link.text=Add New KeyStore
key.store.file.path.id=keystoreFile
key.store.password.name=ksPassword
key.store.provider.name=provider
key.store.next.button=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
key.store.pass.key=keyPass
key.store.successful.xpath=/html/body/div[3]/div/div/a
logging.add.link=Logging
logging.dashboard.middle.text=middle
logging.update.button.id=globalLog4jUpdate
log4j.appender.update.id=appenderUpdate
log4j.global.success.xpath=/html/body/div[3]/div[2]/button
log4j.appender.sucess.xpath=/html/body/div[4]/div[2]/button
log4j.logger.search.id=filterText
log4j.logger.successful.button.xpath=/html/body/div[3]/div/div/a
notification.adding.link=Notifications
notification.dashboard.middle.text=middle
notification.add.edit.link.text=Add Subscription to Resource/Collection
notification.add.email.id=subscriptionInput
registry.subscription.middle.text=middle
registry.subscription.path.id=subscriptionPath
registry.subscription.event.id=eventList
registry.subscription.notification.id=notificationMethodList
registry.subscription.email.id=subscriptionInput
registry.subscription.digest.id=subscriptionDigestTypeInput
registry.subscription.hsmethod.id=hierarchicalSubscriptionList
registry.subscription.subscribe.button.id=subscribeButton
uri.configure.add.link=URIs
uri.configure.dashboard.middle.text=middle
api.configure.add.link=APIs
api.configure.dashboard.middle.text=middle
service.configure.add.link=Services
service.configure.dashboard.middle.text=middle
server.role.add.link=Server Roles
server.role.dashboard.middle.text=middle
server.role.add.link.text=Add New Server Role
server.role.name.id=_serverRoleName
add.new.tenant.link.text=Add New Tenant
tenant.role.dashboard.middle.text=middle
tenant.domain=domain
tenant.first.name=admin-firstname
tenant.last.name=admin-lastname
tenant.admin.user.name=admin
tenant.admin.password=admin-password
tenant.admin.password.repeat=admin-password-repeat
tenant.admin.email.id=admin-email
add.new.tenant.success.button=/html/body/div[3]/div/div/a
view.tenant.link=View Tenants
add.new.extension.dashboard.middle.text=middle
extension.tab.id=menu-panel-button5
extension.list.page.dashboard.middle.text=middle
extensions.add.link=Add
extension.add.text.box=uResourceFile
life.cycle.tab.id=menu-panel-button5
life.cycle.add.link=Lifecycles
add.new.lifecycle.dashboard.middle.text=middle
add.new.lifecycle.link.text=Add New Lifecycle
add.new.lifecycle.text.area=//*[@id="textarea"]
add.new.lifecycle.save.css=input.button.registryWriteOperation
resource.lifecycle.minimized=//*[@id="lifecycleIconMinimized"]
resource.lifecycle.add=//*[@id="lifecycleExpanded"]/div[2]/a
resource.lifecycle.add.select=//*[@id="aspect"]
resource.lifecycle.add.select.id=aspect
resource.lifecycle.add.button.add=//*[@id="add-lifecycle-div"]/form/table/tbody/tr[2]/td/input[1]
resource.lifecycle.add.button.cancel=//*[@id="add-lifecycle-div"]/form/table/tbody/tr[2]/td/input[2]
artifact.add.tab.id=menu-panel-button5
artifacts.add.link=Artifact Types
add.new.artifact.dashboard.middle.text=middle
add.new.artifact.type.link=Add new Artifact
add.new.artifact.text.area=textarea
add.new.artifact.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
add.new.artifact.dialog.box=button[type="button"]
handler.add.tab.id=menu-panel-button5
handler.add.link=Handlers
add.new.handler.dashboard.middle.text=middle
add.new.handler.link.text=Add New Handler
add.new.handler.text.area=textarea
add.new.handler.save.xpath=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/form/table/tbody/tr[2]/td/input
add.new.handler.dialog.box=button[type="button"]
configure.tab.id=menu-panel-button3
manage.report.page.link=Reports
manage.report.list.dashboard.middle.text=middle
add.report.list.dashboard.middle.text=middle
add.report.name=reportName
add.report.template=reportTemplate
add.report.type=reportType
add.report.class=reportClass
report.add.link=Add Report
life.cycle.expand.id=lifecycleIconMinimized
life.cycle.add=Add Lifecycle
life.cycle.add.option=option0
life.cycle.add.option1=option1
life.cycle.add.option2=option2
life.cycle.promote=Promote
life.cycle.publish=Publish
life.cycle.stage=/html/body/table/tbody/tr[2]/td[3]/table/tbody/tr[2]/td/div/div/table/tbody/tr/td[4]/div[14]/div[3]/div[2]/table/tbody/tr/td/div[2]/table/tbody/tr[2]/td
life.cycle.promote.ok.button=button[type="\button\"]
webapp.list.xpath=.//*[@id='menu']/ul/li[7]/ul/li[2]/ul/li[1]/a
webapp.list.page.middle=middle
webapp.add.xpath=//*[@id="menu"]/ul/li[5]/ul/li[2]/ul/li[3]/ul/li[1]/a
webapp.add.page.middle=middle
endpoints.tab.id=//*[@id="menu"]/ul/li[5]/ul/li[4]/ul/li[4]/a
endpoints.page.middle=middle
bam.dashboard.tab.id=//*[@id="menu"]/ul/li[3]/ul/li/a
bam.dashboard.signin.xpath=//*[@id="wrap"]/div[2]/div/div/h1

@ -0,0 +1,298 @@
<?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>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
<name>WSO2 IoT Server - Integration Test UI Module</name>
<artifactId>org.wso2.carbon.iot.integration.test.web.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/wso2iots-${project.version}.zip
</value>
</property>
<property>
<name>framework.resource.location</name>
<value>
${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>
</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>wso2iots</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/wso2iots-${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/wso2iots-${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/wso2iots-${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>
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-antrun-plugin</artifactId>-->
<!--<executions>-->
<!--<execution>-->
<!--<id>Test.Connected.Cup</id>-->
<!--<phase>compile</phase>-->
<!--<goals>-->
<!--<goal>run</goal>-->
<!--</goals>-->
<!--<configuration>-->
<!--<tasks>-->
<!--<echo message="********************** installing ************************"/>-->
<!--&lt;!&ndash;<property name="tempDir" refid="**/wso2iots-1.0.0-SNAPSHOT"/>&ndash;&gt;-->
<!--<ant antfile="${basedir}/src/test/resources/build.xml">-->
<!--<target name="mvn clean"/>-->
<!--<target name="mvn clean package"/>-->
<!--</ant>-->
<!--</tasks>-->
<!--</configuration>-->
<!--</execution>-->
<!--</executions>-->
<!--<version>1.8</version>-->
<!--</plugin>-->
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.wso2.iot</groupId>
<artifactId>org.wso2.carbon.iot.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>

@ -0,0 +1,18 @@
package org.wso2.carbon.iot.integration.web.ui.test;
/**
* Created by menaka on 1/19/16.
*/
public class Constants {
public static final String IOT_LOGIN_PATH = "/devicemgt/login";
// public static final String LOGIN_GROUP = "login-group";
// public static final String MDM_ROLES_URL = "/mdm/roles";
public static final String IOT_USER_REGISTER_URL = "/devicemgt/register";
public static final String IOT_USER_ADD_URL = "/devicemgt/user/add";
public static final String IOT_GROUP_ADD_URL = "/devicemgt/group/add";
// public static final String 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 IOT_HOME_URL = "/devicemgt/";
}

@ -0,0 +1,24 @@
package org.wso2.carbon.iot.integration.web.ui.test;
import org.openqa.selenium.WebDriver;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
/**
* Login as registered user
*/
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.IOT_LOGIN_PATH);
LoginPage test = new LoginPage(driver);
test.loginAsAdmin(automationContext.getSuperTenant().getTenantAdmin().getUserName(),
automationContext.getSuperTenant().getTenantAdmin().getPassword());
}
}

@ -0,0 +1,40 @@
package org.wso2.carbon.iot.integration.web.ui.test.group;
import org.junit.Assert;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
/**
* Created by menaka on 1/25/16.
*
*/
public class DeviceGroupFailTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
}
@Test(description = "Test for submitting an empty form.")
public void addNewGroupFailTest () throws Exception {
driver.get(getWebAppURL() + Constants.IOT_GROUP_ADD_URL);
DeviceAddGroupPage addGroupPage = new DeviceAddGroupPage(driver);
Assert.assertEquals(addGroupPage.submitEmptyForm(), "Group Name is a required field. It cannot be empty.");
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,49 @@
package org.wso2.carbon.iot.integration.web.ui.test.group;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
import org.wso2.iot.integration.ui.pages.groups.DeviceGroupsPage;
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
/**
* Test cases for grouping feature of IOT server.
*/
public class DeviceGroupTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
private IOTAdminDashboard adminDashboard;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
adminDashboard = new IOTAdminDashboard(driver);
}
@Test(description = "Test for adding a new device group.")
public void addNewGroupTest () throws Exception {
DeviceAddGroupPage addGroupPage = adminDashboard.addGroup();
addGroupPage.addNewGroup("group1", "This is test group");
}
@Test (description = "Check whether the created group exists", dependsOnMethods = {"addNewGroupTest"})
public void isGroupCreatedTest () throws Exception {
driver.get(getWebAppURL() + Constants.IOT_HOME_URL);
DeviceGroupsPage groupsPage = adminDashboard.viewGroups();
Assert.assertTrue(groupsPage.isGroupCreated("group1"));
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,115 @@
package org.wso2.carbon.iot.integration.web.ui.test.login;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* Test cases to test the incorrect login from submissions.
* Ex:
* 1. Empty form
* 2. Incorrect username or password
* 3. short password
*/
public class LoginFailTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
private UIElementMapper uiElementMapper;
WebElement userNameField;
WebElement passwordField;
WebElement loginButton;
@BeforeClass (alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
clearForm();
}
@Test(description = "Test for empty login form submission")
public void emptyLoginFormTest() throws Exception {
userNameField.sendKeys("");
passwordField.sendKeys("");
loginButton.click();
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.username.error")))
.getText(), "Please enter a username");
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error")))
.getText(), "Please provide a password");
}
@Test (description = "Test for incorrect username")
public void incorrectUserNameTest() throws Exception {
clearForm();
userNameField.sendKeys("admin1");
passwordField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getPassword());
loginButton.click();
Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath")))
.getText(), "Incorrect username or password.!");
}
@Test (description = "Test for incorrect password")
public void incorrectPasswordTest() throws Exception {
clearForm();
userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getPassword());
passwordField.sendKeys("admnn");
loginButton.click();
Assert.assertEquals(driver.findElement(By.xpath(uiElementMapper.getElement("iot.user.login.incorrect.xpath")))
.getText(), "Incorrect username or password.!");
}
@Test (description = "Test for short password")
public void shortPasswordTest() throws Exception {
clearForm();
userNameField.sendKeys(automationContext.getSuperTenant().getTenantAdmin().getUserName());
passwordField.sendKeys("ad");
loginButton.click();
Assert.assertEquals(driver.findElement(By.id(uiElementMapper.getElement("iot.user.login.password.error")))
.getText(), "Your password must be at least 3 characters long");
}
public void clearForm() throws Exception{
driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
uiElementMapper = UIElementMapper.getInstance();
userNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.username.xpath")));
passwordField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.input.password.xpath")));
loginButton = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.login.button.xpath")));
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,41 @@
package org.wso2.carbon.iot.integration.web.ui.test.login;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
/**
* Test Login as Admin
*
*/
public class LoginTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
@BeforeClass (alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
}
@Test (description = "Verify login to IOT server dashboard")
public void testAdminLogin() throws Exception {
LoginPage test = new LoginPage(driver);
IOTAdminDashboard dashboard = test.loginAsAdmin(
automationContext.getSuperTenant().getTenantAdmin().getUserName(),
automationContext.getSuperTenant().getTenantAdmin().getPassword());
dashboard.logout();
driver.close();
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,168 @@
package org.wso2.carbon.iot.integration.web.ui.test.user;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.engine.context.AutomationContext;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* Test cases for
* 1. Empty form submission
* 2. Short user name
* 3. Empty First Name
* 4. Empty Last Name
* 5. Empty email
* 6. Incorrect email
*/
public class AddUserFormTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
UIElementMapper uiElementMapper;
WebElement firstNameField;
WebElement lastNameField;
WebElement emailField;
WebElement userNameField;
WebElement addUserButton;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
driver.get(getWebAppURL() + Constants.IOT_USER_ADD_URL);
uiElementMapper = UIElementMapper.getInstance();
userNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.username.id")));
firstNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.firstName.id")));
lastNameField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.lastName.id")));
emailField = driver.findElement(By.id(uiElementMapper.getElement("iot.admin.addUser.email.id")));
addUserButton = driver.findElement(By.xpath(uiElementMapper.getElement("iot.admin.addUser.add.btn.xpath")));
}
@Test(description = "Test for empty form submission")
public void emptyFormTest() throws Exception {
clearForm();
firstNameField.sendKeys("");
lastNameField.sendKeys("");
emailField.sendKeys("");
userNameField.sendKeys("");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Username is a required field. It cannot be empty.");
}
@Test(description = "Test for short user name")
public void shortUserNameTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("user@wso2.com");
userNameField.sendKeys("us");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Username must be between 3 and 30 characters long.");
}
@Test(description = "Test for empty first name")
public void emptyFirstNameTest() throws Exception {
clearForm();
firstNameField.sendKeys("");
lastNameField.sendKeys("User");
emailField.sendKeys("user@wso2.com");
userNameField.sendKeys("user1");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Firstname is a required field. It cannot be empty.");
}
@Test(description = "Test for empty last name")
public void emptyLastNameTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("");
emailField.sendKeys("user@wso2.com");
userNameField.sendKeys("user1");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Lastname is a required field. It cannot be empty.");
}
@Test(description = "Test for empty email name")
public void emptyEmailTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("");
userNameField.sendKeys("user1");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Email is a required field. It cannot be empty.");
}
@Test(description = "Test for incorrect email")
public void incorrectEmailTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("user.com");
userNameField.sendKeys("user1");
addUserButton.click();
Assert.assertEquals(driver.findElement(By.xpath(
uiElementMapper.getElement("iot.admin.addUser.formError.xpath"))).getText(),
"Provided email is invalid. Please check.");
}
public void clearForm() {
firstNameField.clear();
lastNameField.clear();
emailField.clear();
userNameField.clear();
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,59 @@
package org.wso2.carbon.iot.integration.web.ui.test.user;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.home.IOTHomePage;
import org.wso2.iot.integration.ui.pages.login.LoginPage;
import org.wso2.iot.integration.ui.pages.uesr.NewUserRegisterPage;
/**
* Test for registering a new user and login
*
*/
public class RegisterTest extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
UIElementMapper uiElementMapper;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
driver.get(getWebAppURL() + Constants.IOT_LOGIN_PATH);
}
@Test(description = "Verify new User registration")
public void testUserRegister() throws Exception {
LoginPage test = new LoginPage(driver);
uiElementMapper = UIElementMapper.getInstance();
NewUserRegisterPage registerTest = test.registerNewUser();
LoginPage loginPage = registerTest.addUser(
uiElementMapper.getElement("iot.user.add.firstname"),
uiElementMapper.getElement("iot.user.add.lastname"),
uiElementMapper.getElement("iot.user.add.email"),
uiElementMapper.getElement("iot.user.add.username"),
uiElementMapper.getElement("iot.user.add.password"),
uiElementMapper.getElement("iot.user.add.password"));
IOTHomePage homePage = loginPage.loginAsUser(uiElementMapper.getElement("iot.user.add.username"),
uiElementMapper.getElement("iot.user.add.password"));
if (!homePage.checkUserName()){
throw new Exception("Incorrect user logged in");
}
homePage.logout();
driver.close();
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,158 @@
package org.wso2.carbon.iot.integration.web.ui.test.user;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
/**
* These test cases check for following:
* - Submitting an empty form
* - Existing username
* - Non matching passwords
* - Password, username length
*/
public class RegistrationFormTests extends IOTIntegrationUIBaseTestCase{
private WebDriver driver;
UIElementMapper uiElementMapper;
WebElement firstNameField;
WebElement lastNameField;
WebElement emailField;
WebElement userNameField;
WebElement passwordField;
WebElement passwordConfirmationField;
WebElement registerButton;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
driver.get(getWebAppURL() + Constants.IOT_USER_REGISTER_URL);
uiElementMapper = UIElementMapper.getInstance();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.titleContains("Register | IoT Server"));
firstNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.firstname.xpath")));
lastNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.lastname.xpath")));
emailField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.email.xpath")));
userNameField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.username.xpath")));
passwordField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.password.xpath")));
passwordConfirmationField = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.input.confirmpassword.xpath")));
registerButton = driver.findElement(By.xpath(
uiElementMapper.getElement("iot.user.add.register.button.xpath")));
}
@Test(description = "Test for submitting an empty registration form")
public void emptyFormTest() throws Exception {
clearForm();
firstNameField.sendKeys("");
lastNameField.sendKeys("");
emailField.sendKeys("");
userNameField.sendKeys("");
passwordField.sendKeys("");
passwordConfirmationField.sendKeys("");
registerButton.click();
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.firstname.error"))).getText(),
"Firstname is a required field. This cannot be empty.");
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.lastname.error"))).getText(),
"Lastname is a required field. This cannot be empty.");
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.email.error"))).getText(),
"Email is a required field. This cannot be empty.");
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.username.error"))).getText(),
"Username is a required field. This cannot be empty.");
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.password.error"))).getText(),
"Please enter a user login password");
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.confirmPassword.error"))).getText(),
"Please enter a user login password");
}
@Test (description = "Test for non matching passwords")
public void nonMatchingPasswordTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("user@user.com");
userNameField.sendKeys("user");
passwordField.sendKeys("user123");
passwordConfirmationField.sendKeys("user234");
registerButton.click();
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.confirmPassword.error"))).getText(),
"Please enter the same password as above");
}
//
@Test (description = "Test for email")
public void incorrectEmail() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("user.com");
registerButton.click();
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.email.error"))).getText(),
"Email is not valid. Please enter a correct email address.");
}
//
@Test (description = "Test for password length")
public void passwordLengthTest() throws Exception {
clearForm();
firstNameField.sendKeys("User");
lastNameField.sendKeys("User");
emailField.sendKeys("user@user.com");
userNameField.sendKeys("user");
passwordField.sendKeys("user");
registerButton.click();
Assert.assertEquals(driver.findElement(By.id(
uiElementMapper.getElement("iot.user.register.password.error"))).getText(),
"Password should be between 5 and 30 characters.");
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
public void clearForm() {
firstNameField.clear();
lastNameField.clear();
emailField.clear();
userNameField.clear();
passwordField.clear();
passwordConfirmationField.clear();
}
}

@ -0,0 +1,59 @@
package org.wso2.carbon.iot.integration.web.ui.test.user;
import org.apache.bcel.classfile.Constant;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
import org.wso2.carbon.iot.integration.web.ui.test.Constants;
import org.wso2.carbon.iot.integration.web.ui.test.LoginUtils;
import org.wso2.iot.integration.ui.pages.IOTIntegrationUIBaseTestCase;
import org.wso2.iot.integration.ui.pages.UIElementMapper;
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
import org.wso2.iot.integration.ui.pages.uesr.AddUserPage;
import org.wso2.iot.integration.ui.pages.uesr.UserListingPage;
/**
* Test for checking admin capabilities.
* - Create a new User
* - Delete a user
* -- and more
*/
public class TestAdminFunctions extends IOTIntegrationUIBaseTestCase {
private WebDriver driver;
@BeforeClass(alwaysRun = true)
public void setup() throws Exception {
super.init();
driver = BrowserManager.getWebDriver();
LoginUtils.login(driver, automationContext, getWebAppURL());
}
@Test(description = "Test for creating a new user")
public void createUserTest() throws Exception {
IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
AddUserPage addUserPage = adminDashboard.addUser();
addUserPage.createNewUser("user1", "User", "User", "user@wso2.com");
}
@Test(description = "Test for deleting a created user", dependsOnMethods = {"createUserTest"})
public void deleteUserTest() throws Exception {
driver.get(getWebAppURL() + Constants.IOT_HOME_URL);
IOTAdminDashboard adminDashboard = new IOTAdminDashboard(driver);
UserListingPage userListingPage = adminDashboard.viewUser();
userListingPage.deleteUser();
}
@AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
}
}

@ -0,0 +1,220 @@
<?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="automationXMLSchema.xsd">
<!-- ================================================= -->
<!-- Parameters -->
<!-- ================================================= -->
<configurations>
<!--
Change this to edit wait time for test artifact deployment
-->
<deploymentDelay>60000</deploymentDelay>
<!--
Change this to standalone|platform|all to execute test on specific environment
-->
<executionEnvironment>standalone</executionEnvironment>
<!--
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="false">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="IOT" clusteringEnabled="false" default="true">
<instance name="iot001" type="standalone" nonBlockingTransportEnabled="false">
<hosts>
<host type="default">localhost</host>
</hosts>
<ports>
<port type="http">9763</port>
<port type="https">9443</port>
</ports>
<properties>
<!--<property name="webContext">admin</property>-->
</properties>
</instance>
</productGroup>
</platform>
<listenerExtensions>
<platformExecutionManager>
<extentionClasses>
<class>
<name>org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension</name>
<name>org.wso2.carbon.integration.common.extensions.usermgt.UserPopulateExtension</name>
</class>
</extentionClasses>
</platformExecutionManager>
<PlatformSuiteManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension</className>-->
</extentionClasses>
</PlatformSuiteManager>
<PlatformAnnotationTransferManager>
<extentionClasses>
<!--<className>org.wso2.carbon.automation.extensions.servers.carbonserver.CarbonServerExtension</className>-->
</extentionClasses>
</PlatformAnnotationTransferManager>
<PlatformTestManager>
<extentionClasses>
</extentionClasses>
</PlatformTestManager>
<PlatformReportManager>
<extentionClasses>
</extentionClasses>
</PlatformReportManager>
</listenerExtensions>
</automation>

@ -0,0 +1,611 @@
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="automation_mapping.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="automation">
<xs:complexType>
<xs:sequence>
<xs:element name="configurations">
<xs:annotation>
<xs:documentation>=================================================
Parameters =================================================
Browser type with used by framework to execute UI test, supported types
- chrome|firefox|opera|ie|htmlUnit
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="deploymentDelay">
<xs:annotation>
<xs:documentation>Change this to edit wait time for test
artifact deployment
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="executionEnvironment">
<xs:annotation>
<xs:documentation>Change this to product|platform/cloud to
execute test on specific environment
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="coverage">
<xs:annotation>
<xs:documentation>Change this to true if you want to generate
coverage statistics
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="frameworkDashboard">
<xs:annotation>
<xs:documentation>Change this to true if you want to enable
framework dashboard
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tools">
<xs:complexType>
<xs:sequence>
<xs:element name="selenium">
<xs:complexType>
<xs:sequence>
<xs:element name="remoteDriverUrl">
<xs:annotation>
<xs:documentation>Change to enable remote webDriver
URL of remote webDriver server
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:anyURI">
<xs:attribute type="xs:string"
name="enable"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="browser">
<xs:annotation>
<xs:documentation>Type of the browser selenium tests
are running"
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string"
name="browserType"/>
<xs:element name="webdriverPath">
<xs:annotation>
<xs:documentation>path to webDriver
executable - required only for
chrome
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string"
name="enable"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="datasources">
<xs:complexType>
<xs:sequence>
<xs:element name="datasource" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="url"/>
<xs:element type="xs:string" name="username"/>
<xs:element type="xs:string" name="password"/>
<xs:element type="xs:string" name="driverClassName"/>
</xs:sequence>
<xs:attribute type="xs:string" name="name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="security">
<xs:complexType>
<xs:sequence>
<xs:element name="keystore" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>KeyStore which will be used for
encrypting/decrypting passwords
and other sensitive information.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="fileName">
<xs:annotation>
<xs:documentation>Keystore file location
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="type">
<xs:annotation>
<xs:documentation>Keystore type (JKS/PKCS12 etc.)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="password">
<xs:annotation>
<xs:documentation>Keystore password
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="keyAlias">
<xs:annotation>
<xs:documentation>Private Key alias
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="keyPassword">
<xs:annotation>
<xs:documentation>Private Key password
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name"/>
</xs:complexType>
</xs:element>
<xs:element name="truststore" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>System wide trust-store which is used to
maintain the certificates of all
the trusted parties.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="fileName">
<xs:annotation>
<xs:documentation>trust-store file location
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="type">
<xs:annotation>
<xs:documentation>trust-store type (JKS/PKCS12
etc.)
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element type="xs:string" name="password">
<xs:annotation>
<xs:documentation>trust-store password
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="featureManagement">
<xs:complexType>
<xs:sequence>
<xs:element name="p2Repositories">
<xs:complexType>
<xs:sequence>
<xs:element name="repository">
<xs:complexType>
<xs:sequence>
<xs:element name="repository"
maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string"
name="repo-id"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="userManagement">
<xs:complexType>
<xs:sequence>
<xs:element name="superTenant">
<xs:complexType>
<xs:sequence>
<xs:element name="tenant">
<xs:complexType>
<xs:sequence>
<xs:element name="admin">
<xs:complexType>
<xs:sequence>
<xs:element name="user">
<xs:complexType>
<xs:sequence>
<xs:element
type="xs:string"
name="userName"/>
<xs:element
type="xs:string"
name="password"/>
</xs:sequence>
<xs:attribute
type="xs:string"
name="key"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="users">
<xs:complexType>
<xs:sequence>
<xs:element name="user"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
type="xs:string"
name="userName"/>
<xs:element
type="xs:string"
name="password"/>
</xs:sequence>
<xs:attribute
type="xs:string"
name="key"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="key"
use="required"/>
<xs:attribute type="xs:string" name="domain"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="tenants">
<xs:complexType>
<xs:sequence>
<xs:element name="tenant" maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="admin">
<xs:complexType>
<xs:sequence>
<xs:element name="user">
<xs:complexType>
<xs:sequence>
<xs:element
type="xs:string"
name="userName"/>
<xs:element
type="xs:string"
name="password"/>
</xs:sequence>
<xs:attribute
type="xs:string"
name="key"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="users">
<xs:complexType>
<xs:sequence>
<xs:element name="user"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
type="xs:string"
name="userName"/>
<xs:element
type="xs:string"
name="password"/>
</xs:sequence>
<xs:attribute
type="xs:string"
name="key"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="key"
use="required"/>
<xs:attribute type="xs:string" name="domain"
use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="platform">
<xs:complexType>
<xs:choice>
<xs:element name="productGroup" maxOccurs="unbounded" minOccurs="1">
<xs:complexType>
<xs:choice maxOccurs="unbounded" minOccurs="1">
<xs:element name="instance">
<xs:complexType>
<xs:sequence>
<xs:element name="hosts">
<xs:complexType>
<xs:sequence>
<xs:element name="host"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
type="xs:string"
name="type"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ports">
<xs:complexType>
<xs:sequence>
<xs:element name="port"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
type="xs:string"
name="type"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:element name="property"
maxOccurs="unbounded"
minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
type="xs:string"
name="name"
use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="name"
use="required"/>
<xs:attribute type="xs:string" name="type"
use="required"/>
<xs:attribute type="xs:boolean"
name="nonBlockingTransportEnabled"
use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute type="xs:string" name="name"/>
<xs:attribute type="xs:string" name="clusteringEnabled"/>
<xs:attribute type="xs:boolean" name="default"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="listenerExtensions">
<xs:complexType>
<xs:sequence>
<xs:element name="platformExecutionManager">
<xs:complexType>
<xs:sequence>
<xs:element name="extentionClasses">
<xs:complexType>
<xs:sequence>
<xs:element name="class" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PlatformSuiteManager">
<xs:complexType>
<xs:sequence>
<xs:element name="extentionClasses">
<xs:complexType>
<xs:sequence>
<xs:element name="class" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PlatformAnnotationTransferManager">
<xs:complexType>
<xs:sequence>
<xs:element name="extentionClasses">
<xs:complexType>
<xs:sequence>
<xs:element name="class" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PlatformTestManager">
<xs:complexType>
<xs:sequence>
<xs:element name="extentionClasses">
<xs:complexType>
<xs:sequence>
<xs:element name="class" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PlatformReportManager">
<xs:complexType>
<xs:sequence>
<xs:element name="extentionClasses">
<xs:complexType>
<xs:sequence>
<xs:element name="class" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element name="parameter" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="name" use="required"/>
<xs:attribute type="xs:string" name="value" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

@ -0,0 +1,300 @@
<!--
~ Copyright 2005-2011 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<axisconfig name="AxisJava2.0">
<!-- ================================================= -->
<!-- Parameters -->
<!-- ================================================= -->
<parameter name="hotdeployment">true</parameter>
<parameter name="hotupdate">false</parameter>
<parameter name="enableMTOM">false</parameter>
<!-- commons-http-client defaultMaxConnPerHost -->
<parameter name="defaultMaxConnPerHost">500</parameter>
<!-- commons-http-client maxTotalConnections -->
<parameter name="maxTotalConnections">15000</parameter>
<!--If turned on with use the Accept header of the request to determine the contentType of the
response-->
<parameter name="httpContentNegotiation">false</parameter>
<!--During a fault, stacktrace can be sent with the fault message. The following flag will control -->
<!--that behaviour.-->
<parameter name="sendStacktraceDetailsWithFaults">true</parameter>
<!--If there aren't any information available to find out the fault reason, we set the message of the exception-->
<!--as the faultreason/Reason. But when a fault is thrown from a service or some where, it will be -->
<!--wrapped by different levels. Due to this the initial exception message can be lost. If this flag-->
<!--is set then, Axis2 tries to get the first exception and set its message as the faultreason/Reason.-->
<parameter name="DrillDownToRootCauseForFaultReason">false</parameter>
<!--This is the user name and password of admin console-->
<parameter name="userName">admin</parameter>
<parameter name="password">axis2</parameter>
<!--To override repository/services you need to uncomment following parameter and value SHOULD be absolute file path.-->
<!--ServicesDirectory only works on the following cases-->
<!---File based configurator and in that case the value should be a file URL (http:// not allowed)-->
<!---When creating URL Based configurator with URL “file://” -->
<!--- War based configurator with expanded case , -->
<!--All the other scenarios it will be ignored.-->
<!--<parameter name="ServicesDirectory">service</parameter>-->
<!--To override repository/modules you need to uncomment following parameter and value SHOULD be absolute file path-->
<!--<parameter name="ModulesDirectory">modules</parameter>-->
<!--Following params will set the proper context paths for invocations. All the endpoints will have a commons context-->
<!--root which can configured using the following contextRoot parameter-->
<!--<parameter name="contextRoot">axis2</parameter>-->
<!--Our HTTP endpoints can handle both REST and SOAP. Following parameters can be used to distinguish those endpoints-->
<!--<parameter name="servicePath">services</parameter>-->
<!--<parameter name="restPath">rest</parameter>-->
<!-- Following parameter will completely disable REST handling in Axis2-->
<parameter name="disableREST" locked="false">false</parameter>
<!--POJO deployer , this will alow users to drop .class file and make that into a service-->
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
<!-- Following parameter will set the host name for the epr-->
<!--<parameter name="hostname" locked="true">myhost.com</parameter>-->
<!-- ================================================= -->
<!-- Message Receivers -->
<!-- ================================================= -->
<!--This is the Default Message Receiver for the system , if you want to have MessageReceivers for -->
<!--all the other MEP implement it and add the correct entry to here , so that you can refer from-->
<!--any operation -->
<!--Note : You can override this for particular service by adding the same element with your requirement-->
<messageReceivers>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-only"
class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<messageReceiver mep="http://www.w3.org/2006/01/wsdl/in-out"
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
</messageReceivers>
<!-- ================================================= -->
<!-- Message Formatter -->
<!-- ================================================= -->
<!--Following content type to message formatter mapping can be used to implement support for different message -->
<!--format serialization in Axis2. These message formats are expected to be resolved based on the content type. -->
<messageFormatters>
<messageFormatter contentType="application/x-www-form-urlencoded"
class="org.apache.axis2.transport.http.XFormURLEncodedFormatter"/>
<messageFormatter contentType="multipart/form-data"
class="org.apache.axis2.transport.http.MultipartFormDataFormatter"/>
<messageFormatter contentType="application/xml"
class="org.apache.axis2.transport.http.ApplicationXMLFormatter"/>
<messageFormatter contentType="text/xml"
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
<messageFormatter contentType="application/soap+xml"
class="org.apache.axis2.transport.http.SOAPMessageFormatter"/>
<!--JSON Message Formatters-->
<messageFormatter contentType="application/json"
class="org.apache.axis2.json.JSONMessageFormatter"/>
<messageFormatter contentType="application/json/badgerfish"
class="org.apache.axis2.json.JSONBadgerfishMessageFormatter"/>
<messageFormatter contentType="text/javascript"
class="org.apache.axis2.json.JSONMessageFormatter"/>
</messageFormatters>
<!-- ================================================= -->
<!-- Message Builders -->
<!-- ================================================= -->
<!--Following content type to builder mapping can be used to implement support for different message -->
<!--formats in Axis2. These message formats are expected to be resolved based on the content type. -->
<messageBuilders>
<messageBuilder contentType="application/xml"
class="org.apache.axis2.builder.ApplicationXMLBuilder"/>
<messageBuilder contentType="application/x-www-form-urlencoded"
class="org.apache.axis2.builder.XFormURLEncodedBuilder"/>
<!--JSON Message Builders-->
<messageBuilder contentType="application/json"
class="org.apache.axis2.json.JSONOMBuilder"/>
<messageBuilder contentType="application/json/badgerfish"
class="org.apache.axis2.json.JSONBadgerfishOMBuilder"/>
<messageBuilder contentType="text/javascript"
class="org.apache.axis2.json.JSONOMBuilder"/>
<!--Left commented because it adds the depandancy of servlet-api to other modules.
Please uncomment to Receive messages in multipart/form-data format-->
<!--<messageBuilder contentType="multipart/form-data"-->
<!--class="org.apache.axis2.builder.MultipartFormDataBuilder"/>-->
</messageBuilders>
<!-- ================================================= -->
<!-- Target Resolvers -->
<!-- ================================================= -->
<!-- Uncomment the following and specify the class name for your TargetResolver to add -->
<!-- a TargetResolver. TargetResolvers are used to process the To EPR for example to -->
<!-- choose a server in a cluster -->
<!--<targetResolvers>-->
<!--<targetResolver class="" />-->
<!--</targetResolvers>-->
<!-- ================================================= -->
<!-- Transport Ins -->
<!-- ================================================= -->
<transportReceiver name="http"
class="org.apache.axis2.transport.http.SimpleHTTPServer">
<parameter name="port">6071</parameter>
<!--If you want to give your own host address for EPR generation-->
<!--uncomment following parameter , and set as you required.-->
<!--<parameter name="hostname">http://myApp.com/ws</parameter>-->
</transportReceiver>
<!--Uncomment if you want to have TCP transport support-->
<!--<transportReceiver name="tcp"
class="org.apache.axis2.transport.tcp.TCPServer">
<parameter name="port">6061</parameter>-->
<!--If you want to give your own host address for EPR generation-->
<!--uncomment following parameter , and set as you required.-->
<!--<parameter name="hostname">tcp://myApp.com/ws</parameter>-->
<!--</transportReceiver>-->
<!-- ================================================= -->
<!-- Transport Outs -->
<!-- ================================================= -->
<!--<transportSender name="jms"-->
<!--class="org.apache.axis2.transport.jms.JMSSender"/>-->
<!--transportSender name="tcp"
class="org.apache.axis2.transport.tcp.TCPTransportSender"/-->
<transportSender name="local"
class="org.apache.axis2.transport.local.LocalTransportSender"/>
<transportSender name="http"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding">chunked</parameter>
<parameter name="SO_TIMEOUT">60000</parameter>
<parameter name="CONNECTION_TIMEOUT">60000</parameter>
</transportSender>
<transportSender name="https"
class="org.apache.axis2.transport.http.CommonsHTTPTransportSender">
<parameter name="PROTOCOL">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding">chunked</parameter>
<parameter name="SO_TIMEOUT">60000</parameter>
<parameter name="CONNECTION_TIMEOUT">60000</parameter>
</transportSender>
<!--<transportSender name="java"-->
<!--class="org.apache.axis2.transport.java.JavaTransportSender"/>-->
<!-- ================================================= -->
<!-- SOAP Role Configuration -->
<!-- ================================================= -->
<!-- Use the following pattern to configure this axis2
instance to act in particular roles. Note that in
the absence of any configuration, Axis2 will act
only in the ultimate receiver role -->
<!--
<SOAPRoleConfiguration isUltimateReceiver="true">
<role>http://my/custom/role</role>
</SOAPRoleConfiguration>
-->
<!-- ================================================= -->
<!-- Phases -->
<!-- ================================================= -->
<phaseOrder type="InFlow">
<!-- System pre-defined phases -->
<phase name="Transport">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher">
<order phase="Transport"/>
</handler>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher">
<order phase="Transport"/>
</handler>
</phase>
<phase name="Addressing">
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="Security"/>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
<handler name="RequestURIOperationDispatcher"
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
<handler name="HTTPLocationBasedDispatcher"
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
</phase>
<phase name="RMPhase"/>
<!-- System pre defined phases -->
<!-- After Postdispatch phase module author or or service author can add any phase he want -->
<phase name="OperationInPhase"/>
</phaseOrder>
<phaseOrder type="OutFlow">
<!-- user can add his own phases to this area -->
<phase name="OperationOutPhase"/>
<!--system predefined phase-->
<!--these phase will run irrespective of the service-->
<phase name="RMPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
</phaseOrder>
<phaseOrder type="InFaultFlow">
<phase name="Addressing">
<handler name="AddressingBasedDispatcher"
class="org.apache.axis2.dispatchers.AddressingBasedDispatcher">
<order phase="Addressing"/>
</handler>
</phase>
<phase name="Security"/>
<phase name="PreDispatch"/>
<phase name="Dispatch" class="org.apache.axis2.engine.DispatchPhase">
<handler name="RequestURIBasedDispatcher"
class="org.apache.axis2.dispatchers.RequestURIBasedDispatcher"/>
<handler name="SOAPActionBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPActionBasedDispatcher"/>
<handler name="RequestURIOperationDispatcher"
class="org.apache.axis2.dispatchers.RequestURIOperationDispatcher"/>
<handler name="SOAPMessageBodyBasedDispatcher"
class="org.apache.axis2.dispatchers.SOAPMessageBodyBasedDispatcher"/>
<handler name="HTTPLocationBasedDispatcher"
class="org.apache.axis2.dispatchers.HTTPLocationBasedDispatcher"/>
</phase>
<phase name="RMPhase"/>
<!-- user can add his own phases to this area -->
<phase name="OperationInFaultPhase"/>
</phaseOrder>
<phaseOrder type="OutFaultFlow">
<!-- user can add his own phases to this area -->
<phase name="OperationOutFaultPhase"/>
<phase name="RMPhase"/>
<phase name="PolicyDetermination"/>
<phase name="MessageOut"/>
<phase name="Security"/>
<phase name="Transport"/>
</phaseOrder>
</axisconfig>

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<project name="mvn-launcher" basedir="">
<target name="mvn clean">
<echo message="************** Compile and install connected cup sample ****************************" />
<exec executable="${maven.executable}" dir="samples/connectedcup">
<arg value="clean" />
<arg value="install" />
</exec>
<exec executable="${maven.executable}" dir="">
<arg value="clean" />
<arg value="install" />
<arg value="-f" />
<arg value="device-deployer.xml" />
</exec>
</target>
</project>

@ -0,0 +1,105 @@
# -------------------------------------------------------------
#
# for user-editable property overrides use one of these options:
#
# (1) option-specific command line overrides, e.g.
# -Dreport.txt.out.file=coverage.txt
#
# (2) '-p <options file>' command line option,
#
# (3) 'emma.properties' resource placed somewhere in the classpath
# (e.g., in <jre dir>\classes directory -- note that it does
# not exist by default),
#
# (4) '-Demma.*' JVM options, e.g.
# -Demma.report.txt.out.file=coverage.txt
#
# (5) 'emma.properties' JVM option pointing to a properties file
# -Demma.properties=./myproperties.txt
# -------------------------------------------------------------
# -------------------------------------------------------------
# logging properties:
verbosity.level: none
# classloading properties:
#clsload.forced_delegation_filter:
#clsload.through_delegation_filter: -*
# -------------------------------------------------------------
# instrumentation properties:
instr.exclude_empty_classes: true
instr.exclude_synthetic_methods: true
instr.exclude_bridge_methods: true
instr.do_suid_compensation: true
# -------------------------------------------------------------
# runtime properties:
rt.control: false
rt.control.host: localhost
#rt.control.port: 44444
rt.filelock: true
#rt.filelock.portbase: 59141
rt.filelock.maxtime: 120000
rt.filelock.retries: 11
# -------------------------------------------------------------
# apprunner session data output properties:
session.out.file: coverage.es
session.out.merge: true
# -------------------------------------------------------------
# runtime coverage data output properties:
coverage.out.file: coverage.ec
coverage.out.merge: true
# -------------------------------------------------------------
# instr metadata output properties:
metadata.out.file: coverage.em
metadata.out.merge: true
# -------------------------------------------------------------
# common report defaults:
report.units: instr
report.depth: method
report.columns: name, line, block, method, class
report.sort: -line,-block,-method,-class,+name
report.metrics: method:40,block:80,line:40,class:100
# -------------------------------------------------------------
# txt report properties:
report.txt.depth: all
report.txt.columns: class,method,block,line,name
report.txt.out.file: coverage.txt
# -------------------------------------------------------------
# html report properties:
#report.html.out.dir: coverage
#report.html.out.file: /Users/azeez/Desktop/coverage/index.html
report.html.out.encoding: ISO-8859-1
# -------------------------------------------------------------
# xml report properties:
#report.xml.out.file: coverage.xml
report.xml.out.encoding: UTF-8
# -------------------------------------------------------------
# end of file

@ -0,0 +1,17 @@
-*.stub*
-*.stub_
-*.stub_4.0.0
-*.stub-
-org.eclipse.*
-*.equinox.*
-org.wso2.carbon.user.core.*
-samples.*
-*.log4j*
-*.axis2*
-*.ui*
-*.tenant*
-*.stratos*
-*.eventing*
-*transports*
-org.wso2.carbon.mediation.statistics*
-*startup*

@ -0,0 +1,11 @@
org.wso2.carbon.datasource_
org.wso2.carbon.dataservices.core_
org.wso2.carbon.transaction.manager_
org.wso2.carbon.dataservices.sql.driver_
org.wso2.carbon.dataservices.task_
org.wso2.carbon.ndatasource.common_
org.wso2.carbon.ndatasource.core_
org.wso2.carbon.ndatasource.rdbms_
org.wso2.carbon.ntask.common_
org.wso2.carbon.ntask.core_
org.wso2.carbon.ntask.solutions_

@ -0,0 +1,43 @@
#
# Copyright 2009 WSO2, Inc. (http://wso2.com)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# This is the log4j configuration file used by WSO2 Carbon
#
# IMPORTANT : Please do not remove or change the names of any
# of the Appenders defined here. The layout pattern & log file
# can be changed using the WSO2 Carbon Management Console, and those
# settings will override the settings in this file.
#
log4j.rootLogger=INFO, console, Default
log4j.logger.org.wso2=INFO
#Automation file apender
log4j.appender.Default=org.apache.log4j.RollingFileAppender
log4j.appender.Default.File=logs/automation.log
log4j.appender.Default.Append=true
log4j.appender.Default.MaxFileSize=10MB
log4j.appender.Default.MaxBackupIndex=10
log4j.appender.Default.layout=org.apache.log4j.PatternLayout
log4j.appender.Default.layout.ConversionPattern=%d{ISO8601} %-5p [%c] - %m%n
#Automation console apender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%-5p [%c] - %m%n

@ -0,0 +1,201 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<RampartSecurityScenarios xmlns="http://www.wso2.org/products/carbon/security">
<!-- Basic scenarios -->
<Scenario id="scenario1">
<Summary>UsernameToken</Summary>
<Description>Provides Authentication. Clients have Username Tokens</Description>
<Category>ut</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>UTOverTransport</WsuId>
<Type>basic</Type>
</Scenario>
<Scenario id="scenario2">
<Summary>Non-repudiation</Summary>
<Description>Provides Authentication and Integrity. Clients have X509 certificates</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>SigOnly</WsuId>
<Type>basic</Type>
</Scenario>
<Scenario id="scenario3">
<Summary>Integrity</Summary>
<Description>Provides Integrity. Clients do not have X509 certificates</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>SgnOnlyAnonymous</WsuId>
<Type>basic</Type>
</Scenario>
<Scenario id="scenario4">
<Summary>Confidentiality</Summary>
<Description>Provides Confidentiality. Clients do not have X509 certificates</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>EncrOnlyAnonymous</WsuId>
<Type>basic</Type>
</Scenario>
<!-- Advanced scenarios -->
<Scenario id="scenario5">
<Summary>Sign and encrypt - X509 Authentication</Summary>
<Description>Provides Authentication, Integrity and Confidentiality. Clients have X509 certificates
</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>SigEncr</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario6">
<Summary>Sign and Encrypt - Anonymous clients</Summary>
<Description>Provides Integrity and Confidentiality.</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>SgnEncrAnonymous</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario7">
<Summary>Encrypt only - Username Token Authentication</Summary>
<Description>Provides Authentication and Confidentiality. Clients have Username Tokens</Description>
<Category>ut-keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>EncrOnlyUsername</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario8">
<Summary>Sign and Encrypt - Username Token Authentication</Summary>
<Description>Provides Authentication, Integrity and Confidentiality. Clients have Username Tokens</Description>
<Category>ut-keystore</Category>
<Modules>
<Module>rampart</Module>
</Modules>
<WsuId>SgnEncrUsername</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario9">
<Summary>SecureConversation - Sign only - Service as STS - Bootstrap policy - Sign and Encrypt , X509
Authentication
</Summary>
<Description>Provides Authentication and Integrity. Multiple message exchange.Clients have X509 certificates.
</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConSignOnly</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario10">
<Summary>SecureConversation - Encrypt only - Service as STS - Bootstrap policy -
Sign and Encrypt , X509 Authentication
</Summary>
<Description>Provides Confidentiality. Multiple message exchange.Clients have X509 certificates.</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConEncrOnly</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario11">
<Summary>SecureConversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and Encrypt , X509
Authentication
</Summary>
<Description>Provides Authentication, Integrity and Confidentiality. Multiple message exchange.Clients have X509
certificates.
</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConSgnEncr</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario12">
<Summary>SecureConversation - Sign Only - Service as STS - Bootstrap policy - Sign and Encrypt , Anonymous
clients
</Summary>
<Description>Provides Integrity. Multiple message exchange.</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConSignOnlyAnonymous</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario13">
<Summary>SecureConversation - Encrypt Only - Service as STS - Bootstrap policy - Sign and Encrypt , Anonymous
clients
</Summary>
<Description>Provides Confidentiality. Multiple message exchange.</Description>
<Category>keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConEncrOnlyAnonymous</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario14">
<Summary>SecureConversation - Encrypt Only - Service as STS - Bootstrap policy - Sign and Encrypt , Username
Token Authentication
</Summary>
<Description>Provides Authentication and Confidentiality. Multiple message exchange. Clients have Username
Tokens.
</Description>
<Category>ut-keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConEncrUsername</WsuId>
<Type>advanced</Type>
</Scenario>
<Scenario id="scenario15">
<Summary>SecureConversation - Sign and Encrypt - Service as STS - Bootstrap policy - Sign and Encrypt , Username
Token Authentication
</Summary>
<Description>Provides Authentication Integrity and Confidentiality. Multiple message exchange. Clients have
Username Tokens.
</Description>
<Category>ut-keystore</Category>
<Modules>
<Module>rampart</Module>
<Module>rahas</Module>
</Modules>
<WsuId>SecConSgnEncrUsername</WsuId>
<Type>advanced</Type>
</Scenario>
</RampartSecurityScenarios>

@ -0,0 +1,51 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="UTOverTransport"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
<sp:SignedSupportingTokens
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"/>
</wsp:Policy>
</sp:SignedSupportingTokens>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,127 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConEncrOnly"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:AsymmetricBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:EncryptedParts>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,128 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConSgnEncr"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:AsymmetricBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:EncryptedParts>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,123 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConSignOnlyAnonymous"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,126 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConEncrOnlyAnonymous"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,133 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConEncrUsername"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,136 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConSgnEncrUsername"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,87 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="IssuedTokenOverTransport_UsernameOverTransport_policy"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:TransportToken>
<wsp:Policy>
<sp:HttpsToken RequireClientCertificate="false"/>
</wsp:Policy>
</sp:TransportToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
</wsp:Policy>
</sp:TransportBinding>
<sp:EndorsingSupportingTokens
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:IssuedToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<Issuer xmlns="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<Address xmlns="http://www.w3.org/2005/08/addressing">
https://kirillgdev04/Security_Federation_SecurityTokenService_Indigo/Symmetric.svc/Scenario_1_IssuedTokenOverTransport_UsernameOverTransport
</Address>
</Issuer>
<sp:RequestSecurityTokenTemplate>
<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
urn:oasis:names:tc:SAML:1.0:assertion
</t:TokenType>
<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</t:KeyType>
<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
256
</t:KeySize>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireInternalReference/>
</wsp:Policy>
</sp:IssuedToken>
<sp:SignedParts>
<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
</sp:SignedParts>
</wsp:Policy>
</sp:EndorsingSupportingTokens>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,93 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="IssuedToken_SigEncr"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:IssuedToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<Issuer xmlns="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<Address xmlns="http://www.w3.org/2005/08/addressing">
http://foo.bar/we/don/t/process/this/yet
</Address>
</Issuer>
<sp:RequestSecurityTokenTemplate>
<t:TokenType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
urn:oasis:names:tc:SAML:1.0:assertion
</t:TokenType>
<t:KeyType xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
http://schemas.xmlsoap.org/ws/2005/02/trust/SymmetricKey
</t:KeyType>
<t:KeySize xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">256</t:KeySize>
</sp:RequestSecurityTokenTemplate>
<wsp:Policy>
<sp:RequireInternalReference/>
</wsp:Policy>
</sp:IssuedToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:EncryptSignature/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
<sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/>
<sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/>
</sp:SignedParts>
<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:EncryptedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,74 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SigOnly"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
<!-- sp:WssX509V3Token10/ -->
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
<!-- sp:WssX509V3Token10/ -->
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,72 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SgnOnlyAnonymous"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,72 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="EncrOnlyAnonymous"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,82 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SigEncr"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<wsp:All>
<sp:AsymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:EncryptedParts>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,75 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SgnEncrAnonymous"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,82 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="EncrOnlyUsername"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,85 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SgnEncrUsername"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts>
<sp:Body/>
</sp:EncryptedParts>
<sp:SignedSupportingTokens>
<wsp:Policy>
<sp:UsernameToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
<sp:RequireSignatureConfirmation/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,127 @@
<!--
~ Copyright 2005-2007 WSO2, Inc. (http://wso2.com)
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<wsp:Policy wsu:Id="SecConSignOnly"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:ExactlyOne>
<wsp:All>
<sp:SymmetricBinding>
<wsp:Policy>
<sp:ProtectionToken>
<wsp:Policy>
<sp:SecureConversationToken
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:BootstrapPolicy>
<wsp:Policy>
<sp:AsymmetricBinding
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:InitiatorToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:InitiatorToken>
<sp:RecipientToken>
<wsp:Policy>
<sp:X509Token
sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never">
<wsp:Policy>
<sp:RequireThumbprintReference/>
<sp:WssX509V3Token10/>
</wsp:Policy>
</sp:X509Token>
</wsp:Policy>
</sp:RecipientToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Strict/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:AsymmetricBinding>
<sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
</wsp:Policy>
</sp:Wss10>
<sp:SignedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:SignedParts>
<sp:EncryptedParts
xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<sp:Body/>
</sp:EncryptedParts>
</wsp:Policy>
</sp:BootstrapPolicy>
</wsp:Policy>
</sp:SecureConversationToken>
</wsp:Policy>
</sp:ProtectionToken>
<sp:AlgorithmSuite>
<wsp:Policy>
<sp:Basic256/>
</wsp:Policy>
</sp:AlgorithmSuite>
<sp:Layout>
<wsp:Policy>
<sp:Lax/>
</wsp:Policy>
</sp:Layout>
<sp:IncludeTimestamp/>
<sp:OnlySignEntireHeadersAndBody/>
</wsp:Policy>
</sp:SymmetricBinding>
<sp:SignedParts>
<sp:Body/>
</sp:SignedParts>
<sp:Wss11>
<wsp:Policy>
<sp:MustSupportRefKeyIdentifier/>
<sp:MustSupportRefIssuerSerial/>
<sp:MustSupportRefThumbprint/>
<sp:MustSupportRefEncryptedKey/>
</wsp:Policy>
</sp:Wss11>
<sp:Trust10>
<wsp:Policy>
<sp:MustSupportIssuedTokens/>
<sp:RequireClientEntropy/>
<sp:RequireServerEntropy/>
</wsp:Policy>
</sp:Trust10>
</wsp:All>
</wsp:ExactlyOne>
</wsp:Policy>

@ -0,0 +1,35 @@
<!--
~ 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="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"/>
<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="InitializeAndSetupServer" preserve-order="true">
<classes>
</classes>
</test>
</suite>

@ -0,0 +1,41 @@
<!--
~ 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="DssTestSuite" parallel="false">
<parameter name="useDefaultListeners" value="false"/>
<test name="IOT-Integration-Test" parallel="false" verbose="2">
<packages>
</packages>
<classes>
<class name="org.wso2.carbon.iot.integration.web.ui.test.login.LoginTest"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.RegisterTest"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.RegistrationFormTests"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.login.LoginFailTest"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.group.DeviceGroupTest"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.group.DeviceGroupFailTest"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.TestAdminFunctions"/>
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.AddUserFormTest"/>
</classes>
</test>
</suite>

@ -42,7 +42,7 @@
<module>modules/features</module>
<module>modules/p2-profile-gen</module>
<module>modules/distribution</module>
<!--<module>modules/integration</module>-->
<module>modules/integration</module>
</modules>
<dependencyManagement>

Loading…
Cancel
Save