mirror of
https://repository.entgra.net/community/product-iots.git
synced 2025-09-16 23:32:19 +00:00
Add UI testcase to test policy view
This commit adds testcases to test UI functionalities of adding a simple android policy and viewing it from the user interface.
This commit is contained in:
parent
7f2f03608a
commit
8a84c2d6e3
@ -31,6 +31,8 @@ import org.wso2.iot.integration.ui.pages.devices.EnrollDevicePage;
|
|||||||
import org.wso2.iot.integration.ui.pages.groups.DeviceAddGroupPage;
|
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.groups.DeviceGroupsPage;
|
||||||
import org.wso2.iot.integration.ui.pages.login.LoginPage;
|
import org.wso2.iot.integration.ui.pages.login.LoginPage;
|
||||||
|
import org.wso2.iot.integration.ui.pages.policy.PolicyAddPage;
|
||||||
|
import org.wso2.iot.integration.ui.pages.policy.PolicyPage;
|
||||||
import org.wso2.iot.integration.ui.pages.uesr.AddUserPage;
|
import org.wso2.iot.integration.ui.pages.uesr.AddUserPage;
|
||||||
import org.wso2.iot.integration.ui.pages.uesr.UserListingPage;
|
import org.wso2.iot.integration.ui.pages.uesr.UserListingPage;
|
||||||
|
|
||||||
@ -97,6 +99,17 @@ public class IOTAdminDashboard {
|
|||||||
return new DeviceGroupsPage(driver);
|
return new DeviceGroupsPage(driver);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Performs the navigation to policy management page.
|
||||||
|
*
|
||||||
|
* @return {@link PolicyPage} which includes functionality which can be done in policy management page
|
||||||
|
* @throws IOException If error occurs when getting the {@link PolicyPage}
|
||||||
|
*/
|
||||||
|
public PolicyPage getPolicyManagementPage() throws IOException {
|
||||||
|
driver.findElement(By.xpath(uiElementMapper.getElement("iot.policy.viewButton.xpath"))).click();
|
||||||
|
return new PolicyPage(driver);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Navigates to the Add User page.
|
* Navigates to the Add User page.
|
||||||
* @return : Add user page.
|
* @return : Add user page.
|
||||||
|
|||||||
@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
|
* either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.iot.integration.ui.pages.policy;
|
||||||
|
|
||||||
|
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.UIUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class PolicyAddPage {
|
||||||
|
|
||||||
|
private WebDriver driver;
|
||||||
|
private UIElementMapper uiElementMapper;
|
||||||
|
|
||||||
|
public PolicyAddPage(WebDriver driver) throws IOException {
|
||||||
|
this.driver = driver;
|
||||||
|
this.uiElementMapper = UIElementMapper.getInstance();
|
||||||
|
WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
|
||||||
|
|
||||||
|
if (!webDriverWait
|
||||||
|
.until(ExpectedConditions.titleContains(uiElementMapper.getElement("cdmf.policy.add.page")))) {
|
||||||
|
throw new IllegalStateException("This is not the Add Group page");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds an android policy.
|
||||||
|
*
|
||||||
|
* @param name name of the policy
|
||||||
|
* @param description description of the policy
|
||||||
|
* @return {@link PolicyPage}
|
||||||
|
* @throws IOException If error occurred when adding a policy
|
||||||
|
*/
|
||||||
|
public PolicyPage addAndroidSamplePolicy(String name, String description) throws IOException {
|
||||||
|
WebElement androidPolicyCreateButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.add.android.policy.xpath")));
|
||||||
|
androidPolicyCreateButton.click();
|
||||||
|
WebElement androidPasscodePolicy = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.passcode.policy.button")));
|
||||||
|
androidPasscodePolicy.click();
|
||||||
|
WebElement androidPasscodePolicyEnableButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.passcode.policy.enable.button")));
|
||||||
|
androidPasscodePolicyEnableButton.click();
|
||||||
|
WebElement androidPolicyConfigContinueButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.policy.configuration.continue.button")));
|
||||||
|
androidPolicyConfigContinueButton.click();
|
||||||
|
WebElement androidPolicyAssignGroupsContinueButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.assignGroups.continue.button")));
|
||||||
|
androidPolicyAssignGroupsContinueButton.click();
|
||||||
|
WebElement androidPolicyNameInput = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.name.input")));
|
||||||
|
WebElement androidPolicyDescriptionInput = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.description.input")));
|
||||||
|
WebElement androidPolicyPublishButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.android.publish.button")));
|
||||||
|
|
||||||
|
androidPolicyNameInput.sendKeys(name);
|
||||||
|
androidPolicyDescriptionInput.sendKeys(description);
|
||||||
|
androidPolicyPublishButton.click();
|
||||||
|
|
||||||
|
return new PolicyPage(driver);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
|
* either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.iot.integration.ui.pages.policy;
|
||||||
|
|
||||||
|
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.UIUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class PolicyPage {
|
||||||
|
|
||||||
|
private WebDriver driver;
|
||||||
|
private UIElementMapper uiElementMapper;
|
||||||
|
|
||||||
|
public PolicyPage(WebDriver driver) throws IOException {
|
||||||
|
this.driver = driver;
|
||||||
|
this.uiElementMapper = UIElementMapper.getInstance();
|
||||||
|
WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
|
||||||
|
|
||||||
|
if (!webDriverWait.until(ExpectedConditions.titleContains(uiElementMapper.getElement("cdmf.policy.page")))) {
|
||||||
|
throw new IllegalStateException("This is not the Policy page");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to go to the add policy page, by clicking the Add policy button.
|
||||||
|
* @return {@link PolicyAddPage} add policy page
|
||||||
|
*/
|
||||||
|
public PolicyAddPage addNewPolicy() throws IOException {
|
||||||
|
WebElement addPolicyButton = driver.findElement(By.xpath(
|
||||||
|
uiElementMapper.getElement("iot.policy.add.button.xpath")));
|
||||||
|
addPolicyButton.click();
|
||||||
|
return new PolicyAddPage(driver);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method to go to the view policy page, by clicking a policy
|
||||||
|
* @return {@link PolicyViewPage} view policy page
|
||||||
|
* @throws IOException If unable to navigate to view policy page
|
||||||
|
*/
|
||||||
|
public PolicyViewPage viewPolicy() throws IOException {
|
||||||
|
WebElement policyViewIcon = driver.findElement(By.xpath(uiElementMapper.getElement("iot.policy.view.icon")));
|
||||||
|
policyViewIcon.click();
|
||||||
|
return new PolicyViewPage(driver);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
|
* either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.iot.integration.ui.pages.policy;
|
||||||
|
|
||||||
|
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;
|
||||||
|
import org.wso2.iot.integration.ui.pages.UIUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class PolicyViewPage {
|
||||||
|
|
||||||
|
private WebDriver driver;
|
||||||
|
private UIElementMapper uiElementMapper;
|
||||||
|
|
||||||
|
public PolicyViewPage(WebDriver driver) throws IOException {
|
||||||
|
this.driver = driver;
|
||||||
|
this.uiElementMapper = UIElementMapper.getInstance();
|
||||||
|
WebDriverWait webDriverWait = new WebDriverWait(driver, UIUtils.webDriverTimeOut);
|
||||||
|
|
||||||
|
if (!webDriverWait
|
||||||
|
.until(ExpectedConditions.titleContains(uiElementMapper.getElement("cdmf.policy.view.page")))) {
|
||||||
|
throw new IllegalStateException("This is not the Add Group page");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests if the policy is viewable
|
||||||
|
* @return {@code true} if policy is viewable
|
||||||
|
*/
|
||||||
|
public boolean isPolicyViewable() {
|
||||||
|
return driver.findElements(By.xpath(uiElementMapper.getElement("iot.policy.view.passcode.element"))).size()
|
||||||
|
!= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -24,6 +24,9 @@ cdmf.error.page=Error | CDMF
|
|||||||
cdmf.user.home.page=Device Management | CDMF
|
cdmf.user.home.page=Device Management | CDMF
|
||||||
cdmf.groups.page=Group Management | CDMF
|
cdmf.groups.page=Group Management | CDMF
|
||||||
cdmf.user.add.page=User Management | Add User | CDMF
|
cdmf.user.add.page=User Management | Add User | CDMF
|
||||||
|
cdmf.policy.page=Policy Management | WSO2 IoT Server
|
||||||
|
cdmf.policy.add.page=Policy Management | Add Policy | WSO2 IoT Server
|
||||||
|
cdmf.policy.view.page=Policy Management | View Policy | WSO2 IoT Server
|
||||||
|
|
||||||
# User registration and login details-----------------------------------------------------------------------------------
|
# User registration and login details-----------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -103,6 +106,20 @@ iot.device.group.addGroupForm.addButton.id=add-group-btn
|
|||||||
|
|
||||||
iot.device.groups.view.header.xpath=/html/body/div[3]/div[2]/div/h1[1]
|
iot.device.groups.view.header.xpath=/html/body/div[3]/div[2]/div/h1[1]
|
||||||
|
|
||||||
|
#Policy Page Elements
|
||||||
|
iot.policy.viewButton.xpath=/html/body/div[3]/div[2]/div/div[3]/div[4]/div/div[2]/div[2]/span[2]/a[1]
|
||||||
|
iot.policy.add.button.xpath=//*[@id="ast-container"]/div/h3[3]/a
|
||||||
|
iot.policy.add.android.policy.xpath=/html/body/div[3]/div[2]/div/div[3]/div/div[6]/div/div[2]/div/div[2]/div/ul/li[1]/a
|
||||||
|
iot.policy.android.passcode.policy.button=//*[@id="device-type-policy-operations"]/div/div[1]/a[1]
|
||||||
|
iot.policy.android.passcode.policy.enable.button=//*[@id="passcode-policy-lbl"]/input
|
||||||
|
iot.policy.android.policy.configuration.continue.button=/html/body/div[3]/div[2]/div/div[3]/div/div[5]/div/div[2]/div/div[3]/a[2]
|
||||||
|
iot.policy.android.assignGroups.continue.button=/html/body/div[3]/div[2]/div/div[3]/div/div[4]/div/div[2]/div/div[3]/a[2]
|
||||||
|
iot.policy.android.name.input=//*[@id="policy-name-input"]
|
||||||
|
iot.policy.android.description.input=//*[@id="policy-description-input"]
|
||||||
|
iot.policy.android.publish.button=/html/body/div[3]/div[2]/div/div[3]/div/div[3]/div/div[2]/div/div[3]/a[2]
|
||||||
|
iot.policy.view.icon=//*[@id="policy-grid"]/tbody/tr/td[1]
|
||||||
|
iot.policy.view.passcode.element=//*[@id="device-type-policy-operations"]/div/div[1]/a[1]
|
||||||
|
|
||||||
#/html/body/div[3]/div[2]/div/div[3]/div/div/div[1]/label
|
#/html/body/div[3]/div[2]/div/div[3]/div/div/div[1]/label
|
||||||
iot.device.groups.add.emptyfrom.error=/html/body/div[3]/div[2]/div/div[3]/div/div/div[1]/label
|
iot.device.groups.add.emptyfrom.error=/html/body/div[3]/div[2]/div/div[3]/div/div/div[1]/label
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,63 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
|
||||||
|
*
|
||||||
|
* WSO2 Inc. licenses this file to you under the Apache License,
|
||||||
|
* Version 2.0 (the "License"); you may not use this file except
|
||||||
|
* in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||||
|
* either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.wso2.carbon.iot.integration.web.ui.test.policy;
|
||||||
|
|
||||||
|
import org.openqa.selenium.WebDriver;
|
||||||
|
import org.testng.Assert;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
import org.wso2.carbon.automation.extensions.selenium.BrowserManager;
|
||||||
|
import org.wso2.carbon.iot.integration.web.ui.test.common.IOTIntegrationUIBaseTestCase;
|
||||||
|
import org.wso2.carbon.iot.integration.web.ui.test.common.LoginUtils;
|
||||||
|
import org.wso2.iot.integration.ui.pages.home.IOTAdminDashboard;
|
||||||
|
import org.wso2.iot.integration.ui.pages.policy.PolicyAddPage;
|
||||||
|
import org.wso2.iot.integration.ui.pages.policy.PolicyPage;
|
||||||
|
import org.wso2.iot.integration.ui.pages.policy.PolicyViewPage;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class PolicyTest 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 policy.")
|
||||||
|
public void addNewPolicyTest() throws IOException {
|
||||||
|
PolicyPage policyPage = adminDashboard.getPolicyManagementPage();
|
||||||
|
PolicyAddPage policyAddPage = policyPage.addNewPolicy();
|
||||||
|
policyAddPage.addAndroidSamplePolicy("TestPolicy", "This is a sample policy");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(description = "Test for adding a new policy.", dependsOnMethods = "addNewPolicyTest")
|
||||||
|
public void policyViewTest() throws IOException {
|
||||||
|
PolicyPage policyPage = adminDashboard.getPolicyManagementPage();
|
||||||
|
PolicyViewPage policyViewPage = policyPage.viewPolicy();
|
||||||
|
Assert.assertTrue(policyViewPage.isPolicyViewable());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -35,6 +35,7 @@
|
|||||||
<class name="org.wso2.carbon.iot.integration.web.ui.test.group.DeviceGroupFailTest"/>
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.group.DeviceGroupFailTest"/>
|
||||||
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.AddUserFormValidationTest"/>
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.AddUserFormValidationTest"/>
|
||||||
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.AdminFunctionsTest"/>
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.user.AdminFunctionsTest"/>
|
||||||
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.policy.PolicyTest"/>
|
||||||
<!--
|
<!--
|
||||||
<class name="org.wso2.carbon.iot.integration.web.ui.test.samples.SampleInstallationTest"/>
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.samples.SampleInstallationTest"/>
|
||||||
<class name="org.wso2.carbon.iot.integration.web.ui.test.samples.SampleInstallationVerification"/>
|
<class name="org.wso2.carbon.iot.integration.web.ui.test.samples.SampleInstallationVerification"/>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user