Package org.sonatype.configuration.validation

Examples of org.sonatype.configuration.validation.ValidationResponse


    this.privilegeDescriptors = privilegeDescriptors;
    this.idGenerator = idGenerator;
  }

  public ValidationResponse validateModel(ValidationRequest<Configuration> request) {
    ValidationResponse response = new ValidationResponse();
    response.setContext(new SecurityValidationContext());

    Configuration model = (Configuration) request.getConfiguration();

    SecurityValidationContext context = (SecurityValidationContext) response.getContext();

    List<CPrivilege> privs = model.getPrivileges();

    if (privs != null) {
      for (CPrivilege priv : privs) {
        response.append(validatePrivilege(context, priv, false));
      }
    }

    List<CRole> roles = model.getRoles();

    if (roles != null) {
      for (CRole role : roles) {
        response.append(validateRole(context, role, false));
      }
    }

    response.append(validateRoleContainment(context));

    List<CUser> users = model.getUsers();

    if (users != null) {
      for (CUser user : users) {
        Set<String> roleIds = new HashSet<String>();
        for (CUserRoleMapping userRoleMapping : (List<CUserRoleMapping>) model.getUserRoleMappings()) {
          if (userRoleMapping.getUserId() != null && userRoleMapping.getUserId().equals(user.getId())
              && (DEFAULT_SOURCE.equals(userRoleMapping.getSource()))) {
            roleIds.addAll(userRoleMapping.getRoles());
          }
        }

        response.append(validateUser(context, user, roleIds, false));
      }
    }

    List<CUserRoleMapping> userRoleMappings = model.getUserRoleMappings();
    if (userRoleMappings != null) {
      for (CUserRoleMapping userRoleMapping : userRoleMappings) {
        response.append(this.validateUserRoleMapping(context, userRoleMapping, false));
      }
    }

    // summary
    if (response.getValidationErrors().size() > 0 || response.getValidationWarnings().size() > 0) {
      log.error("* * * * * * * * * * * * * * * * * * * * * * * * * *");

      log.error("Security configuration has validation errors/warnings");

      log.error("* * * * * * * * * * * * * * * * * * * * * * * * * *");

      if (response.getValidationErrors().size() > 0) {
        log.error("The ERRORS:");

        for (ValidationMessage msg : response.getValidationErrors()) {
          log.error(msg.toString());
        }
      }

      if (response.getValidationWarnings().size() > 0) {
        log.error("The WARNINGS:");

        for (ValidationMessage msg : response.getValidationWarnings()) {
          log.error(msg.toString());
        }
      }

      log.error("* * * * * * * * * * * * * * * * * * * * *");
 
View Full Code Here


  }

  public void testBad1()
      throws Exception
  {
    ValidationResponse response =
        configurationValidator.validateModel(new ValidationRequest<Configuration>(
            getConfigurationFromStream(
                getClass().getResourceAsStream("/org/sonatype/security/configuration/validator/security-bad1.xml"))));

    assertFalse(response.isValid());

    assertFalse(response.isModified());

    // emails are not longer unique!
    assertEquals(11, response.getValidationErrors().size());

    assertEquals(0, response.getValidationWarnings().size());
  }
View Full Code Here

  }

  public void testBad2()
      throws Exception
  {
    ValidationResponse response =
        configurationValidator.validateModel(new ValidationRequest<Configuration>(
            getConfigurationFromStream(
                getClass().getResourceAsStream("/org/sonatype/security/configuration/validator/security-bad2.xml"))));

    assertFalse(response.isValid());

    assertTrue(response.isModified());

    assertEquals(3, response.getValidationWarnings().size());

    assertEquals(12, response.getValidationErrors().size());
  }
View Full Code Here

    return response;
  }

  public ValidationResponse validatePrivilege(SecurityValidationContext ctx, CPrivilege privilege, boolean update) {
    ValidationResponse response = new ValidationResponse();

    if (ctx != null) {
      response.setContext(ctx);
    }

    for (PrivilegeDescriptor descriptor : privilegeDescriptors) {
      ValidationResponse resp = descriptor.validatePrivilege(privilege, ctx, update);

      if (resp != null) {
        response.append(resp);
      }
    }
View Full Code Here

  }

  public void testBad3()
      throws Exception
  {
    ValidationResponse response =
        configurationValidator.validateModel(new ValidationRequest<Configuration>(
            getConfigurationFromStream(
                getClass().getResourceAsStream("/org/sonatype/security/configuration/validator/security-bad3.xml"))));

    assertFalse(response.isValid());

    assertTrue(response.isModified());

    assertEquals(2, response.getValidationWarnings().size());

    assertEquals(2, response.getValidationErrors().size());
  }
View Full Code Here

    return response;
  }

  public ValidationResponse validateRoleContainment(SecurityValidationContext ctx) {
    ValidationResponse response = new ValidationResponse();

    if (ctx != null) {
      response.setContext(ctx);
    }

    SecurityValidationContext context = (SecurityValidationContext) response.getContext();

    if (context.getExistingRoleIds() != null) {
      for (String roleId : context.getExistingRoleIds()) {
        response.append(isRecursive(roleId, roleId, ctx));
      }
    }

    return response;
  }
View Full Code Here

    containedRoles.add("role1");
    context.addExistingRoleIds();
    context.getExistingRoleIds().add("role3");
    context.getRoleContainmentMap().put("role3", containedRoles);

    ValidationResponse vr = configurationValidator.validateRoleContainment(context);

    assertFalse(vr.isValid());
    assertEquals(vr.getValidationErrors().size(), 3);

  }
