| /* |
| * Copyright 2013 akquinet tech@spree GmbH |
| * |
| * 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. |
| */ |
| package de.akquinet.devops.test.ui.view; |
| |
| import java.util.List; |
| |
| import org.openqa.selenium.By; |
| import org.openqa.selenium.WebDriver; |
| import org.openqa.selenium.WebElement; |
| import org.openqa.selenium.support.ui.WebDriverWait; |
| |
| /** |
| * class representing the tabs you can access when you edit a repo. |
| * |
| * @author saheba |
| * |
| */ |
| public class RepoEditView extends GitblitDashboardView { |
| |
| public static final String PERMISSION_VIEW_USERS_NAME_PREFIX = "users:"; |
| public static final String PERMISSION_VIEW_TEAMS_NAME_PREFIX = "teams:"; |
| |
| public static final String PERMISSION_VIEW_MUTABLE = "permissionToggleForm:showMutable"; |
| public static final String PERMISSION_VIEW_SPECIFIED = "permissionToggleForm:showSpecified"; |
| public static final String PERMISSION_VIEW_EFFECTIVE = "permissionToggleForm:showEffective"; |
| |
| public static final int RESTRICTION_ANONYMOUS_VCP = 0; |
| public static final int RESTRICTION_AUTHENTICATED_P = 1; |
| public static final int RESTRICTION_AUTHENTICATED_CP = 2; |
| public static final int RESTRICTION_AUTHENTICATED_VCP = 3; |
| |
| public static final int AUTHCONTROL_RWALL = 0; |
| public static final int AUTHOCONTROL_FINE = 1; |
| |
| public RepoEditView(WebDriver driver) { |
| super(driver, null); |
| } |
| |
| public void changeName(String newName) { |
| String pathName = "//input[@id = \"name\" ]"; |
| WebElement field = getDriver().findElement(By.xpath(pathName)); |
| field.clear(); |
| field.sendKeys(newName); |
| } |
| |
| public boolean navigateToPermissionsTab() { |
| String linkText = "access permissions"; |
| List<WebElement> found = getDriver().findElements( |
| By.partialLinkText(linkText)); |
| if (found != null && found.size() == 1) { |
| found.get(0).click(); |
| return true; |
| } |
| return false; |
| } |
| |
| private void changeOwners(String action, |
| String affectedSelection, String username) { |
| String xpath = "//select[@name=\"" + affectedSelection |
| + "\"]/option[@value = \"" + username + "\" ]"; |
| WebElement option = getDriver().findElement(By.xpath(xpath)); |
| option.click(); |
| String buttonPath = "//button[@class=\"button " + action + "\"]"; |
| WebElement button = getDriver().findElement(By.xpath(buttonPath)); |
| button.click(); |
| } |
| |
| public void removeOwner(String username) { |
| changeOwners("remove", "owners:selection", |
| username); |
| } |
| |
| public void addOwner(String username) { |
| changeOwners("add", "owners:choices", username); |
| } |
| |
| public WebElement getAccessRestrictionSelection() { |
| String xpath = "//select[@name =\"accessRestriction\"]"; |
| List<WebElement> found = getDriver().findElements(By.xpath(xpath)); |
| if (found != null && found.size() == 1) { |
| return found.get(0); |
| } |
| return null; |
| } |
| |
| public boolean changeAccessRestriction(int option) { |
| WebElement accessRestrictionSelection = getAccessRestrictionSelection(); |
| if (accessRestrictionSelection == null) { |
| return false; |
| } |
| accessRestrictionSelection.click(); |
| sleep(100); |
| String xpath = "//select[@name =\"accessRestriction\"]/option[@value=\"" |
| + option + "\"]"; |
| List<WebElement> found = getDriver().findElements(By.xpath(xpath)); |
| if (found == null || found.size() == 0 || found.size() > 1) { |
| return false; |
| } |
| found.get(0).click(); |
| return true; |
| } |
| |
| public boolean changeAuthorizationControl(int option) { |
| System.out.println("try to change auth control"); |
| String xpath = "//input[@name =\"authorizationControl\" and @value=\"" |
| + option + "\"]"; |
| List<WebElement> found = getDriver().findElements(By.xpath(xpath)); |
| if (found != null && found.size() == 1) { |
| found.get(0).click(); |
| return true; |
| } |
| return false; |
| } |
| |
| private boolean isPermissionViewDisabled(String prefix, String view) { |
| String xpath = "//[@name =\"" + prefix + view + "\"]"; |
| List<WebElement> found = getDriver().findElements(By.xpath(xpath)); |
| if (found == null || found.size() == 0 || found.size() > 1) { |
| return false; |
| } |
| String attrValue = found.get(0).getAttribute("disabled"); |
| return (attrValue != null) && (attrValue.equals("disabled")); |
| } |
| |
| public boolean isPermissionViewSectionDisabled(String prefix) { |
| return isPermissionViewDisabled(prefix, PERMISSION_VIEW_MUTABLE) |
| && isPermissionViewDisabled(prefix, PERMISSION_VIEW_SPECIFIED) |
| && isPermissionViewDisabled(prefix, PERMISSION_VIEW_EFFECTIVE); |
| } |
| |
| public boolean save() { |
| String xpath = "//div[@class=\"form-actions\"]/input[@name =\"" |
| + "save" + "\"]"; |
| List<WebElement> found = getDriver().findElements(By.xpath(xpath)); |
| if (found == null || found.size() == 0 || found.size() > 1) { |
| return false; |
| } |
| found.get(0).click(); |
| WebDriverWait webDriverWait = new WebDriverWait(getDriver(), 1); |
| webDriverWait.until(new Exp.RepoListViewLoaded()); |
| return true; |
| } |
| } |