mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

maudj
28.15.2008 137cebb3bd478b3b2a35abcf798cf189887b8ac0
add docs tags and replace with ldappasswordmodify
6 files modified
1142 ■■■■ changed files
opends/tests/functional-tests/testcases/security/pwd_validator/security_history_based.xml 25 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_pwd_length.xml 255 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_repeat_chars.xml 223 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_similarity_based.xml 225 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_skip_val_for_admins.xml 168 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_unique_chars.xml 246 ●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/security/pwd_validator/security_history_based.xml
@@ -165,8 +165,9 @@
          #@TestStep         user modify password back to old passwords sprain 
                             and sprainone RC 53
          #@TestStep         user binding with password 2 spraintwo RC 0
          #@TestStep         Check manage-account get-password-history
          #@TestPostamble    none
          #@TestResult       Success if the 3 tests are PASS
          #@TestResult       Success if the 4 tests are PASS
        -->
        
<testcase name="getTestCaseName('History Based: user modifying password 2')">
@@ -232,6 +233,28 @@
              knownIssue(3270)
            </script>
                        <message>
            '%s Check manage-account get-password-history  ' % msg
            </message>
            <call function="'manageAccountWithScript'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'       : 'get-password-history' ,
                'targetDn'         : 'uid=scarter,%s' % basedn  }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
                { 'returnString'       : returnString ,
                  'expectedString'     : 'Password History:  2' }
            </call>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
opends/tests/functional-tests/testcases/security/pwd_validator/security_pwd_length.xml
@@ -33,13 +33,45 @@
      <sequence>
        <!--- Admin Check Existence of Min Pwd Length Attr -->
        <!--- Test Suite information
         #@TestSuiteName       Pwd Length
         #@TestSuitePurpose    Checking Passwords Length
         #@TestSuiteGroup      Pwd Length
         #@TestScript          security_pwd_length.xml
        -->
        <!--- Define default value for basedn -->
        <script>
        basedn1 = 'ou=People, ou=password tests,'
        basedn = '%s o=Pwd Validator Tests,dc=example,dc=com' % basedn1
        val1 = 'cn=Length-Based Password Validator'
        val = '%s,cn=Password Validators,cn=config' % val1
        msg = 'Security: Pwd Validator: Pwd Length Min:'
        msg1 = 'ds-cfg-min-password-length'
        msg2 = 'Password Validator'
        msg3 = 'Security: Pwd Validator: Pwd Length Max:'
        msg4 = 'ds-cfg-max-password-length'
        </script>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Preamble
          #@TestIssue        none
          #@TestPurpose      Pwd Length Setup
          #@TestPreamble     none
          #@TestStep         Checking existence of ds-cfg-min-password-length
          #@TestStep         Admin Enable Pwd Length Validator
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Min: Preamble Setup')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Pwd Length Min: Preamble Step 1. Checking existence of ds-cfg-min-password-length'
               '%s Preamble Step 1. Checking existence of %s' % (msg,msg1)
            </message>
            <call function="'compareEntry'">
@@ -48,12 +80,12 @@
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'   : 'ds-cfg-min-password-length:6',
                'entryToBeCompared'   : 'cn=Length-Based Password Validator,cn=Password Validators,cn=config' }
                'entryToBeCompared'   : val }
            </call>
            <!--- Admin Enable Pwd Length Validator -->
            <message>
               'Security: Pwd Validator: Pwd Length Min: Preamble Step 2. Admin Enabling Pwd Length Validator'
               '%s Preamble Step 2. Admin Enabling Pwd Length Validator' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -63,7 +95,7 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-validator' ,
                    'attributeValue'         : 'Length-Based Password Validator' }
                    'attributeValue'         : 'Length-Based %s' % msg2 }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -71,35 +103,44 @@
          </sequence>
        </testcase>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length : Pwd Too Short
          #@TestIssue        none
          #@TestPurpose      Pwd Length Setup
          #@TestPreamble     none
          #@TestStep         Step 1. User Changing with short Password RC 53
          #@TestStep         Step 2. User Search With short Password RC 49
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <!--- Test Case : User Change Password - Too Short-->
        <testcase name="getTestCaseName('Pwd Length Min: Pwd Too Short 1')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Min: Pwd Too Short 1 Step 1. User Changing Password'
               '%s Pwd Too Short 1 Step 1. User Changing Password' % msg
            </message>
            
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn,
                    'dsInstancePswd'         : 'oranges' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'grape' ,
                    'changetype'             : 'replace' ,
                    'dsAuthzID'              : 'dn:uid=bhall, %s' % basedn,
                    'dsNewPassword'          : 'grape' ,
                    'expectedRC'             : 53  }
            </call>
            
            <!--- User Search With Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Min: Pwd Too Short 1 Step 2. User Searching With Password'
               '%s Pwd Too Short 1 Step 2. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn ,
                'dsInstancePswd'   : 'grape' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -112,12 +153,23 @@
          </sequence>
        </testcase>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Admin Change Minimum Pwd Length
          #@TestIssue        none
          #@TestPurpose      Pwd Length Admin Change Minimum Pwd Length
          #@TestPreamble     none
          #@TestStep         Admin Change Min Pwd Length to 4
          #@TestPostamble    none
          #@TestResult       Success if the test is PASS
        -->
        <!--- Test Case : Admin Change Minimum Pwd Length -->
        <testcase name="getTestCaseName('Pwd Length Min: Admin Change Min Pwd Length')">
        <testcase name="getTestCaseName
              ('Pwd Length Min: Admin Change Min Pwd Length')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Min: Admin Changing Minimum Pwd Length'
               '%s Admin Changing Minimum Pwd Length' % msg
            </message>
            <call function="'dsconfigSet'">
@@ -127,7 +179,7 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg2 ,
                    'attributeName'          : 'min-password-length' ,
                    'attributeValue'         : '4' }
            </call>