View Full Code Here

    return name;
  }

  private ValidationResponse isRecursive(String baseRoleId, String roleId, SecurityValidationContext ctx) {
    ValidationResponse response = new ValidationResponse();

    List<String> containedRoles = ctx.getRoleContainmentMap().get(roleId);

    for (String containedRoleId : containedRoles) {
      // Only need to do this on the first level
      if (baseRoleId.equals(roleId)) {
        if (!ctx.getExistingRoleIds().contains(roleId)) {
          ValidationMessage message =
              new ValidationMessage("roles", "Role '" + getRoleTextForDisplay(baseRoleId, ctx)
                  + "' contains an invalid role", "Role cannot contain invalid role '"
                  + getRoleTextForDisplay(roleId, ctx) + "'.");

          response.addValidationWarning(message);
        }
      }

      if (containedRoleId.equals(baseRoleId)) {
        ValidationMessage message =
            new ValidationMessage("roles", "Role '" + getRoleTextForDisplay(baseRoleId, ctx)
                + "' contains itself through Role '" + getRoleTextForDisplay(roleId, ctx)
                + "'.  This is not valid.", "Role cannot contain itself recursively (via role '"
                + getRoleTextForDisplay(roleId, ctx) + "').");

        response.addValidationError(message);

        break;
      }

      if (ctx.getExistingRoleIds().contains(containedRoleId)) {
        response.append(isRecursive(baseRoleId, containedRoleId, ctx));
      }
      // Only need to do this on the first level
      else if (baseRoleId.equals(roleId)) {
        ValidationMessage message =
            new ValidationMessage("roles", "Role '" + getRoleTextForDisplay(roleId, ctx)
                + "' contains an invalid role '" + getRoleTextForDisplay(containedRoleId, ctx) + "'.",
                "Role cannot contain invalid role '"
                    + getRoleTextForDisplay(containedRoleId, ctx) + "'.");

        response.addValidationWarning(message);
      }
    }

    return response;
  }
View Full Code Here

    role1.addPrivilege("foo");

    context.addExistingRoleIds();
    context.getExistingRoleIds().add("role1");

    ValidationResponse vr = configurationValidator.validateRole(context, role1, true);

    assertTrue(vr.isValid());
    assertEquals(vr.getValidationErrors().size(), 0);
    assertEquals(vr.getValidationWarnings().size(), 1);
    assertEquals(
        vr.getValidationWarnings().get(0).getMessage(),
        "Role ID 'role1' Invalid privilege id 'foo' found."
    );
  }
View Full Code Here

    return response;
  }

  public ValidationResponse validateRole(SecurityValidationContext ctx, CRole role, boolean update) {
    ValidationResponse response = new ValidationResponse();

    if (ctx != null) {
      response.setContext(ctx);
    }

    SecurityValidationContext context = (SecurityValidationContext) response.getContext();

    List<String> existingIds = context.getExistingRoleIds();

    if (existingIds == null) {
      context.addExistingRoleIds();

      existingIds = context.getExistingRoleIds();
    }

    if (!update && existingIds.contains(role.getId())) {
      ValidationMessage message = new ValidationMessage("id", "Role ID must be unique.");
      response.addValidationError(message);
    }

    if (update && !existingIds.contains(role.getId())) {
      ValidationMessage message = new ValidationMessage("id", "Role ID cannot be changed.");
      response.addValidationError(message);
    }

    if (!update && (StringUtils.isEmpty(role.getId()) || "0".equals(role.getId()))) {
      String newId = idGenerator.generateId();

      response.addValidationWarning("Fixed wrong role ID from '" + role.getId() + "' to '" + newId + "'");

      role.setId(newId);

      response.setModified(true);
    }

    Map<String, String> existingRoleNameMap = context.getExistingRoleNameMap();

    if (StringUtils.isEmpty(role.getName())) {
      ValidationMessage message =
          new ValidationMessage("name", "Role ID '" + role.getId() + "' requires a name.", "Name is required.");
      response.addValidationError(message);
    }
    else if (isRoleNameAlreadyInUse(existingRoleNameMap, role)) {
      ValidationMessage message =
          new ValidationMessage("name", "Role ID '" + role.getId() + "' can't use the name '" + role.getName()
              + "'.", "Name is already in use.");
      response.addValidationError(message);
    }
    else {
      existingRoleNameMap.put(role.getId(), role.getName());
    }

    if (context.getExistingPrivilegeIds() != null) {
      List<String> privIds = role.getPrivileges();

      for (String privId : privIds) {
        if (!context.getExistingPrivilegeIds().contains(privId)) {
          ValidationMessage message =
              new ValidationMessage("privileges", "Role ID '" + role.getId() + "' Invalid privilege id '"
                  + privId + "' found.", "Role cannot contain invalid privilege ID '" + privId + "'.");
          response.addValidationWarning(message);
        }
      }
    }

    List<String> roleIds = role.getRoles();

    List<String> containedRoles = context.getRoleContainmentMap().get(role.getId());

    if (containedRoles == null) {
      containedRoles = new ArrayList<String>();
      context.getRoleContainmentMap().put(role.getId(), containedRoles);
    }

    for (String roleId : roleIds) {
      if (roleId.equals(role.getId())) {
        ValidationMessage message =
            new ValidationMessage("roles", "Role ID '" + role.getId() + "' cannot contain itself.",
                "Role cannot contain itself.");
        response.addValidationError(message);
      }
      else if (context.getRoleContainmentMap() != null) {
        containedRoles.add(roleId);
      }
    }

    // It is expected that a full context is built upon update
    if (update) {
      response.append(isRecursive(role.getId(), role.getId(), context));
    }

    existingIds.add(role.getId());

    return response;
View Full Code Here

TOP

Related Classes of org.sonatype.configuration.validation.ValidationResponse

Copyright © 2018 www.massapicom. 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.