/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.security.pwd;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.model.PasswordPolicy;
import com.liferay.portal.model.impl.PasswordPolicyImpl;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* @author Mika Koivisto
*/
public class PasswordPolicyToolkitTest {
@Before
public void setUp() throws Exception {
_passwordPolicyToolkit = new PasswordPolicyToolkit();
_passwordPolicy = new PasswordPolicyImpl();
_passwordPolicy.setAllowDictionaryWords(true);
_passwordPolicy.setChangeable(true);
_passwordPolicy.setCheckSyntax(true);
_passwordPolicy.setMinAlphanumeric(5);
_passwordPolicy.setMinLength(8);
_passwordPolicy.setMinLowerCase(2);
_passwordPolicy.setMinUpperCase(2);
_passwordPolicy.setMinNumbers(1);
_passwordPolicy.setMinSymbols(1);
_passwordPolicy.setRegex(".{5,}");
}
@Test
public void testGeneratePassword() throws PortalException {
String password = _passwordPolicyToolkit.generate(_passwordPolicy);
_passwordPolicyToolkit.validate(password, password, _passwordPolicy);
}
@Test
public void testValidateLength() {
Assert.assertEquals(false, validate("xH9fxM@"));
}
@Test
public void testValidateMinAlphanumeric() {
Assert.assertEquals(false, validate("xH9f.,@-"));
}
@Test
public void testValidateMinLowerChars() {
Assert.assertEquals(false, validate("xHFXM@W"));
}
@Test
public void testValidateMinNumbers() {
Assert.assertEquals(false, validate("xHafxMkw"));
}
@Test
public void testValidateMinSpecial() {
Assert.assertEquals(false, validate("xH9fxMkw"));
}
@Test
public void testValidateMinUpperChars() {
Assert.assertEquals(false, validate("xh9fxM@w"));
}
@Test
public void testValidateRegex() {
Assert.assertEquals(false, validate("xH9fxM@"));
}
@Test
public void testValidateValid() {
Assert.assertEquals(true, validate("xH9fxM@w"));
}
@Test
public void testValidateValidUpperCase() {
Assert.assertEquals(true, validate("xO9fxlM@w"));
}
protected boolean validate(String password) {
try {
_passwordPolicyToolkit.validate(
password, password, _passwordPolicy);
}
catch (Exception e) {
return false;
}
return true;
}
private PasswordPolicy _passwordPolicy;
private PasswordPolicyToolkit _passwordPolicyToolkit;
}