@Test
 public void testPlain1() throws Exception {
   PasswordValidator sut = new PasswordValidator(true);
   assertTrue(sut.validate("1", "1"));
   assertFalse(sut.validate("1", "2"));
   assertFalse(sut.validate("2", "1"));
 }
 @Test
 public void test6() throws Exception {
   assertFalse(sut.validate("0", "{MD5}xMpCOKC5I4INzFCab3WEmw=="));
   assertFalse(sut.validate("2", "{MD5}xMpCOKC5I4INzFCab3WEmw=="));
   assertFalse(sut.validate("3", "{MD5}xMpCOKC5I4INzFCab3WEmw=="));
   // проверка, на case-sensitive
   assertFalse(sut.validate("1", "{MD5}XMpCOKC5I4INzFCab3WEmw=="));
 }
  @Ignore
  @Test(timeout = 3000)
  public void testPerfSHA1() throws Exception {
    long t = System.currentTimeMillis();

    for (int i = 0; i < 100000; i++) {
      sut.validate("1", "{SHA-1}356a192b7913b04c54574d18c28d46e6395428ab", BinEncoding.HEX);
      sut.validate("0", "{SHA-1}356a192b7913b04c54574d18c28d46e6395428ab", BinEncoding.HEX);
      sut.validate("1", "{SHA-1}NWoZK3kTsExUV00Ywo1G5jlUKKs=");
      sut.validate("0", "{SHA-1}NWoZK3kTsExUV00Ywo1G5jlUKKs=");

      sut.calculateEncodedDigest("1", "sha-1", BinEncoding.HEX);
      sut.calculateEncodedDigest("1", "sha-1");
    }
    System.out.println(System.currentTimeMillis() - t + " ms");
  }
  @Ignore
  @Test(timeout = 3000)
  public void testPerfMD5() throws Exception {
    long t = System.currentTimeMillis();

    for (int i = 0; i < 100000; i++) {
      sut.validate("1", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX);
      sut.validate("0", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX);
      sut.validate("1", "{MD5}xMpCOKC5I4INzFCab3WEmw==");
      sut.validate("0", "{MD5}xMpCOKC5I4INzFCab3WEmw==");

      sut.calculateEncodedDigest("1", "md5", BinEncoding.HEX);
      sut.calculateEncodedDigest("1", "md5");
    }
    System.out.println(System.currentTimeMillis() - t + " ms");
  }
Пример #5
0
  /**
   * Attempts to load all Spring application context XML files to verify proper wiring.
   *
   * @throws Exception On test failure.
   */
  @Test(groups = {"passtest"})
  public void testSpringWiring() throws Exception {
    final ClassPathXmlApplicationContext context =
        new ClassPathXmlApplicationContext(
            new String[] {
              "/spring-context.xml",
            });
    AssertJUnit.assertTrue(context.getBeanDefinitionCount() > 0);

    final PasswordValidator validator =
        new PasswordValidator(new ArrayList<Rule>(context.getBeansOfType(Rule.class).values()));
    final PasswordData pd = new PasswordData(new Password("springtest"));
    pd.setUsername("springuser");

    final RuleResult result = validator.validate(pd);
    AssertJUnit.assertNotNull(result);
  }
