From fa245aa31d2f5c03ffde42c27b2d9d7cdf1ba976 Mon Sep 17 00:00:00 2001
From: Gary Williams <gary.williams@forgerock.com>
Date: Fri, 09 Mar 2012 18:00:26 +0000
Subject: [PATCH] Add Password Policy Last Login functional tests

---
 opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml       |  168 +++
 opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml | 2384 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 2,552 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml
new file mode 100644
index 0000000..3c38789
--- /dev/null
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login.xml
@@ -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>
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml
new file mode 100644
index 0000000..a0a7813
--- /dev/null
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/last_login/pwp_last_login_tests.xml
@@ -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>

--
Gitblit v1.10.0