예제 #1
0
/** @author <a href="mailto:[email protected]">Marek Posolda</a> */
public class AccountApplicationsPage extends AbstractAccountPage {

  private String path =
      Urls.accountApplicationsPage(UriBuilder.fromUri(Constants.AUTH_SERVER_ROOT).build(), "test")
          .toString();

  @Override
  public boolean isCurrent() {
    return driver.getTitle().contains("Account Management")
        && driver.getCurrentUrl().endsWith("/account/applications");
  }

  @Override
  public void open() {
    driver.navigate().to(path);
  }

  public void setPath(String path) {
    this.path = path;
  }

  public void revokeGrant(String clientId) {
    driver.findElement(By.id("revoke-" + clientId)).click();
  }

  public Map<String, AppEntry> getApplications() {
    Map<String, AppEntry> table = new HashMap<String, AppEntry>();
    for (WebElement r : driver.findElements(By.tagName("tr"))) {
      int count = 0;
      AppEntry currentEntry = null;

      for (WebElement col : r.findElements(By.tagName("td"))) {
        count++;
        switch (count) {
          case 1:
            currentEntry = new AppEntry();
            String client = col.getText();
            table.put(client, currentEntry);
            break;
          case 2:
            String rolesStr = col.getText();
            String[] roles = rolesStr.split(",");
            for (String role : roles) {
              role = role.trim();
              currentEntry.addAvailableRole(role);
            }
            break;
          case 3:
            rolesStr = col.getText();
            if (rolesStr.isEmpty()) break;
            roles = rolesStr.split(",");
            for (String role : roles) {
              role = role.trim();
              currentEntry.addGrantedRole(role);
            }
            break;
          case 4:
            String protMappersStr = col.getText();
            if (protMappersStr.isEmpty()) break;
            String[] protMappers = protMappersStr.split(",");
            for (String protMapper : protMappers) {
              protMapper = protMapper.trim();
              currentEntry.addMapper(protMapper);
            }
            break;
          case 5:
            String additionalGrant = col.getText();
            if (additionalGrant.isEmpty()) break;
            String[] grants = additionalGrant.split(",");
            for (String grant : grants) {
              grant = grant.trim();
              currentEntry.addAdditionalGrant(grant);
            }
            break;
        }
      }
    }
    table.remove("Application");
    return table;
  }

  public static class AppEntry {

    private final List<String> rolesAvailable = new ArrayList<String>();
    private final List<String> rolesGranted = new ArrayList<String>();
    private final List<String> protocolMappersGranted = new ArrayList<String>();
    private final List<String> additionalGrants = new ArrayList<>();

    private void addAvailableRole(String role) {
      rolesAvailable.add(role);
    }

    private void addGrantedRole(String role) {
      rolesGranted.add(role);
    }

    private void addMapper(String protocolMapper) {
      protocolMappersGranted.add(protocolMapper);
    }

    private void addAdditionalGrant(String grant) {
      additionalGrants.add(grant);
    }

    public List<String> getRolesGranted() {
      return rolesGranted;
    }

    public List<String> getRolesAvailable() {
      return rolesAvailable;
    }

    public List<String> getProtocolMappersGranted() {
      return protocolMappersGranted;
    }

    public List<String> getAdditionalGrants() {
      return additionalGrants;
    }
  }
}
예제 #2
0
 public String getApplicationsUrl() {
   return Urls.accountApplicationsPage(baseQueryURI, realm).toString();
 }