0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * CDDL HEADER START
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.
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 * 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 * CDDL HEADER END
05b42f00b813c3dc70cbb80d62089f9cc0f6f549ludovicp * Copyright 2006-2008 Sun Microsystems, Inc.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.admin.server.AdminTestCaseUtils;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.config.ConfigException;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.protocols.internal.InternalClientConnection;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ConfigChangeResult;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.InitializationException;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonimport org.opends.server.types.ModificationType;
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * A set of test cases for the repeated characters password validator.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilsonpublic class RepeatedCharactersPasswordValidatorTestCase
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Ensures that the Directory Server is running.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Retrieves a set of valid configuration entries that may be used to
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * initialize the validator.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
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 "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 "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 Object[][] array = new Object[entries.size()][1];
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the process of initializing the server with valid configurations.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @param entry The configuration entry to use for the initialization.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testInitializeWithValidConfigs(Entry e)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(), e);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Retrieves a set of invalid configuration entries.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
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 // 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 // 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 // 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 // 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 Object[][] array = new Object[entries.size()][1];
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * Tests the process of initializing the server with invalid configurations.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @param entry The configuration entry to use for the initialization.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testInitializeWithInvalidConfigs(Entry e)
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(), e);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptable2Consecutive()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptable3Consecutive()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertFalse(validator.passwordIsAcceptable(password,
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableCaseSensitive()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableCaseInsensitive()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertFalse(validator.passwordIsAcceptable(password,
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableUnlimitedRepeats()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
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 * @throws Exception If an unexpected problem occurs.
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson public void testPasswordIsAcceptableConfigurationChange()
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 "cn: Test User",
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson "userPassword: doesntmatter");
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 RepeatedCharactersPasswordValidatorCfg configuration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidator validator =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.initializePasswordValidator(configuration);
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,
2efcb9667318c099d8723dd578f198c16b4a22c4matthew new ModifyOperationBasis(conn, InternalClientConnection.nextOperationID(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter MessageBuilder invalidReason = new MessageBuilder();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.passwordIsAcceptable(password,
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 RepeatedCharactersPasswordValidatorCfg updatedConfiguration =
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson RepeatedCharactersPasswordValidatorCfgDefn.getInstance(),
53247d28ba99538f841a13ea2cde01c3faa3ef36kenneth_suter ArrayList<Message> unacceptableReasons = new ArrayList<Message>();
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertTrue(validator.isConfigurationChangeAcceptable(updatedConfiguration,
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson validator.applyConfigurationChange(updatedConfiguration);
0f35d230d2c7fc445f8f8b2ac22aaa88aa1a2a66neil_a_wilson assertEquals(changeResult.getResultCode(), ResultCode.SUCCESS);