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.DeviceGroupsPage;
|
||||
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.UserListingPage;
|
||||
|
||||
@ -97,6 +99,17 @@ public class IOTAdminDashboard {
|
||||
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.
|
||||
* @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.groups.page=Group Management | 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-----------------------------------------------------------------------------------
|
||||
|
||||
@ -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]
|
||||
|
||||
#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
|
||||
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.user.AddUserFormValidationTest"/>
|
||||
<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.SampleInstallationVerification"/>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user