@@ -137,20 +189,31 @@
          </sequence>
        </testcase>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length User Password - Too Short 2
          #@TestIssue        none
          #@TestPurpose      Pwd Length User Password - Too Short 2
          #@TestPreamble     none
          #@TestStep         User Change Password - Too Short 2 RC 53
          #@TestStep         User Searching With Password Too Short 2 RC 49
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <!--- Test Case : User Change Password - Too Short 2-->
        <testcase name="getTestCaseName('Pwd Length Min: Pwd Too Short 2')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Min: Pwd Too Short 2 Step 1. User Changing Password'
               '%s Pwd Too Short 2 Step 1. User Changing Password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn,
                    'dsInstancePswd'         : 'oranges' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=bhall, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'goo' ,
                    'changetype'             : 'replace' , 
@@ -159,13 +222,13 @@
            
            <!--- User Search With Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Min: Pwd Too Short 2 Step 2. User Searching With Password'
               '%s Pwd Too Short 2 Step 2. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn,
                'dsInstancePswd'   : 'goo' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -178,34 +241,43 @@
          </sequence>
        </testcase>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length User Password 4 characters
          #@TestIssue        none
          #@TestPurpose      Pwd Length User Password 4 characters
          #@TestPreamble     none
          #@TestStep         User Change Password RC 0
          #@TestStep         User Searching With Password RC 0
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <!--- Test Case : User Change Password-->
        <testcase name="getTestCaseName('Pwd Length Min: User Change Pwd')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Min: User Change Pwd Step 1. User Changing Password'
               '%s User Change Pwd Step 1. User Changing Password' % msg
            </message>
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn,
                    'dsInstancePswd'         : 'oranges' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'grape' ,
                    'changetype'             : 'replace' }
                    'dsAuthzID'              : 'dn:uid=bhall, %s' % basedn,
                    'dsNewPassword'          : 'grape'  }
            </call>
            
            <!--- User Search With Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Min: User Change Pwd Step 2. User Searching With Password'
               '%s User Change Pwd Step 2. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn,
                'dsInstancePswd'   : 'grape' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -217,12 +289,22 @@
          </sequence>
        </testcase>
        <!--- Test Case : Admin Reset Minimum Pwd Length -->
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Admin Reset Minimum Pwd Length
          #@TestIssue        none
          #@TestPurpose      Pwd Length Admin Reset Minimum Pwd Length
          #@TestPreamble     none
          #@TestStep         Admin Reset Minimum Pwd Length
          #@TestPostamble    none
          #@TestResult       Success if the test is PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Min: Postamble Reset')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Min: Postamble - Admin Resetting Minimum Pwd Length'
               '%s Postamble - Admin Resetting Minimum Pwd Length' % msg
            </message>
            <call function="'dsconfigSet'">
@@ -232,7 +314,7 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg2 ,
                    'attributeName'          : 'min-password-length' ,
                    'attributeValue'         : '6' }
            </call>
@@ -242,11 +324,22 @@
          </sequence>
        </testcase>
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Max Preamble
          #@TestIssue        none
          #@TestPurpose      Pwd Length Max setup
          #@TestPreamble     none
          #@TestStep         Checking existence of ds-cfg-max-password-length
          #@TestStep         Admin Changing Maximum Pwd Length to 10
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Max: Preamble Setup')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Max: Preamble Step 1. Checking existence of ds-cfg-max-password-length'
               '%s Preamble Step 1. Checking existence of %s' % (msg3,msg4)
            </message>
            <call function="'compareEntry'">
@@ -255,12 +348,12 @@
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'   : 'ds-cfg-max-password-length:0',
                'entryToBeCompared'   : 'cn=Length-Based Password Validator,cn=Password Validators,cn=config' }
                'entryToBeCompared'   : '%s' % val }
            </call>
            <!--- Admin Change Maximum Pwd Length -->
            <message>
               'Security: Pwd Validator: Pwd Length Max: Preamble Step 2. Admin Changing Maximum Pwd Length'
               '%s Preamble Step 2. Admin Changing Maximum Pwd Length' % msg3
            </message>
            <call function="'dsconfigSet'">
@@ -270,7 +363,7 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg2,
                    'attributeName'          : 'max-password-length' ,
                    'attributeValue'         : '10' }
            </call>
@@ -280,35 +373,44 @@
          </sequence>
        </testcase>
        <!--- Test Case : User Change Password - Too Long-->
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Max User Password - Too Long
          #@TestIssue        none
          #@TestPurpose      Pwd Length Max User Password - Too Long
          #@TestPreamble     none
          #@TestStep         User Changing Password over 10 RC 53
          #@TestStep         User Searching Password over 10 RC 49
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Max: Pwd Too Long 1')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Max: Pwd Too Long 1 Step 1. User Changing Password'
               '%s Pwd Too Long 1 Step 1. User Changing Password' % msg3
            </message>
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn,
                    'dsInstancePswd'         : 'grape' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'pomegranates' ,
                    'changetype'             : 'replace' ,
                    'dsAuthzID'              : 'dn:uid=bhall, %s' % basedn,
                    'dsNewPassword'          : 'pomegranates' ,
                    'expectedRC'             : 53  }
            </call>
            
            <!--- User Search With Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Max: Pwd Too Long 1 Step 2. User Searching With Password'
               '%s Pwd Too Long 1 Step 2. User Searching With Password' % msg3
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn,
                'dsInstancePswd'   : 'pomegranates' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -321,34 +423,43 @@
          </sequence>
        </testcase>
        <!--- Test Case : User Change Password-->
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Max Pwd under 10
          #@TestIssue        none
          #@TestPurpose      Pwd Length Max Pwd under 10
          #@TestPreamble     none
          #@TestStep         User Changing Password under 10 RC 0
          #@TestStep         User Searching Password under 10 RC 0
          #@TestPostamble    none
          #@TestResult       Success if the 2 tests are PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Max: User Change Pwd')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Max: User Change Password Step 1. User Changing Password'
               '%s User Change Password Step 1. User Changing Password' % msg3
            </message>
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn,
                    'dsInstancePswd'         : 'grape' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'grapefruit' ,
                    'changetype'             : 'replace' }
                    'dsAuthzID'              : 'dn:uid=bhall, %s' % basedn,
                    'dsNewPassword'          : 'grapefruit'  }
            </call>
            
            <!--- User Search With Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Max: User Change Password Step 2. User Searching With Password'
               '%s User Change Password Step 2. User Searching With Pwd' % msg3
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn,
                'dsInstancePswd'   : 'grapefruit' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -360,12 +471,24 @@
          </sequence>
        </testcase>
        <!--- Test Case : Admin Reset Maximum Pwd Length -->
        <!--- Test Case information
          #@TestMarker       Pwd Length
          #@TestName         Pwd Length Max Postamble
          #@TestIssue        none
          #@TestPurpose      Pwd Length Max Postamble
          #@TestPreamble     none
          #@TestStep         Admin Resetting Maximum Pwd Length
          #@TestStep         User Changing Password over 10 RC 0
          #@TestStep         User Searching Password over 10 RC 0
          #@TestPostamble    none
          #@TestResult       Success if the 3 tests are PASS
        -->
        <testcase name="getTestCaseName('Pwd Length Max: Postamble Reset')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Pwd Length Max: Postamble Step 1. Admin Resetting Maximum Pwd Length'
               '%s Postamble Step 1. Admin Resetting Maximum Pwd Length' % msg3
            </message>
            <call function="'dsconfigSet'">
@@ -375,35 +498,35 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg2 ,
                    'attributeName'          : 'max-password-length' ,
                    'attributeValue'         : '0' }
            </call>
            
            <!--- User Change Password -->
            <message>
               'Security: Pwd Validator: Pwd Length Max: Postamble Step 2. User Changing Password'
               '%s Postamble Step 2. User Changing Password' % msg3
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=bhall,%s' % basedn ,
                    'dsInstancePswd'         : 'grapefruit' ,
                    'DNToModify'             : 'uid=bhall, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=bhall,%s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'pomegranates' ,
                    'changetype'             : 'replace' }
            </call>
            
            <message>
               'Security: Pwd Validator: Pwd Length Max: User Change Password Step 2. User Searching With Password'
               '%s User Change Password Step 2. User Searching With Pwd' % msg3
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=bhall,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=bhall,%s' % basedn ,
                'dsInstancePswd'   : 'pomegranates' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
opends/tests/functional-tests/testcases/security/pwd_validator/security_repeat_chars.xml
@@ -33,12 +33,37 @@
      <sequence>
        <!--- Test Suite information
            #@TestSuiteName       Repeat Characters
            #@TestSuitePurpose    Test the Pwd Policy on Pwd with Repeat chars
            #@TestSuiteGroup      Repeat Characters
            #@TestScript          security_repeat_chars.xml
          -->
        <!--- Define default value for basedn -->
          <script>
            basedn1 = 'ou=People, ou=password tests,'
            basedn = '%s o=Pwd Validator Tests,dc=example,dc=com' % basedn1
            msg = 'Security: Pwd Validator: Repeat Chars:'
          </script>
          <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test Preamble
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: Admin Enabling Validator
            #@TestPreamble        none
            #@TestStep            set password-validator to Repeated Characters
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName('Repeat Chars: Preamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: Admin Enabling Validator'
               '%s Admin Enabling Validator' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -56,20 +81,33 @@
          </sequence>
        </testcase>
        <testcase name="getTestCaseName('Repeat Chars: password with 3 repeat chars')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test pwd with 3 repeat chars
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: pwd with 3 repeat chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abbbcdef RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
              ('Repeat Chars: pwd with 3 repeat chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'sensitive' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=trigden, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abbbcdef' ,
                    'changetype'             : 'replace' , 
@@ -77,13 +115,13 @@
            </call>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abbbcdef' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -96,33 +134,46 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Repeat Chars: password with 2 repeat chars')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test pwd with 2 repeat chars
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: pwd with 2 repeat chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abbcdef RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Repeat Chars: password with 2 repeat chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'sensitive' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=trigden, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abbcdef' ,
                    'changetype'             : 'replace'  }
            </call>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abbcdef' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -134,6 +185,17 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Repeat Chars: change maximum length
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: change maximum length
            #@TestPreamble        none
            #@TestStep            set max-consecutive-length to 3
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Repeat Chars: change maximum length')">
          <sequence>
            <call function="'testCase_Preamble'"/>
@@ -157,33 +219,46 @@
          </sequence>
        </testcase>
        <testcase name="getTestCaseName('Repeat Chars: password with 3 repeat chars 2')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test pwd with 3 repeat chars 2
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: pwd with 3 repeat chars 2
            #@TestPreamble        none
            #@TestStep            user modifying password to abbbcdef RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Repeat Chars: password with 3 repeat chars 2')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'abbcdef' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=trigden, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abbbcdef' ,
                    'changetype'             : 'replace'  }
            </call>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abbbcdef' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -195,11 +270,22 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Repeat Chars: reset maximum length
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: reset maximum length
            #@TestPreamble        none
            #@TestStep            reset max-consecutive-length to 2
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Repeat Chars: reset maximum length')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Repeat Chars: change unique chars'
               '%s change repeat chars' % msg
            </message>
            
            <call function="'modifyPwdValidator'">
@@ -217,11 +303,23 @@
          </sequence>
        </testcase>
       
        <testcase name="getTestCaseName('Repeat Chars: enable case sensitive chars')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Repeat Chars: enable case sensitive chars
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: enable case sensitive chars
            #@TestPreamble        none
            #@TestStep            set case-sensitive-validation to true
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Repeat Chars: enable case sensitive chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Repeat Chars: enable case sensitive chars'
               '%s enable case sensitive chars' % msg
            </message>
            
            <call function="'modifyPwdValidator'">
@@ -240,20 +338,33 @@
          </sequence>
        </testcase>
       
        <testcase name="getTestCaseName('Repeat Chars: password with 3 repeat chars 3')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test pwd with 3 repeat chars 3
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: pwd with 3 repeat chars 3
            #@TestPreamble        none
            #@TestStep            user modifying password to abcccdef RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Repeat Chars: password with 3 repeat chars 3')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'abbbcdef' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=trigden, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abcccdef' ,
                    'changetype'             : 'replace' , 
@@ -261,13 +372,13 @@
            </call>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abcccdef' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -280,33 +391,46 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Repeat Chars: password with 3 case sensitive repeat chars')">
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Test pwd with 3 sensitive repeat chars
            #@TestIssue           none
            #@TestPurpose         pwd with 3 sensitive repeat chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abcCcdef RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Repeat Chars: password with 3 case sensitive repeat chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'abbbcdef' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=trigden, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abcCcdef' ,
                    'changetype'             : 'replace' }
            </call>
            
            <message>
               'Security: Pwd Validator: Repeat Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abcCcdef' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -318,11 +442,24 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Repeat Characters
            #@TestName            Repeat Chars: Postamble
            #@TestIssue           none
            #@TestPurpose         Repeat Chars: Postamble
            #@TestPreamble        none
            #@TestStep            Admin Resetting Maximum Pwd Length
            #@TestStep            User Changing Password to abbbcde RC 0
            #@TestStep            User Searching With Password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Repeat Chars: Postamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Repeat Chars: Postamble Step 1. Admin Resetting Maximum Pwd Length'
               '%s Postamble Step 1. Admin Resetting Maximum Pwd Length' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -338,28 +475,26 @@
            
            <!--- User Change Password -->
            <message>
               'Security: Pwd Validator: Repeat Chars: Postamble Step 2. User Changing Password'
               '%s Postamble Step 2. User Changing Password' % msg
            </message>
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=trigden,%s' % basedn ,
                    'dsInstancePswd'         : 'abcCcdef' ,
                    'DNToModify'             : 'uid=trigden, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abbbcde' ,
                    'changetype'             : 'replace' }
                    'dsAuthzID'              : 'dn:uid=trigden, %s' % basedn ,
                    'dsNewPassword'          : 'abbbcde'  }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: Postamble Step 3. User Searching With Password'
               '%s Postamble Step 3. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=trigden,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=trigden,%s' % basedn ,
                'dsInstancePswd'   : 'abbbcde' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
opends/tests/functional-tests/testcases/security/pwd_validator/security_similarity_based.xml
@@ -33,12 +33,42 @@
      <sequence>
          <!--- Test Suite information
            #@TestSuiteName       Similarity Based
            #@TestSuitePurpose    Test the Password Policy On Pwd Similarity
            #@TestSuiteGroup      Similarity Based
            #@TestScript          security_similarity_based.xml
          -->
        <!--- Define default value for basedn -->
          <script>
            basedn1 = 'ou=People, ou=password tests,'
            basedn = '%s o=Pwd Validator Tests,dc=example,dc=com' % basedn1
            msg = 'Security: Pwd Validator: Similarity Based:'
            msg1 = 'Password Validator'
            msg2 ='requires-current-password'
            msg3 = 'password-change-requires-current-password'
          </script>
          <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            Similarity Based Test Preamble
            #@TestIssue           none
            #@TestPurpose         Preamble
            #@TestPreamble        none
            #@TestStep            Admin enabling validator
            #@TestStep            Admin modifying password history count to 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName('Similarity Based: Preamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: Preamble - Admin enabling validator'
               '%s Preamble - Admin enabling validator' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -48,11 +78,11 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-validator' ,
                    'attributeValue'         : 'Similarity-Based Password Validator' }
                    'attributeValue'         : 'Similarity-Based %s' % msg1 }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: Preamble - Admin modifying password history count'
               '%s Preamble - Admin modifying password history count' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -70,33 +100,46 @@
          </sequence>
        </testcase>
        <testcase name="getTestCaseName('Similarity Based: new password with 1 letter change, valid')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            New password with 1 letter change, valid
            #@TestIssue           none
            #@TestPurpose         New password with 1 letter change, valid
            #@TestPreamble        none
            #@TestStep            user modifying pwd with 1 letter change RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
              ('Similarity Based: new password with 1 letter change, valid')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'bribery' ,
                    'DNToModify'             : 'uid=kvaughan, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kvaughan, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'brobery' ,
                    'changetype'             : 'replace'  }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'brobery' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -108,12 +151,25 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Similarity Based: Enable requires-current-password')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            Enable requires-current-password
            #@TestIssue           none
            #@TestPurpose         Enable requires-current-password
            #@TestPreamble        none
            #@TestStep            Admin enabling
                                  password-change-requires-current-password
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
               ('Similarity Based: Enable requires-current-password')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: Admin enabling requires-current-password'
               '%s Admin enabling %s' % (msg,msg3)
            </message>
            <call function="'modifyPwdPolicy'">
@@ -122,7 +178,7 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-change-requires-current-password' ,
                    'attributeName'          : msg3 ,
                    'attributeValue'         : 'true' }
            </call>
            
@@ -131,20 +187,33 @@
          </sequence>
        </testcase>
        <testcase name="getTestCaseName('Similarity Based: new password with 1 letter change, invalid')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            New password with 1 letter change, invalid
            #@TestIssue           none
            #@TestPurpose         New password with 1 letter change, invalid
            #@TestPreamble        none
            #@TestStep            user modifying pwd with 1 letter change RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
              ('Similarity Based: new password with 1 letter change, invalid')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'brobery' ,
                    'DNToModify'             : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kvaughan,%s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'probery' ,
                    'changetype'             : 'replace' , 
@@ -152,13 +221,13 @@
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user binding with invalid password'
               '%s user binding with invalid password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'probery' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -171,33 +240,46 @@
          </sequence>
        </testcase>
      
        <testcase name="getTestCaseName('Similarity Based: new password with 1 letter change, invalid 2')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            New password with 1 letter change, invalid 2
            #@TestIssue           none
            #@TestPurpose         New password with 1 letter change, invalid 2
            #@TestPreamble        none
            #@TestStep            user modifying pwd with 1 letter change RC 49
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Similarity Based: new password with 1 letter change, invalid 2')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'brobery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'dsCurrentPassword'      : 'brobery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, %s' % basedn ,
                    'dsNewPassword'          : 'probery' , 
                    'dsCurrentPassword'      : 'brobery' ,
                    'expectedRC'             : 49 }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user binding with invalid password'
               '%s user binding with invalid password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'probery' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -210,33 +292,46 @@
          </sequence>
        </testcase>
      
        <testcase name="getTestCaseName('Similarity Based: new password with 2 letter change, invalid')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            New password with 2 letters change, invalid
            #@TestIssue           none
            #@TestPurpose         New password with 2 letters change, invalid
            #@TestPreamble        none
            #@TestStep            user modifying pwd with 2 letter change RC 49
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Similarity Based: new password with 2 letter change, invalid')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'brobery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'dsCurrentPassword'      : 'brobery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, %s' % basedn ,
                    'dsNewPassword'          : 'phobery' , 
                    'dsCurrentPassword'      : 'brobery' ,
                    'expectedRC'             : 49 }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user binding with invalid password'
               '%s user binding with invalid password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'phobery' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -249,32 +344,45 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Similarity Based: new password with 3 letter change, valid')">
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            New password with 3 letters change, valid
            #@TestIssue           none
            #@TestPurpose         New password with 3 letters change, valid
            #@TestPreamble        none
            #@TestStep            user modifying pwd with 3 letter change RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
        ('Similarity Based: new password with 3 letter change, valid')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'brobery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'dsCurrentPassword'      : 'brobery' ,
                    'dsNewPassword'          : 'phibery'  }
                    'dsAuthzID'              : 'dn:uid=kvaughan, %s' % basedn ,
                    'dsNewPassword'          : 'phibery' ,
                    'dsCurrentPassword'      : 'brobery' }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'phibery' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -286,11 +394,26 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Similarity Based
            #@TestName            Postamble
            #@TestIssue           none
            #@TestPurpose         Postamble
            #@TestPreamble        none
            #@TestStep            Admin disabling password validator
            #@TestStep            User Changing Pwd with 1 letter change RC 0
            #@TestStep            User Searching With Password RC 0
            #@TestStep            Admin disabling
                                  password-change-requires-current-password
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName('Similarity Based: Postamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Similarity Based: Postamble Step 1. Admin disabling password validator'
               '%s Postamble Step 1. Admin disabling password validator' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -300,33 +423,33 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-validator' ,
                    'attributeValue'         : 'Similarity-Based Password Validator' ,
                    'attributeValue'         : 'Similarity-Based %s' % msg1 ,
                    'modifyType'             : 'remove' }
            </call>
            
            <!--- User Change Password -->
            <message>
               'Security: Pwd Validator: Similarity Based: Postamble Step 2. User Changing Password'
               '%s Postamble Step 2. User Changing Password' % msg
            </message>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kvaughan,%s' % basedn ,
                    'dsInstancePswd'         : 'phibery' ,
                    'dsAuthzID'              : 'dn:uid=kvaughan, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'dsCurrentPassword'      : 'phibery' ,
                    'dsNewPassword'          : 'phibary'  }
                    'dsAuthzID'              : 'dn:uid=kvaughan, %s' % basedn ,
                    'dsNewPassword'          : 'phibary' ,
                    'dsCurrentPassword'      : 'phibery' }
            </call>
            
            <message>
               'Security: Pwd Validator: Similarity Based: Postamble Step 3. User Searching With Password'
               '%s Postamble Step 3. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kvaughan,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kvaughan,%s' % basedn ,
                'dsInstancePswd'   : 'phibary' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -334,7 +457,7 @@
            </call>
            <message>
               'Security: Pwd Validator: Similarity Based: Postamble Step 4. Admin enabling requires-current-password'
               '%s Postamble Step 4. Admin disabling %s' % (msg,msg2)
            </message>
            <call function="'modifyPwdPolicy'">
@@ -343,7 +466,7 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-change-requires-current-password' ,
                    'attributeName'          : msg3 ,
                    'attributeValue'         : 'false' }
            </call>
            
opends/tests/functional-tests/testcases/security/pwd_validator/security_skip_val_for_admins.xml
@@ -33,15 +33,49 @@
      <sequence>
        <!--- Test Case : Setup -->
        <testcase name="getTestCaseName('Root User Bypass Valid: Preamble Setup')">
        <!--- Test Suite information
            #@TestSuiteName       Skip Validation for Administrators
            #@TestSuitePurpose    Test the Skip Validation for Administrators
            #@TestSuiteGroup      Skip Validation for Administrators
            #@TestScript          security_skip_val_for_admins_chars.xml
          -->
        <!--- Define default value for basedn -->
          <script>
            msg = 'Security: Pwd Validator: Root User Bypass Valid'
            msg1 = 'Pwd Length Validator On Root Users'
            msg2 = 'Bypass Enabled'
            msg3 = 'Step 1. Admin Enabling'
            msg4 = 'Step 1. Admin Changing'
            msg5 = 'Root Changing Password'
            msg6 = 'Bypass For Pwd Validator'
            msg7 = 'skip-validation-for-administrators'
            pwddn = 'cn=Sales Admin,cn=Root DNs,cn=config'
            msg8 = 'Password Validator'
            ldiffile = 'admin_disable_pwd_length_validator.ldif'
            ldifpath = 'security/pwd_validator/%s' % ldiffile
          </script>
          <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Root User Bypass Valid: Preamble Setup
            #@TestIssue           none
            #@TestPurpose         Preamble Setup
            #@TestPreamble        none
            #@TestStep            Admin Enabling Length Validator On Root Users
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
          <testcase name="getTestCaseName
            ('Root User Bypass Valid: Preamble Setup')">
          <sequence>
          
            <call function="'testCase_Preamble'"/>
            <!--- Admin Enable Pwd Length Validator -->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Preamble - Step 1. Admin Enabling Pwd Length Validator On Root Users'
               '%s: Preamble - Step 1. Admin Enabling %s' % (msg,msg1)
            </message>
            <call function="'modifyPwdPolicy'">
@@ -51,7 +85,7 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'password-validator' ,
                    'attributeValue'         : 'Length-Based Password Validator' }
                    'attributeValue'         : 'Length-Based %s' % msg8 }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -59,12 +93,24 @@
          </sequence>
        </testcase>
        <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Root Change Password - Too Short
            #@TestIssue           none
            #@TestPurpose         Root Change Password - Too Short
            #@TestPreamble        none
            #@TestStep            Root Changing Pwd to grape- Too Short RC 53
            #@TestStep            Root Searching With Password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <!--- Root Change Password - Too Short-->
        <testcase name="getTestCaseName('Root User Bypass Valid: No Bypass')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: No Bypass - Step 1. Root Changing Password - Too Short'
               '%s: No Bypass - Step 1. Root Changing Pwd - Too Short' % msg
            </message>
            <call function="'modifyAnAttribute'">
@@ -72,7 +118,7 @@
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'DNToModify'             : 'cn=Sales Admin,cn=Root DNs,cn=config' ,
                    'DNToModify'             : pwddn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'grape' ,
                    'changetype'             : 'replace' ,
@@ -81,7 +127,7 @@
            
            <!--- Root Search With Password -->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: No Bypass - Step 2. Root Searching With Password'
               '%s No Bypass - Step 2. Root Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
@@ -100,12 +146,26 @@
          </sequence>
        </testcase>
       <!--- Enable Bypass Validator-->
        <testcase name="getTestCaseName('Root User Bypass Valid: Bypass Enabled 1')">
        <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Root User Bypass Valid: Bypass Enabled 1
            #@TestIssue           none
            #@TestPurpose         Root User Bypass Valid: Bypass Enabled 1
            #@TestPreamble        none
            #@TestStep            Admin Enabling Bypass For Pwd Validator set
                                  skip-validation-for-administrators to true
            #@TestStep            Root Changing Password - Too Short RC 0
            #@TestStep            Root Searching With Pwd RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Root User Bypass Valid: Bypass Enabled 1')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 1 - Step 1. Admin Enabling Bypass For Pwd Validator'
               '%s %s 1 - %s Bypass For Pwd Validator' % (msg,msg2,msg3)
            </message>
            <call function="'modifyPwdPolicy'">
@@ -114,12 +174,12 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'skip-validation-for-administrators' ,
                    'attributeName'          : msg7 ,
                    'attributeValue'         : 'true' }
            </call>
            
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 1 - Step 2. Root Changing Password - Too Short'
               '%s %s 1 - Step 2. %s - Too Short' % (msg,msg2,msg5)
            </message>
            <call function="'modifyAnAttribute'">
@@ -127,7 +187,7 @@
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'DNToModify'             : 'cn=Sales Admin,cn=Root DNs,cn=config' ,
                    'DNToModify'             : pwddn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'grape' ,
                    'changetype'             : 'replace' }
@@ -135,7 +195,7 @@
            
            <!--- Root Search With Password -->
           <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 1 - Step 3. Root Searching With Password'
               '%s Bypass Enabled 1 - Step 3. Root Searching With Pwd' % msg
            </message>
            <call function="'SearchObject'">
@@ -153,12 +213,25 @@
          </sequence>
        </testcase>
        <!--- Admin Change Minimum Pwd Length -->
        <testcase name="getTestCaseName('Root User Bypass Valid: Bypass Enabled 2')">
        <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Root User Bypass Valid: Bypass Enabled 2
            #@TestIssue           none
            #@TestPurpose         Root User Bypass Valid: Bypass Enabled 2
            #@TestPreamble        none
            #@TestStep            Admin Changing Minimum Pwd Length to 4
            #@TestStep            Root Changing Password - Too Short RC 0
            #@TestStep            Root Searching With Pwd RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Root User Bypass Valid: Bypass Enabled 2')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 2 - Step 1. Admin Changing Minimum Pwd Length'
               '%s %s 2 - %s Minimum Pwd Length' % (msg,msg2,msg4)
            </message>
            <call function="'dsconfigSet'">
@@ -168,14 +241,14 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg8,
                    'attributeName'          : 'min-password-length' ,
                    'attributeValue'         : '4' }
            </call>
            
            <!--- User Change Password - Too Short-->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 2 - Step 2. Root Changing Password - Too Short'
               '%s %s 2 - Step 2. %s - Too Short' % (msg,msg2,msg5)
            </message>
            <call function="'modifyAnAttribute'">
@@ -183,7 +256,7 @@
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'DNToModify'             : 'cn=Sales Admin,cn=Root DNs,cn=config' ,
                    'DNToModify'             : pwddn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'goo' ,
                    'changetype'             : 'replace' }
@@ -191,7 +264,7 @@
            
            <!--- Root Search With Password -->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Bypass Enabled 2 - Step 3. Root Searching With Password'
               '%s %s 2 - Step 3. Root Searching With Pwd' % (msg,msg2)
            </message>
            <call function="'SearchObject'">
@@ -209,15 +282,27 @@
          </sequence>
        </testcase>
        <!--- Check Self-Change Pwd -->
        <testcase name="getTestCaseName('Root User Bypass Valid: Self-Change Pwd')">
        <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Root User Bypass Valid: Self-Change Pwd
            #@TestIssue           none
            #@TestPurpose         Root User Bypass Valid: Self-Change Pwd
            #@TestPreamble        none
            #@TestStep            User Self-Change Pwd Too Short RC 53
            #@TestStep            User Searching With Password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Root User Bypass Valid: Self-Change Pwd')">
          <sequence>
          
            <call function="'testCase_Preamble'"/>
  
          <!--- Sales Admin Self-Change Pwd-->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Self-Change Pwd - Step 1. Root Changing Password - Too Short'
               '%s Self-Change Pwd - Step 1. %s - Too Short' % (msg,msg5)
            </message>
            <call function="'modifyAnAttribute'">
@@ -225,7 +310,7 @@
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'cn=Sales Admin' ,
                    'dsInstancePswd'         : 'goo' ,
                    'DNToModify'             : 'cn=Sales Admin,cn=Root DNs,cn=config' ,
                    'DNToModify'             : pwddn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'gaa' ,
                    'changetype'             : 'replace' ,
@@ -234,7 +319,7 @@
            
            <!--- Root Search With Password -->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Self-Change Pwd - Step 2. Root Searching With Password'
               '%s Self-Change Pwd - Step 2. Root Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
@@ -253,15 +338,30 @@
          </sequence>
        </testcase>
        <!--- Test Case : Admin Reset Minimum Pwd Length -->
        <testcase name="getTestCaseName('Root User Bypass Valid: Postamble Teardown')">
        <!--- Test Case information
            #@TestMarker          Skip Validation for Administrators
            #@TestName            Postamble Admin Reset Minimum Pwd Length
            #@TestIssue           none
            #@TestPurpose         Postamble Admin Reset Minimum Pwd Length
            #@TestPreamble        none
            #@TestStep            Admin Disabling Bypass For Pwd Validator set
                                  skip-validation-for-administrators to false
            #@TestStep            Admin Resetting Minimum Pwd Length to 6
            #@TestStep            Root Changing Password - Too Short RC 0
            #@TestStep            Root Searching With Pwd RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName
            ('Root User Bypass Valid: Postamble Teardown')">
          <sequence>
          
            <call function="'testCase_Preamble'"/>
            <!--- Root Search With Original Password -->
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Postamble - Step 1. Admin Disabling Bypass For Pwd Validator'
               '%s Postamble - Step 1. Admin Disabling %s' % (msg,msg6)
            </message>
            <call function="'modifyPwdPolicy'">
@@ -270,12 +370,12 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'skip-validation-for-administrators' ,
                    'attributeName'          : msg7 ,
                    'attributeValue'         : 'false' }
            </call>
            
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Postamble - Step 2. Admin Resetting Minimum Pwd Length'
               '%s Postamble - Step 2. Admin Resetting Minimum Pwd Length' % msg
            </message>
            <call function="'dsconfigSet'">
@@ -285,13 +385,13 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'objectName'             : 'password-validator' ,
                    'propertyType'           : 'validator' ,
                    'propertyName'           : 'Length-Based Password Validator' ,
                    'propertyName'           : 'Length-Based %s' % msg8,
                    'attributeName'          : 'min-password-length' ,
                    'attributeValue'         : '6' }
            </call>
            <!--
            <message>
               'Security: Pwd Validator: Root User Bypass Valid: Postamble - Step 3. Admin Disabling Pwd Length Validator On Root Users'
               '%s Postamble - Step 3. Admin Disabling %s' % (msg,msg1)
            </message>
            <call function="'modifyEntry'">
@@ -299,7 +399,7 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'entryToBeModified'   : '%s/security/pwd_validator/admin_disable_pwd_length_validator.ldif' % logsRemoteDataDir }
                'entryToBeModified'   : '%s/%s' % (logsRemoteDataDir,ldifpath) }
            </call>
            -->
            <call function="'testCase_Postamble'"/>
opends/tests/functional-tests/testcases/security/pwd_validator/security_unique_chars.xml
@@ -33,12 +33,37 @@
      <sequence>
          <!--- Test Suite information
            #@TestSuiteName       Unique Characters
            #@TestSuitePurpose    Test the Pwd Policy on Pwd with unique chars
            #@TestSuiteGroup      Unique Characters
            #@TestScript          security_unique_chars.xml
          -->
        <!--- Define default value for basedn -->
          <script>
            basedn1 = 'ou=People, ou=password tests,'
            basedn = '%s o=Pwd Validator Tests,dc=example,dc=com' % basedn1
            msg = 'Security: Pwd Validator: Unique Chars:'
          </script>
          <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test Preamble
            #@TestIssue           none
            #@TestPurpose         Unique Chars: Admin Enabling ValidatorUnique Characters
            #@TestPreamble        none
            #@TestStep            Admin Enabling Validator for Unique Characters
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS.
          -->
        <testcase name="getTestCaseName('Unique Chars: Preamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: Admin Enabling Validator'
               '%s Admin Enabling Validator' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -56,34 +81,44 @@
          </sequence>
        </testcase>
        <testcase name="getTestCaseName('Unique Chars: password with 3 unique chars')">
          <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 3 unique chars
            #@TestIssue           none
            #@TestPurpose         Unique Chars: pwd with 3 unique chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abebab RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Unique Chars: pwd with 3 unique chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'forsook' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abebab' ,
                    'changetype'             : 'replace' ,
                    'dsAuthzID'              : 'dn:uid=kwinters, %s' % basedn ,
                    'dsNewPassword'          : 'abebab' ,
                    'expectedRC'             : 53  }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abebab' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -96,20 +131,32 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Unique Chars: password with 4 unique chars')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 4 unique chars
            #@TestIssue           none
            #@TestPurpose         Unique Chars: pwd with 4 unique chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abebib RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Unique Chars: pwd with 4 unique chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'forsook' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abebib' ,
                    'changetype'             : 'replace' , 
