Package de.akquinet.devops.test.ui.view

Source Code of de.akquinet.devops.test.ui.view.RepoEditView

/*
* 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;
  }
}
TOP

Related Classes of de.akquinet.devops.test.ui.view.RepoEditView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.