Package org.geoserver.security.validation

Source Code of org.geoserver.security.validation.PasswordValidatorTest

/* (c) 2014 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.security.validation;

import static org.geoserver.security.validation.PasswordPolicyException.IS_NULL;
import static org.geoserver.security.validation.PasswordPolicyException.MAX_LENGTH_$1;
import static org.geoserver.security.validation.PasswordPolicyException.MIN_LENGTH_$1;
import static org.geoserver.security.validation.PasswordPolicyException.NO_DIGIT;
import static org.geoserver.security.validation.PasswordPolicyException.NO_LOWERCASE;
import static org.geoserver.security.validation.PasswordPolicyException.NO_UPPERCASE;
import static org.geoserver.security.validation.PasswordPolicyException.RESERVED_PREFIX_$1;

import static org.junit.Assert.*;

import org.geoserver.security.config.PasswordPolicyConfig;
import org.geoserver.test.GeoServerMockTestSupport;
import org.junit.Before;
import org.junit.Test;

public class PasswordValidatorTest extends GeoServerMockTestSupport{

    PasswordPolicyConfig config;
    PasswordValidatorImpl validator;

    @Before
    public void init() throws Exception {
        config = new PasswordPolicyConfig();
        validator = new PasswordValidatorImpl(getSecurityManager());
        validator.setConfig(config);
       
    }

    @Test
    public void testPasswords() throws PasswordPolicyException{
        checkForException(null, IS_NULL);
       
        validator.validatePassword("".toCharArray());
        validator.validatePassword("a".toCharArray());
       
       
        checkForException("plain:a", RESERVED_PREFIX_$1,"plain:");
        checkForException("crypt1:a", RESERVED_PREFIX_$1,"crypt1:");
        checkForException("digest1:a", RESERVED_PREFIX_$1,"digest1:");
       
        validator.validatePassword("plain".toCharArray());
        validator.validatePassword("plaina".toCharArray());
       
        config.setMinLength(2);
        checkForException("a", MIN_LENGTH_$1,2);
        validator.validatePassword("aa".toCharArray());
       
        config.setMaxLength(10);
        checkForException("01234567890", MAX_LENGTH_$1,10);
        validator.validatePassword("0123456789".toCharArray());
       
        config.setDigitRequired(true);
        checkForException("abcdef", NO_DIGIT);

        validator.validatePassword("abcde4".toCharArray());
       
        config.setUppercaseRequired(true);
        checkForException("abcdef4", NO_UPPERCASE);
        validator.validatePassword("abcde4F".toCharArray());
       
        config.setLowercaseRequired(true);
        checkForException("ABCDE4F", NO_LOWERCASE);
        validator.validatePassword("abcde4F".toCharArray());       
    }
   
   
       
    protected void checkForException(String password, String id,Object... params) {
        try {
            validator.validatePassword(password != null ? password.toCharArray() : null);
        } catch (PasswordPolicyException ex) {
            assertEquals(id,ex.getId());
            assertEquals(params.length, ex.getArgs().length);
            for (int i = 0; i <  params.length ;i++) {
                assertEquals(params[i], ex.getArgs()[i]);
            }
        }       
    }
}
TOP

Related Classes of org.geoserver.security.validation.PasswordValidatorTest

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.