Пример #6
0
  /**
   * Validates the password. It does this by checking to make sure the password isn't null or an
   * empty string, and then calls a method on PasswordValidator to do the validation.
   *
   * @see jamm.webapp.PasswordValidator#validatePassword
   * @param mapping The action mapping.
   * @param request The servlet request.
   * @return Any errors.
   */
  public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if ((mName == null) || mName.equals("")) {
      errors.add("name", new ActionError("add_account.error.no_name"));
    }

    if (!PasswordValidator.validatePassword(mPassword, mRetypedPassword, errors)) {
      clearPasswords();
    }

    return errors;
  }
  public JSONObject validatePwd(String pwd) {

    //        Properties props = new Properties();
    //        try{
    ////            InputStream msgProp = new FileInputStream("/messages.properties");
    //            InputStream msgProp =
    // PwdValidator.class.getClassLoader().getResourceAsStream("/messages.properties");
    //            props.load(msgProp);
    //        } catch (Exception e) {
    //                e.printStackTrace();
    //        }
    //        MessageResolver resolver = new MessageResolver(props);

    // password must be between 8 and 16 chars long
    LengthRule lengthRule = new LengthRule(6, 16);

    // control allowed characters
    CharacterCharacteristicsRule charRule = new CharacterCharacteristicsRule();
    // require at least 1 digit in passwords
    charRule.getRules().add(new DigitCharacterRule(1));
    // require at least 1 non-alphanumeric char
    charRule.getRules().add(new NonAlphanumericCharacterRule(1));
    // require at least 1 upper case char
    charRule.getRules().add(new UppercaseCharacterRule(1));
    // require at least 1 lower case char
    charRule.getRules().add(new LowercaseCharacterRule(1));
    // require at least 3 of the previous rules be met
    charRule.setNumberOfCharacteristics(4);

    // group all rules together in a List
    List<Rule> ruleList = new ArrayList<Rule>();
    ruleList.add(lengthRule);
    ruleList.add(charRule);

    PasswordValidator validator = new PasswordValidator(ruleList);
    //        PasswordValidator validator = new PasswordValidator(resolver, ruleList);
    PasswordData passwordData = new PasswordData(new Password(pwd));

    JSONObject msg = new JSONObject();
    try {
      msg.put("tooShort", false);
      msg.put("noCaps", false);
      msg.put("noSpecials", false);
      msg.put("noDigits", false);
    } catch (JSONException e) {
      e.printStackTrace();
    }

    RuleResult result = validator.validate(passwordData);
    if (result.isValid()) {
      return msg;
    } else {
      ListIterator<RuleResultDetail> resultDetailIterator = result.getDetails().listIterator();
      while (resultDetailIterator.hasNext()) {
        RuleResultDetail ruleResultDetail = resultDetailIterator.next();
        String errorCodeString = ruleResultDetail.getErrorCode();
        if (errorCodeString.equals("TOO_SHORT")) {
          try {
            msg.put("tooShort", true);
          } catch (JSONException e) {
            e.printStackTrace();
          }
        } else if (errorCodeString.equals("INSUFFICIENT_CHARACTERS")) {
          if (ruleResultDetail.getParameters().containsValue("digit")) {
            try {
              msg.put("noDigits", true);
            } catch (JSONException e) {
              e.printStackTrace();
            }
          } else if (ruleResultDetail.getParameters().containsValue("non-alphanumeric")) {
            try {
              msg.put("noSpecials", true);
            } catch (JSONException e) {
              e.printStackTrace();
            }
          } else if (ruleResultDetail.getParameters().containsValue("uppercase")) {
            try {
              msg.put("noCaps", true);
            } catch (JSONException e) {
              e.printStackTrace();
            }
          }
        }
      }
      return msg;
    }
  }
 @Test
 public void test11() throws Exception {
   assertEquals(
       "{SHA-1}356A192B7913B04C54574D18C28D46E6395428AB",
       sut.calculateEncodedDigest("1", "sha-1", BinEncoding.HEX));
 }
 @Test
 public void test10() throws Exception {
   assertEquals("{MD5}xMpCOKC5I4INzFCab3WEmw==", sut.calculateEncodedDigest("1", "md5"));
 }
 @Test
 public void test9() throws Exception {
   assertEquals(
       "{MD5}C4CA4238A0B923820DCC509A6F75849B",
       sut.calculateEncodedDigest("1", "md5", BinEncoding.HEX));
 }
 @Test(expected = IllegalArgumentException.class)
 public void test8() throws Exception {
   assertTrue(
       sut.validate("1", "{SHA-2}356a192b7913b04c54574d18c28d46e6395428ab", BinEncoding.HEX));
 }
 @Test
 public void test7() throws Exception {
   assertTrue(
       sut.validate("1", "{SHA-1}356a192b7913b04c54574d18c28d46e6395428ab", BinEncoding.HEX));
 }
 @Test
 public void test5() throws Exception {
   assertTrue(sut.validate("1", "{MD5}xMpCOKC5I4INzFCab3WEmw=="));
 }
 @Test
 public void test4() throws Exception {
   assertFalse(sut.validate("0", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX));
   assertFalse(sut.validate("2", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX));
   assertFalse(sut.validate("3", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX));
 }
 @Test
 public void test3() throws Exception {
   assertTrue(sut.validate("1", "{MD5}c4ca4238a0b923820dcc509a6f75849b", BinEncoding.HEX));
 }