0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson/*
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * CDDL HEADER START
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * The contents of this file are subject to the terms of the
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Common Development and Distribution License, Version 1.0 only
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * (the "License"). You may not use this file except in compliance
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * with the License.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * or http://forgerock.org/license/CDDLv1.0.html.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * See the License for the specific language governing permissions
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * and limitations under the License.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * When distributing Covered Code, include this CDDL HEADER in each
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * file and include the License file at legal-notices/CDDLv1_0.txt.
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * If applicable, add the following below this CDDL HEADER, with the
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * fields enclosed by brackets "[]" replaced with your own identifying
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * information:
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Portions Copyright [yyyy] [name of copyright owner]
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * CDDL HEADER END
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
05b42f00b813c3dc70cbb80d62089f9cc0f6f549ludovicp * Copyright 2006-2008 Sun Microsystems, Inc.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonpackage org.opends.server.extensions;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport java.util.ArrayList;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport java.util.HashSet;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport java.util.List;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.testng.annotations.BeforeClass;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.testng.annotations.DataProvider;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.testng.annotations.Test;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.TestCaseUtils;
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suterimport org.opends.messages.MessageBuilder;
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suterimport org.opends.messages.Message;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.admin.std.meta.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.admin.std.server.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.admin.server.AdminTestCaseUtils;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.config.ConfigException;
02dfa37c68e25bff17fa958b0773b88262bb1380jarnouimport org.opends.server.core.ModifyOperationBasis;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.protocols.internal.InternalClientConnection;
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduffimport org.opends.server.types.Attributes;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ByteString;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ConfigChangeResult;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.Control;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.DN;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.Entry;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.InitializationException;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.Modification;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ModificationType;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ResultCode;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport static org.testng.Assert.*;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson/**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * A set of test cases for the repeated characters password validator.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonpublic class RepeatedCharactersPasswordValidatorTestCase
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson extends ExtensionsTestCase
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson{
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Ensures that the Directory Server is running.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @BeforeClass()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void startServer()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.startServer();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Retrieves a set of valid configuration entries that may be used to
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * initialize the validator.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @DataProvider(name = "validConfigs")
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public Object[][] getValidConfigs()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson List<Entry> entries = TestCaseUtils.makeEntries(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: true",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 0",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Object[][] array = new Object[entries.size()][1];
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson for (int i=0; i < array.length; i++)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson array[i] = new Object[] { entries.get(i) };
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson return array;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the process of initializing the server with valid configurations.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @param entry The configuration entry to use for the initialization.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test(dataProvider = "validConfigs")
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testInitializeWithValidConfigs(Entry e)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(), e);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Retrieves a set of invalid configuration entries.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @DataProvider(name = "invalidConfigs")
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public Object[][] getInvalidConfigs()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson List<Entry> entries = TestCaseUtils.makeEntries(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson // Missing maximum consecutive length
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson // Missing case-sensitive validation
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson // Non-numeric maximum consecutive length
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: non-numeric",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson // Non-boolean case-sensitive validation
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: non-boolean",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson // Maximum consecutive length out of range.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: -1",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Object[][] array = new Object[entries.size()][1];
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson for (int i=0; i < array.length; i++)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson array[i] = new Object[] { entries.get(i) };
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson return array;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the process of initializing the server with invalid configurations.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @param entry The configuration entry to use for the initialization.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test(dataProvider = "invalidConfigs",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson expectedExceptions = { ConfigException.class,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InitializationException.class })
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testInitializeWithInvalidConfigs(Entry e)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(), e);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the {@code passwordIsAcceptable} method with a password that falls
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * within the constraints of the password validator. Case-sensitivity will
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * not be an issue.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptable2Consecutive()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("password");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "password")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson invalidReason.toString());
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the {@code passwordIsAcceptable} method with a password that falls
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * outside of the constraints of the password validator. Case-sensitivity
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * will not be an issue.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptable3Consecutive()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("passsword");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "passsword")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertFalse(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the {@code passwordIsAcceptable} method with a password that falls
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * within the constraints of the password validator only because it is
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * configured to operate in a case-sensitive manner.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableCaseSensitive()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: true");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("passSword");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "passSword")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson invalidReason.toString());
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the {@code passwordIsAcceptable} method with a password that falls
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * outside of the constraints of the password validator because it is
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * configured to operate in a case-insensitive manner.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableCaseInsensitive()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: false");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("passSword");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "passSword")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertFalse(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the {@code passwordIsAcceptable} method when the validator is
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * configured to accept any number of repeated characters.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableUnlimitedRepeats()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 0",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: true");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("aaaaaaaa");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "aaaaaaaa")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson invalidReason.toString());
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson /**
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the ability of the password validator to change its behavior when
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * the configuration is updated.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson *
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson */
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson @Test()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableConfigurationChange()
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson throws Exception
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson {
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson TestCaseUtils.initializeTestBackend(true);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry userEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: uid=test.user,o=test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: person",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: organizationalPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: inetOrgPerson",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "uid: test.user",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "givenName: Test",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "sn: User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry validatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 0",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: true");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new RepeatedCharactersPasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
7185b49f58c4cdb16d035ecc45e38ec9b1cd9bd0matthew_swift ByteString password = ByteString.valueOf("aaaaaaaa");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ArrayList<Modification> mods = new ArrayList<Modification>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson mods.add(new Modification(ModificationType.REPLACE,
d25372dc8e65a9ed019a88fdf659ca61313f1b31jcduff Attributes.create("userpassword", "aaaaaaaa")));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection conn =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson InternalClientConnection.getRootConnection();
02dfa37c68e25bff17fa958b0773b88262bb1380jarnou ModifyOperationBasis modifyOperation =
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
2efcb9667318c099d8723dd578f198c16b4a22c4matthew InternalClientConnection.nextMessageID(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new ArrayList<Control>(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson DN.decode("uid=test.user,o=test"), mods);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson invalidReason.toString());
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson Entry updatedValidatorEntry = TestCaseUtils.makeEntry(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "dn: cn=Repeated Characters,cn=Password Validators,cn=config",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: top",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "objectClass: ds-cfg-repeated-characters-password-validator",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "cn: Repeated Characters",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-java-class: org.opends.server.extensions." +
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "RepeatedCharactersPasswordValidator",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-enabled: true",
987a50dfe113ed235d28716ff080b59e8873655cmatthew_swift "ds-cfg-max-consecutive-length: 2",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "ds-cfg-case-sensitive-validation: true");
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg updatedConfiguration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson AdminTestCaseUtils.getConfiguration(
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson updatedValidatorEntry);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter ArrayList<Message> unacceptableReasons = new ArrayList<Message>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.isConfigurationChangeAcceptable(updatedConfiguration,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson unacceptableReasons),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson String.valueOf(unacceptableReasons));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson ConfigChangeResult changeResult =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.applyConfigurationChange(updatedConfiguration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertEquals(changeResult.getResultCode(), ResultCode.SUCCESS);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertFalse(validator.passwordIsAcceptable(password,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson new HashSet<ByteString>(0), modifyOperation,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson userEntry, invalidReason));
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.finalizePasswordValidator();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson }
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson}
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson