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

Gary Williams
09.00.2012 fa245aa31d2f5c03ffde42c27b2d9d7cdf1ba976
Add Password Policy Last Login functional tests
2 files added
2552 ■■■■■ changed files
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml 168 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml 2384 ●●●●● patch | view | raw | blame | history
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml
New file
@@ -0,0 +1,168 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/CDDLv1_0.txt
 ! or http://forgerock.org/license/CDDLv1.0.html.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/CDDLv1_0.txt.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2012 ForgeRock AS.
 ! -->
<stax>
  <defaultcall function="main_pwp_last_login"/>
  <function name="main_pwp_last_login" scope="local">
    <sequence>
      <block name="'main_pwp_last_login'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group'] = 'password_policy'
              CurrentTestPath['suite'] = 'last_login'
              _group=CurrentTestPath['group']
              _groupdir='%s/testcases/%s' % (TESTS_DIR,_group)
              _label = 'PWP Last Login'
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Password policy last_login test suite
            #@TestSuitePurpose    Verify password policy last_login operations
            #@TestSuiteID         last_login
            #@TestSuiteGroup      password_policy
            #@TestGroup           password_policy
            #@TestScript          password_policy.xml
            #@TestHTMLLink        http://www.forgerock.org/
            -->
            <call function="'testSuite_Preamble'"/>
            <try>
              <sequence>
                <call function="'common_setup'">
                  {
                    'quickStart'    : False ,
                    'startServer'   : True  ,
                    'loadData'      : True  ,
                    'ldifFile'      : '%s/password_policy/pwp_startup.ldif' % remote.data ,
                    'stopServer'    : False ,
                    'friendlyName'  : _label
                  }
                </call>
                <!-- List of Import of Test Functions -->
                <script>
                  importList=[]
                  importList.append('last_login/pwp_last_login_tests')
                </script>
                <!-- Import the files for this test suite -->
                <iterate var="_import" in="importList">
                  <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/%s.xml' % (_groupdir,_import)"/>
                </iterate>
                <!-- Specific to last_login password policy tests -->
                <script>
                  basedn = 'ou=people,ou=password tests,o=Pwd Policy Tests,dc=example,dc=com'
                  basepwp = 'cn=Default Password Policy,cn=Password Policies,cn=config'
                  msg1 = 'Password Policy: Last Login:'
                  #Configurable Idle Lockout Interval Times
                  shortIntervalTime = '25s'
                  longIntervalTime = '25s'
                  shortSleepTime = 15000
                  longSleepTime = 30000
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('pwp_last_login_001')
                  testsList.append('pwp_last_login_002')
                  testsList.append('pwp_last_login_003')
                  testsList.append('pwp_last_login_004')
                  testsList.append('pwp_last_login_005')
                  testsList.append('pwp_last_login_006')
                  testsList.append('pwp_last_login_007')
                  testsList.append('pwp_last_login_008')
                  testsList.append('pwp_last_login_009')
                  testsList.append('pwp_last_login_010')
                  testsList.append('pwp_last_login_011')
                  testsList.append('pwp_last_login_012')
                  testsList.append('pwp_last_login_013')
                  testsList.append('pwp_last_login_014')
                  testsList.append('pwp_last_login_015')
                  testsList.append('pwp_last_login_016')
                  testsList.append('pwp_last_login_017')
                  testsList.append('pwp_last_login_018')
                  testsList.append('pwp_last_login_019')
                  testsList.append('pwp_last_login_020')
                </script>
                <!-- Execute the Tests -->
                <iterate var="__test" in="testsList">
                  <sequence>
                    <call function="'%s' % (__test)" />
                  </sequence>
                </iterate>
              </sequence>
            <catch exception="'STAFException.TestSuite.SetupException'">
              <sequence>
                <message log="1" level="'fatal'">
                  'Setup of test suite failed.'
                </message>
                <rethrow/>
              </sequence>
            </catch>
            <finally>
              <message>'Test Cases Completed.'</message>
            </finally>
            </try>
          </sequence>
          <finally>
            <sequence>
              <!-- Test Suite Cleanup -->
              <message>'Finally: Password Policy Cleanup.'</message>
              <try>
                <call function="'common_cleanup'">
                  { 'friendlyName' :_label }
                </call>
              <catch exception="'STAFException'">
                <sequence>
                  <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
                </sequence>
              </catch>
              <finally>
                <call function="'testSuite_Postamble'"/>
              </finally>
              </try>
            </sequence>
          </finally>
        </try>
      </block>
    </sequence>
  </function>
</stax>
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml
New file
@@ -0,0 +1,2384 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, include this CDDL HEADER in each
 ! file and include the License file at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
 ! add the following below this CDDL HEADER, with the fields enclosed
 ! by brackets "[]" replaced with your own identifying information:
 !      Portions Copyright [yyyy] [name of copyright owner]
 !
 ! CDDL HEADER END
 !
 !      Copyright 2006-2008 Sun Microsystems, Inc.
 !      Portions Copyright 2012 ForgeRock AS
 ! -->
<stax>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Check for ds-cfg-idle-lockout-interval
      #@TestIssue           none
      #@TestPurpose         Check for ds-cfg-idle-lockout-interval
      #@TestPreamble        none
      #@TestStep            Checking existence of
                            ds-cfg-idle-lockout-interval with value set 0
      #@TestPostamble       none
      #@TestResult          Success if compareEntry returns 0
  -->
  <function name="pwp_last_login_001" scope="local">
    <testcase name="getTestCaseName('PWP Get Idle Lockout Interval')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Get Idle Lockout Interval Property.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'get-password-policy-prop',
                'optionsString'       : dsconfigOptions,
                'expectedString'      : 'idle-lockout-interval : 0 s'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Get Idle Lockout Interval Attribute.' % msg1 }
            </call>
            <call function="'compareEntry'">
             { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
               'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
               'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
               'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
               'attrToBeCompared'    : 'ds-cfg-idle-lockout-interval:0 seconds',
               'entryToBeCompared'   : basepwp }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Enable Last Login Time Attribute
      #@TestIssue           none
      #@TestPurpose         Enable Last Login Time Attribute
      #@TestPreamble        none
      #@TestStep            Enable Last Login Time Attribute
                            Set last-login-time-attribute to ds-pwp-last-login-time
      #@TestStep            User Binding With Password returns 0
      #@TestStep            Checking for Absence of Last Login Time
                            SearchObject attribute ds-pwp-last-login-time
                            returns 0 checktestStringNotPresent
                            ds-pwp-last-login-time
      #@TestPostamble       none
      #@TestResult          Success if the 3 steps are PASS
  -->
  <function name="pwp_last_login_002" scope="local">
    <testcase name="getTestCaseName('PWP Set Last Login Time Attribute')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Last Login Attribute Only.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "last-login-time-attribute:ds-pwp-last-login-time"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding With Password.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Checking for Absence of Last Login Time.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'dsBaseDN'         : 'uid=jreuter,%s' % basedn ,
                'dsFilter'         : 'objectclass=*'  ,
                'attributes'       : 'ds-pwp-last-login-time' }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestStringNotPresent'">
                { 'returnString'    : returnString ,
                  'testString'      : 'ds-pwp-last-login-time' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          Last Login
    #@TestName            Enable Last Login Time Format
    #@TestIssue           none
    #@TestPurpose         Verify that last-login-time-format can be enabled
    #@TestPreamble        none
    #@TestStep            Admin Disable Last Login Attribute Only set
                          last-login-time-attribute to reset
    #@TestStep            Admin Enable Last Login Format Only set
                          last-login-time-format to EEE, MMM dd,
                          yyyy HH:mm:ss
    #@TestStep            User Binding With Password returns 0
    #@TestStep            Checking for Absence of Last Login Time
                          SearchObject attribute ds-pwp-last-login-time
                          checktestStringNotPresent ds-pwp-last-login-time
    #@TestPostamble       none
    #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_003" scope="local">
    <testcase name="getTestCaseName('PWP Enable Last Login Time Format')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Last Login Time Attribute.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "last-login-time-attribute"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Enable Last Login Time Format Only.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "last-login-time-format:EEE, MMM dd, yyyy HH:mm:ss"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding With Password.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Checking for Absence of Last Login Time.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'dsBaseDN'         : 'uid=jreuter,%s' % basedn ,
                'dsFilter'         : 'objectclass=*'  ,
                'attributes'       : 'ds-pwp-last-login-time' }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestStringNotPresent'">
                { 'returnString'   : returnString ,
                  'testString'     : 'ds-pwp-last-login-time' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker        Last Login
    #@TestName          Enable Last Login Time Attribute And Format
    #@TestIssue         none
    #@TestPurpose       Verify that admin can enable both last login attribute and format
    #@TestPreamble      none
    #@TestStep          Admin Enable Last Login Attribute And Format
    #@TestStep          set last-login-time-attribute to ds-pwp-last-login-time
    #@TestStep          User Binding With Password returns 0
    #@TestStep          Check manage-account get-last-login-time
    #@TestStep          Checking for Absence of Last Login Time
    #@TestStep          SearchObject ds-pwp-last-login-time returns 0
    #@TestStep          checktestString ds-pwp-last-login-time
    #@TestPostamble     none
    #@TestResult        Success if the 3 steps are PASS
  -->
  <function name="pwp_last_login_004" scope="local">
    <testcase name="getTestCaseName('PWP Enable Last Login Time Attribute And Format')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Last Login Time Attribute Only.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "last-login-time-attribute:ds-pwp-last-login-time"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Get Last Login Time Attribute.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "last-login-time-attribute"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'get-password-policy-prop',
                'optionsString'       : dsconfigOptions,
                'expectedString'      : 'last-login-time-attribute : ds-pwp-last-login-time'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding With Password.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check manage-account get-last-login-time.' % msg1 }
            </call>
            <call function="'manageAccountWithScript'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'       : 'get-last-login-time' ,
                'targetDn'         : 'uid=jreuter,%s' % basedn  }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
                { 'returnString'       : returnString ,
                  'expectedString'     : 'Last Login Time:  2' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Checking for Absence of Last Login Time.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'dsBaseDN'         : 'uid=jreuter,%s' % basedn ,
                'dsFilter'         : 'objectclass=*'  ,
                'attributes'       : 'ds-pwp-last-login-time' }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
                { 'returnString'       : returnString ,
                  'expectedString'     : 'ds-pwp-last-login-time' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Long Idle Lockout Interval - Long Idle Lockout
      #@TestIssue           none
      #@TestPurpose         Long Idle Lockout Interval - Long Idle Lockout
      #@TestPreamble        none
      #@TestStep            Step 1. Check User Bind returns 0
      #@TestStep            Step 2. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 3. User Binding Before Idle Lockout
                            SearchObject returns 0
      #@TestStep            Step 4. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 5. User Binding After Idle Lockout
                            SearchObject returns 49
      #@TestPostamble       none
      #@TestResult          Success if the 5 steps are PASS
  -->
  <function name="pwp_last_login_005" scope="local">
    <testcase name="getTestCaseName('PWP Long Idle Lockout')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lockout Interval to %s.' % (msg1,longIntervalTime) }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime )
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout Interval.' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout Interval.' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'destroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base',
                  'expectedRC'       : 49 }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Reset Idle Lockout Interval 1
      #@TestIssue           none
      #@TestPurpose         Reset Idle Lockout Interval 1
      #@TestPreamble        none
      #@TestStep            Step 1. set idle-lockout-interval to 0 s
      #@TestStep            Step 2. User Binding SearchObject returns 0
      #@TestStep            Step 3. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 4. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 4 tests are PASS
  -->
  <function name="pwp_last_login_006" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval.' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding after Idle Lockout Interval Reset .' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'destroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout Interval.' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'destroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Password Change Override
      #@TestIssue           none
      #@TestPurpose         Password Change Override
      #@TestPreamble        none
      #@TestStep            Step 1. Check User Bind SearchObject returns 0
      #@TestStep            Step 2. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 3. User Binding Before Idle Lockout
                            SearchObject returns 0
      #@TestStep            Step 4. Check get-seconds-until-idle-lockout
      #@TestStep            Step 5. Sleep sleepForMilliSeconds shortSleepTime
      #@TestStep            Step 6. User Changing Password
      #@TestStep            Step 7. Sleep sleepForMilliSeconds to shortSleepTime
      #@TestStep            Step 8. User Binding After Idle Lockout
                            SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 8 steps are PASS
  -->
  <function name="pwp_last_login_007" scope="local">
    <testcase name="getTestCaseName('PWP Password Change Override')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lockout Interval to %s.' % (msg1,shortIntervalTime) }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % shortIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'destroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check get-seconds-until-idle-lockout' % msg1 }
            </call>
            <call function="'manageAccountWithScript'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'subcommand'       : 'get-seconds-until-idle-lockout' ,
                'targetDn'         : 'uid=jreuter,%s' % basedn  }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
              { 'returnString'       : returnString ,
                'expectedString'     : 'Seconds Until Idle Account Lockout: ' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,shortSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : shortSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Changing Password' % msg1 }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=jreuter,%s' % basedn ,
                    'dsNewPassword'          : 'newdestroy' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,shortSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : shortSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Admin Reset Idle Lockout Interval 2
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval 2
      #@TestPreamble        none
      #@TestStep            Step 1. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval to 0
      #@TestStep            Step 2. User Binding SearchObject returns 0
      #@TestStep            Step 3. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 4. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_008" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 2')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            User Bind Reset Last Login Time
      #@TestIssue           none
      #@TestPurpose         User Bind Reset Last Login Time
      #@TestPreamble        none
      #@TestStep            Step 1. Check User Bind SearchObject returns 0
      #@TestStep            Step 2. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 3. User Binding Before Idle Lockout
                            SearchObject returns 0
      #@TestStep            Step 4. Sleep sleepForMilliSeconds shortSleepTime
      #@TestStep            Step 5. User Bind To Reset Last Login Time
                            SearchObject returns 0
      #@TestStep            Step 6. Sleep sleepForMilliSeconds shortSleepTime
      #@TestStep            Step 7. User Binding After Idle Lockout
                            SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 7 steps are PASS
  -->
  <function name="pwp_last_login_009" scope="local">
    <testcase name="getTestCaseName('PWP User Bind Reset')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,shortSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : shortSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Bind To Reset Last Login Time' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,shortSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : shortSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Admin Reset Idle Lockout Interval 3
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval 3
      #@TestPreamble        none
      #@TestStep            Step 1. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval to 0
      #@TestStep            Step 2. User Binding SearchObject returns 0
      #@TestStep            Step 3. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 4. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_010" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 3')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Long Disable Last Login
      #@TestIssue           none
      #@TestPurpose         Long Disable Last Login
      #@TestPreamble        none
      #@TestStep            Step 1. Disable Last Login set
                            last-login-time-attribute to reset
      #@TestStep            Step 2. Check User Bind SearchObject returns 0
      #@TestStep            Step 3. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 4. User Binding SearchObject returns 49
      #@TestPostamble       none
      #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_011" scope="local">
    <testcase name="getTestCaseName('PWP Disable Last Login')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Last Login Time Attribute' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "last-login-time-attribute"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lockout Interval to %s.' % (msg1,longIntervalTime) }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' ,
                'expectedRC'       : 49 }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker       Last Login
    #@TestName         Admin Reset Idle Lockout Interval 4
    #@TestIssue        none
    #@TestPurpose      Admin Reset Idle Lockout Interval 4
    #@TestPreamble     none
    #@TestStep         Step 1. Enable Last Login Attribute set
                       last-login-time-attribute to ds-pwp-last-login-time
    #@TestStep         Step 2. Admin Resetting Idle Lockout Interval
                       set idllockout-interval to 0 s
    #@TestStep         Step 3. User Binding SearchObject returns 0
    #@TestStep         Step 4. Sleep sleepForMilliSeconds longSleepTime
    #@TestStep         Step 5. User Binding SearchObject returns 0
    #@TestPostamble    none
    #@TestResult       Success if the 5 steps are PASS
  -->
  <function name="pwp_last_login_012" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 4')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Last Login Time Attribute' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "last-login-time-attribute:ds-pwp-last-login-time"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker          Last Login
    #@TestName            Long Idle Lockout Interval Disable Last Login 2
    #@TestIssue           none
    #@TestPurpose         Long Idle Lockout Interval Disable Last Login 2
    #@TestPreamble        none
    #@TestStep            Step 1. Disable Last Login set
                          last-login-time-format to reset
    #@TestStep            Step 2. Check User Bind SearchObject returns 0
    #@TestStep            Step 3. Admin Changing Idle Lockout Interval
                          set idle-lockout-interval to 50 s
    #@TestStep            Step 4. User Binding SearchObject returns 49
    #@TestPostamble       none
    #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_013" scope="local">
    <testcase name="getTestCaseName('PWP Disable Last Login 2')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Last Login Time Format' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "last-login-time-format"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lock Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' ,
                'expectedRC'       : 49 }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Admin Reset Idle Lockout Interval 5
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval 5
      #@TestPreamble        none
      #@TestStep            Step 1. Enable Last Login Attribute set
                            last-login-time-format to EEE, MMM dd,
                            yyyy HH:mm:ss
      #@TestStep            Step 2. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval to 0 s
      #@TestStep            Step 3. User Binding SearchObject returns 0
      #@TestStep            Step 4. Sleep sleepForMilliSeconds to longSleepTime
      #@TestStep            Step 5. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 5 steps are PASS
  -->
  <function name="pwp_last_login_014" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 5')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Enable Last Login Time Format' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "last-login-time-format:EEE, MMM dd, yyyy HH:mm:ss"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <message>
               'Security: Last Login: Reset Idle Lockout Step 3. User Binding'
            </message>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Long Idle Lockout Interval - Repeat
      #@TestIssue           none
      #@TestPurpose         Long Idle Lockout Interval - Repeat
      #@TestPreamble        none
      #@TestStep            Step 1. Check User Bind SearchObject returns 0
      #@TestStep            Step 2. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 3. User Binding Before Idle Lockout
                            SearchObject returns 0
      #@TestStep            Step 4. Sleep sleepForMilliSeconds to longSleepTime
      #@TestStep            Step 5. User Binding After Idle Lockout
                            SearchObject returns 49
      #@TestPostamble       none
      #@TestResult          Success if the 5 steps are PASS
  -->
  <function name="pwp_last_login_015" scope="local">
    <testcase name="getTestCaseName('PWP Repeat')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lockout Interval to %s.' % (msg1,longIntervalTime) }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' ,
                  'expectedRC'       : 49 }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Admin Reset Idle Lockout Interval 6
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval 6
      #@TestPreamble        none
      #@TestStep            Step 1. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval to 0 s
      #@TestStep            Step 2. User Binding SearchObject returns 0
      #@TestStep            Step 3. Sleep sleepForMilliSeconds to longSleepTime
      #@TestStep            Step 4. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_016" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 6')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'newdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
    #@TestMarker        Last Login
    #@TestName          Long Idle Lockout Interval - Password Change Override 2
    #@TestIssue         none
    #@TestPurpose       Long Idle Lockout Interval - Password Change Override 2
   SearchObject returns 0
    #@TestPreamble      none
    #@TestStep          Step 1. Check User Bind SearchObject returns 0
    #@TestStep          Step 2. Admin Changing Idle Lockout Interval
                        set idle-lockout-interval to 50 s
    #@TestStep          Step 3. User Binding Before Idle Lockout
                        SearchObject returns 0
    #@TestStep          Step 4. Sleep sleepForMilliSeconds to longSleepTime
    #@TestStep          Step 5. User Changing Password
    #@TestStep          Step 6. User Binding After Idle Lockout
                        SearchObject returns 0
    #@TestPostamble     none
    #@TestResult        Success if the 6 steps are PASS
  -->
  <function name="pwp_last_login_017" scope="local">
    <testcase name="getTestCaseName('PWP Password Change Override 2')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Set Idle Lockout Interval to %s.' % (msg1,longIntervalTime) }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'newdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Changing Password' % msg1 }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=jreuter,%s' % basedn ,
                    'dsNewPassword'          : 'anotherdestroy' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'anotherdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Admin Reset Idle Lockout Interval 7
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval 7
      #@TestPreamble        none
      #@TestStep            Step 1. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval to 0 s
      #@TestStep            Step 2. User Binding SearchObject returns 0
      #@TestStep            Step 3. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 4. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 4 steps are PASS
  -->
  <function name="pwp_last_login_018" scope="local">
    <testcase name="getTestCaseName('PWP Reset Idle Lockout 7')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'anotherdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'anotherdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Long Idle Lockout - Pwd Change Override 3
      #@TestIssue           none
      #@TestPurpose         Long Idle Lockout - Pwd Change Override 3
      #@TestPreamble        none
      #@TestStep            Step 1. Disable Last Login set
                            last-login-time-format to reset
      #@TestStep            Step 2. Check User Bind SearchObject returns 0
      #@TestStep            Step 3. Admin Changing Idle Lockout Interval
                            set idle-lockout-interval to 50 s
      #@TestStep            Step 4. User Binding Before Idle Lockout
                            SearchObject returns 49
      #@TestStep            Step 5. Admin Changing Password
      #@TestStep            Step 6. User Binding After Admin Pwd Change
                            SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 6 steps are PASS
  -->
  <function name="pwp_last_login_019" scope="local">
    <testcase name="getTestCaseName('PWP Pwd Change Override 3')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Last Login Time Format' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "last-login-time-format"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Check User Bind' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'anotherdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Idle Lockout Interval' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set "idle-lockout-interval:%s"' % longIntervalTime)
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding Before Idle Lockout' % msg1 }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                'dsInstancePswd'   : 'anotherdestroy' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' ,
                'expectedRC'       : 49 }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Admin Resetting Users Password' % msg1 }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=jreuter,%s' % basedn ,
                    'dsNewPassword'          : 'lastdestroy' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding After Password Change' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'lastdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
  <!--- Test Case information
      #@TestMarker          Last Login
      #@TestName            Postamble Admin Reset Idle Lockout Interval
      #@TestIssue           none
      #@TestPurpose         Admin Reset Idle Lockout Interval
      #@TestPreamble        none
      #@TestStep            Step 1. Admin Resetting Idle Lockout Interval
                            set idle-lockout-interval'  to 0 s
      #@TestStep            Step 2. Admin Disabling Last Login Time
                            Attribute last-login-time-attribute to reset
      #@TestStep            Step 3. User Binding SearchObject returns 0
      #@TestStep            Step 4. Sleep sleepForMilliSeconds longSleepTime
      #@TestStep            Step 5. User Binding SearchObject returns 0
      #@TestPostamble       none
      #@TestResult          Success if the 5 steps are PASS
  -->
  <function name="pwp_last_login_020" scope="local">
    <testcase name="getTestCaseName('PWP Reset Last Login Properties')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : '%s Reset Last Login Properties' % msg1 }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset "idle-lockout-interval"')
              options.append('--reset "last-login-time-attribute"')
              dsconfigOptions=' '.join(options)
            </script>
            <call function="'dsconfig'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST,
                'dsInstanceAdminPort' : DIRECTORY_INSTANCE_ADMIN_PORT,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD,
                'subcommand'          : 'set-password-policy-prop',
                'optionsString'       : dsconfigOptions
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'lastdestroy',
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s Sleep (%s).' % (msg1,longSleepTime) }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds'   : longSleepTime }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : '%s User Binding' % msg1 }
            </call>
            <call function="'SearchObject'">
                { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                  'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                  'dsInstanceDn'     : 'uid=jreuter,%s' % basedn ,
                  'dsInstancePswd'   : 'lastdestroy' ,
                  'dsBaseDN'         : 'dc=example,dc=com' ,
                  'dsFilter'         : 'objectclass=*'  ,
                  'extraParams'      : '-s base' }
            </call>
          </sequence>
          <catch exception="'STAXException'" typevar="eType" var="eInfo">
            <message log="1" level="'fatal'">
              '%s: Test failed. eInfo(%s)' % (eType,eInfo)
            </message>
          </catch>
          <finally>
            <sequence>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </finally>
        </try>
      </sequence>
    </testcase>
  </function>
</stax>