@@ -117,13 +164,13 @@
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abebib' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -136,33 +183,45 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 5 unique chars
            #@TestIssue           none
            #@TestPurpose         Unique Chars: pwd with 5 unique chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abebig RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Unique Chars: password with 5 unique chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'forsook' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abebig' ,
                    'changetype'             : 'replace'  }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abebig' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -174,11 +233,22 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Unique Chars: cahnge unique chars')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Change Unique Chars
            #@TestIssue           none
            #@TestPurpose         Change Unique Chars
            #@TestPreamble        none
            #@TestStep            set min-unique-characters to 3
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Unique Chars: change unique chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Unique Chars: change unique chars'
               '%s change unique chars' % msg
            </message>
            
            <call function="'modifyPwdValidator'">
@@ -197,33 +267,46 @@
          </sequence>
        </testcase>
       
        <testcase name="getTestCaseName('Unique Chars: password with 3 unique chars 2')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 3 unique chars 2
            #@TestIssue           none
            #@TestPurpose         Unique Chars: pwd with 3 unique chars 2
            #@TestPreamble        none
            #@TestStep            user modifying password to abebab RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Unique Chars: pwd with 3 unique chars 2')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'abebig' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abebab' ,
                    'changetype'             : 'replace'   }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abebab' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -235,11 +318,22 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Unique Chars: reset unique chars
            #@TestIssue           none
            #@TestPurpose         Unique Chars: reset unique chars
            #@TestPreamble        none
            #@TestStep            Reset min-unique-characters to 5
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Unique Chars: reset unique chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Unique Chars: change unique chars'
               '%s change unique chars' % msg
            </message>
            
            <call function="'modifyPwdValidator'">
@@ -258,11 +352,23 @@
          </sequence>
        </testcase>
       
        <testcase name="getTestCaseName('Unique Chars: enable case sensitive chars')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Unique Chars: enable case sensitive chars
            #@TestIssue           none
            #@TestPurpose         Unique Chars: enable case sensitive chars
            #@TestPreamble        none
            #@TestStep            set case-sensitive-validation to true
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Unique Chars: enable case sensitive chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Unique Chars: enable case sensitive chars'
               '%s enable case sensitive chars' % msg
            </message>
            
            <call function="'modifyPwdValidator'">
@@ -281,20 +387,33 @@
          </sequence>
        </testcase>
       
        <testcase name="getTestCaseName('Unique Chars: password with 3 unique chars 3')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 3 unique chars 3
            #@TestIssue           none
            #@TestPurpose         Unique Chars: pwd with 3 unique chars 3
            #@TestPreamble        none
            #@TestStep            user modifying password to abbabac RC 53
            #@TestStep            user binding with new password RC 49
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Unique Chars: pwd with 3 unique chars 3')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'abebab' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abbabac' ,
                    'changetype'             : 'replace' , 
@@ -302,13 +421,13 @@
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abbabac' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -321,33 +440,45 @@
          </sequence>
        </testcase>
        
        <testcase name="getTestCaseName('Unique Chars: password with 3 unique case sensitive chars')">
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Test pwd with 3 unique sensitive chars
            #@TestIssue           none
            #@TestPurpose         pwd with 3 unique sensitive chars
            #@TestPreamble        none
            #@TestStep            user modifying password to abBABac RC 0
            #@TestStep            user binding with new password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName
            ('Unique Chars: password with 3 unique case sensitive chars')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user modifying password'
               '%s user modifying password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'abebab' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abBABac' ,
                    'changetype'             : 'replace'   }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: user binding with new password'
               '%s user binding with new password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abBABac' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
@@ -359,11 +490,24 @@
          </sequence>
        </testcase>
        
        <!--- Test Case information
            #@TestMarker          Unique Characters
            #@TestName            Unique Chars: Postamble
            #@TestIssue           none
            #@TestPurpose         Unique Chars: Postamble
            #@TestPreamble        none
            #@TestStep            Admin Resetting Maximum Pwd Length
            #@TestStep            User Changing Password to abebab RC 0
            #@TestStep            User Searching With Password RC 0
            #@TestPostamble       none
            #@TestResult          Success if all tests are PASS
          -->
        <testcase name="getTestCaseName('Unique Chars: Postamble')">
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Security: Pwd Validator: Unique Chars: Postamble Step 1. Admin Resetting Maximum Pwd Length'
               '%s Postamble Step 1. Admin Resetting Maximum Pwd Length' % msg
            </message>
            <call function="'modifyPwdPolicy'">
@@ -379,28 +523,28 @@
            
            <!--- User Change Password -->
            <message>
               'Security: Pwd Validator: Unique Chars: Postamble Step 2. User Changing Password'
               '%s Postamble Step 2. User Changing Password' % msg
            </message>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                    'dsInstanceDn'           : 'uid=kwinters,%s' % basedn ,
                    'dsInstancePswd'         : 'abBABac' ,
                    'DNToModify'             : 'uid=kwinters, ou=People, ou=password tests,  o=Pwd Validator Tests, dc=example,dc=com' ,
                    'DNToModify'             : 'uid=kwinters, %s' % basedn ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'abebab' ,
                    'changetype'             : 'replace' }
            </call>
            
            <message>
               'Security: Pwd Validator: Unique Chars: Postamble Step 3. User Searching With Password'
               '%s Postamble Step 3. User Searching With Password' % msg
            </message>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=kwinters,ou=people,ou=password tests,o=Pwd Validator Tests,dc=example,dc=com' ,
                'dsInstanceDn'     : 'uid=kwinters,%s' % basedn ,
                'dsInstancePswd'   : 'abebab' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,