From e53d4a8c06e02955add776517d15433266becf9a Mon Sep 17 00:00:00 2001
From: Gary Williams <gary.williams@forgerock.com>
Date: Fri, 09 Mar 2012 12:01:11 +0000
Subject: [PATCH] Add Password Policy Grace Login functional tests
---
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login_tests.xml | 777 ++++++++++++++++++++++++++++++++++++++++++++++++
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml | 3
opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login.xml | 155 +++++++++
3 files changed, 934 insertions(+), 1 deletions(-)
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login.xml
new file mode 100644
index 0000000..6fddd19
--- /dev/null
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login.xml
@@ -0,0 +1,155 @@
+<?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_grace_login"/>
+ <function name="main_pwp_grace_login" scope="local">
+ <sequence>
+ <block name="'main_pwp_grace_login'">
+ <try>
+ <sequence>
+ <script>
+ CurrentTestPath['group'] = 'password_policy'
+ CurrentTestPath['suite'] = 'grace_login'
+
+ _group=CurrentTestPath['group']
+ _groupdir='%s/testcases/%s' % (TESTS_DIR,_group)
+ _label = 'PWP Grace Login'
+ </script>
+
+ <!--- Test Suite information
+ #@TestSuiteName Password policy grace_login test suite
+ #@TestSuitePurpose Verify password policy grace_login operations
+ #@TestSuiteID grace_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('grace_login/pwp_grace_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 grace_login password policy tests -->
+ <script>
+ basedn1 = 'ou=people,ou=password tests,'
+ basedn = '%s o=Pwd Policy Tests,dc=example,dc=com' % basedn1
+ basepwp ='cn=Default Password Policy,cn=Password Policies,cn=config'
+ msg = 'Security: Grace Login:'
+ msg1 = 'Password Policy DN: %s' % basepwp
+ msg2 = 'Account Is Disabled: false'
+ msg3 = 'Password History:'
+
+ grace_login_count = 3
+ </script>
+
+ <!-- List of Test Cases -->
+ <script>
+ testsList=[]
+ testsList.append('pwp_grace_login_001')
+ testsList.append('pwp_grace_login_002')
+ testsList.append('pwp_grace_login_003')
+ testsList.append('pwp_grace_login_004')
+ testsList.append('pwp_grace_login_005')
+ testsList.append('pwp_grace_login_006')
+ testsList.append('pwp_grace_login_007')
+ </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/grace_login/pwp_grace_login_tests.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login_tests.xml
new file mode 100644
index 0000000..778f255
--- /dev/null
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/grace_login/pwp_grace_login_tests.xml
@@ -0,0 +1,777 @@
+<?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 2007-2008 Sun Microsystems, Inc.
+ ! Portions Copyright 2012 ForgeRock AS
+ ! -->
+<stax>
+
+ <!--- Test Case information
+ #@TestMarker Grace Login
+ #@TestName Admin Changing Password Policy Settings
+ #@TestIssue None
+ #@TestPurpose Admin Changing Password Policy Settings
+ #@TestPreamble None
+ #@TestStep Set expire-passwords-without-warning true
+ #@TestStep Set min-password-age 1s
+ #@TestStep Set max-password-age 3s
+ #@TestStep Set password-expiration-warning-interval 1s
+ #@TestStep Set grace-login-count 3
+ #@TestPostamble None
+ #@TestResult Success if dsconfig returns 0
+ -->
+ <function name="pwp_grace_login_001" scope="local">
+ <testcase name="getTestCaseName('PWP Set Password Policy Settings')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Modifying password policy setting.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--set "expire-passwords-without-warning:true"')
+ options.append('--set "allow-expired-password-changes:true"')
+ options.append('--set "min-password-age:1s"')
+ options.append('--set "max-password-age:3s"')
+ options.append('--set "password-expiration-warning-interval:1s"')
+ options.append('--set "grace-login-count:%s"' % grace_login_count)
+ 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 Default Password Policy.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ 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
+
+ }
+ </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 Grace Login
+ #@TestName Min Password Age More than Max Password Age
+ #@TestIssue None
+ #@TestPurpose Verify that min-password-age is not more than max-password-age
+ #@TestPreamble None
+ #@TestStep Change Password Policy min password age beyond limit
+ #@TestStep Set min-password-age 10s
+ #@TestStep Set max-password-age 3s
+ #@TestStep Set password-expiration-warning-interval 1s
+ #@TestPostamble None
+ #@TestResult Success if dsconfig returns 1
+ -->
+ <function name="pwp_grace_login_002" scope="local">
+ <testcase name="getTestCaseName('PWP Min Password Age Greater than Max Password Age')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Admin modifying password policy settings.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--set "min-password-age:10s"')
+ options.append('--set "max-password-age:3s"')
+ options.append('--set "password-expiration-warning-interval:1s"')
+ 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,
+ 'expectedRC' : 1
+ }
+ </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 Grace Login
+ #@TestName Min Password Age More than Expiration Warning Interval
+ #@TestIssue None
+ #@TestPurpose Verify that min-password-age is not more than password-expiration-warning-interval
+ #@TestPreamble None
+ #@TestStep Change Password Policy min password age to limit
+ #@TestStep Set min-password-age 2s
+ #@TestStep Set max-password-age 3s
+ #@TestStep Set password-expiration-warning-interval 1s
+ #@TestPostamble None
+ #@TestResult Success if dsconfig returns 1
+ -->
+ <function name="pwp_grace_login_003" scope="local">
+ <testcase name="getTestCaseName('PWP Min Password Age More than Expiration Warning Interval')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Modifying password policy settings.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--set "min-password-age:2s"')
+ options.append('--set "max-password-age:3s"')
+ options.append('--set "password-expiration-warning-interval:1s"')
+ 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,
+ 'expectedRC' : 1
+ }
+ </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 Grace Login
+ #@TestName Password Expiration Warning Interval Too Big
+ #@TestIssue None
+ #@TestPurpose Verify that password-expiration-warning-interval can not be
+ greater than max-password-age
+ #@TestPreamble None
+ #@TestStep Change Password Policy expire warning interval beyond limit
+ #@TestStep Set min-password-age 1s
+ #@TestStep Set max-password-age 3s
+ #@TestStep Set password-expiration-warning-interval 10 s
+ #@TestPostamble None
+ #@TestResult Success if dsconfig returns 1
+ -->
+ <function name="pwp_grace_login_004" scope="local">
+ <testcase name="getTestCaseName('PWP Password Expiration Warning Interval Too Big')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Admin modifying password policy settings.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--set "min-password-age:1s"')
+ options.append('--set "max-password-age:3s"')
+ options.append('--set "password-expiration-warning-interval:10s"')
+ 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,
+ 'expectedRC' : 1
+ }
+ </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 Grace Login
+ #@TestName Grace Login Count Expired
+ #@TestIssue None
+ #@TestPurpose Grace Login Count Expired
+ #@TestPreamble None
+ #@TestStep Pause 2 seconds
+ #@TestStep Verify grace login use times with manage-account
+ #@TestStep Search Bind 1 SearchObject returns 19
+ #@TestStep Verify remaining grace login with manage-account
+ #@TestStep Verify grace login use times with manage-account
+ #@TestStep Search Bind 2 SearchObject returns 19
+ #@TestStep Verify remaining grace login with manage-account
+ #@TestStep Search Bind 3 SearchObject returns 49
+ #@TestStep Verify remaining grace login with manage-account
+ #@TestStep Search Bind 4 SearchObject returns 49
+ #@TestStep Verify remaining grace login with manage-account
+ #@TestStep Verify manage-account get-all
+ #@TestPostamble None
+ #@TestResult Success if all the steps are PASS
+ -->
+ <function name="pwp_grace_login_005" scope="local">
+ <testcase name="getTestCaseName('PWP Grace Login Count Expired')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Get Default Password Policy.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ 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
+
+ }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Pause 2 seconds.' % msg }
+ </call>
+
+ <call function="'Sleep'">
+ { 'sleepForMilliSeconds' : '2000' }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify remaining grace login count with manage-account ' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-remaining-grace-login-count' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify grace login use times with manage-account ' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-grace-login-use-times' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Grace Login Use Times:' }
+ </call>
+
+ <!-- The password has expired, entering grace login period -->
+ <script>
+ remaining_grace_login_count = 2
+ </script>
+ <loop from="1" to="grace_login_count" var="loop">
+
+ <sequence>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Search Bind %s' % (msg,loop) }
+ </call>
+
+ <call function="'SearchObject'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=btalbot,%s' % basedn ,
+ 'dsInstancePswd' : 'trident',
+ 'dsBaseDN' : 'dc=example,dc=com' ,
+ 'dsFilter' : 'objectclass=*' ,
+ 'extraParams' : '-s base' ,
+ 'expectedRC' : 19 }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify remaining grace login count.' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-remaining-grace-login-count' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Remaining Grace Login Count: %s' % remaining_grace_login_count }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify grace login use times.' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-grace-login-use-times' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <!-- TODO: WTF -->
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Grace Login Use Times: 20' }
+ </call>
+
+ <script>
+ remaining_grace_login_count -= 1
+ </script>
+
+ </sequence>
+ </loop>
+
+
+ <!-- The password has expired, no grace logins remaining -->
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Search Bind 4' % msg }
+ </call>
+
+ <call function="'SearchObject'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=btalbot,%s' % basedn ,
+ 'dsInstancePswd' : 'trident',
+ 'dsBaseDN' : 'dc=example,dc=com' ,
+ 'dsFilter' : 'objectclass=*' ,
+ 'extraParams' : '-s base' ,
+ 'expectedRC' : 49 }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify remaining grace login with manage-account' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-remaining-grace-login-count' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : 'Remaining Grace Login Count: 0' }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Verify manage-account get-all' % msg }
+ </call>
+
+ <call function="'manageAccountWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
+ 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
+ 'subcommand' : 'get-all' ,
+ 'targetDn' : 'uid=btalbot,%s' % basedn }
+ </call>
+
+ <script>
+ returnString = STAXResult[0][1]
+ </script>
+
+ <call function="'checktestString'">
+ { 'returnString' : returnString ,
+ 'expectedString' : msg1 ,
+ 'expectedString' : msg2 ,
+ 'expectedString' : msg3 }
+ </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 Grace Login
+ #@TestName User Reset Password During Grace Login
+ #@TestIssue None
+ #@TestPurpose User Reset Password During Grace Login
+ #@TestPreamble None
+ #@TestStep Search Bind 1 SearchObject returns 19
+ #@TestStep User resetting password
+ #@TestStep Admin reset max password age set
+ #@TestStep Set max-password-age to 24h
+ #@TestStep Search Bind 2 SearchObject returns 0
+ #@TestStep Search Bind 2 SearchObject returns 0
+ #@TestPostamble None
+ #@TestResult Success if the 5 steps are PASS
+ -->
+ <function name="pwp_grace_login_006" scope="local">
+ <testcase name="getTestCaseName('PWP User Reset Password During Grace Login')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Reset Password, Search Bind 1' % msg }
+ </call>
+
+ <call function="'SearchObject'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=kwinters,%s' % basedn ,
+ 'dsInstancePswd' : 'forsook',
+ 'dsBaseDN' : 'dc=example,dc=com' ,
+ 'dsFilter' : 'objectclass=*' ,
+ 'extraParams' : '-s base' ,
+ 'expectedRC' : 19 }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Reset Password, User resetting password' % msg }
+ </call>
+
+ <call function="'ldapPasswordModifyWithScript'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=kwinters,%s' % basedn ,
+ 'dsInstancePswd' : 'forsook' ,
+ 'dsAuthzID' : 'dn:uid=kwinters,%s' % basedn ,
+ 'dsNewPassword' : 'newforsook' }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Reset Password, Admin reset max password age' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--set "max-password-age:24h"')
+ 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 Password, Search Bind 2' % msg }
+ </call>
+
+ <call function="'SearchObject'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=kwinters,%s' % basedn ,
+ 'dsInstancePswd' : 'newforsook',
+ 'dsBaseDN' : 'dc=example,dc=com' ,
+ 'dsFilter' : 'objectclass=*' ,
+ 'extraParams' : '-s base' }
+ </call>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Reset Password, Search Bind 3' % msg }
+ </call>
+
+ <call function="'SearchObject'">
+ { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
+ 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
+ 'dsInstanceDn' : 'uid=kwinters,%s' % basedn ,
+ 'dsInstancePswd' : 'newforsook',
+ '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 Grace Login
+ #@TestName Admin Resetting Password Policy Settings
+ #@TestIssue None
+ #@TestPurpose Admin Resetting Password Policy Settings
+ #@TestPreamble None
+ #@TestStep Reset expire-passwords-without-warning to false
+ #@TestStep Reset max-password-age 0s
+ #@TestStep Reset min-password-age 0s
+ #@TestStep Reset password-expiration-warning-interval 5d
+ #@TestStep Reset grace-login-count 0
+ #@TestPostamble None
+ #@TestResult Success if dsconfig returns 0
+ -->
+ <function name="pwp_grace_login_007" scope="local">
+ <testcase name="getTestCaseName('PWP Admin Reset Password Policy Settings')">
+ <sequence>
+ <try>
+ <sequence>
+
+ <call function="'testCase_Preamble'"/>
+
+ <message>
+ 'Test Name = %s' % STAXCurrentTestcase
+ </message>
+
+ <call function="'testStep'">
+ { 'stepMessage' : '%s Admin resetting password policy settings.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ options.append('--reset expire-passwords-without-warning')
+ options.append('--reset allow-expired-password-changes')
+ options.append('--reset max-password-age')
+ options.append('--reset min-password-age')
+ options.append('--reset password-expiration-warning-interval')
+ options.append('--reset grace-login-count')
+ 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 Default Password Policy.' % msg }
+ </call>
+
+ <script>
+ options=[]
+ options.append('--policy-name "Default Password Policy"')
+ 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
+
+ }
+ </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>
diff --git a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml
index ccd6a98..7fbb6e2 100644
--- a/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml
+++ b/opendj-sdk/opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml
@@ -51,8 +51,9 @@
<script>
suiteList = []
- #suiteList.append('max_pwd_age')
+ suiteList.append('max_pwd_age')
suiteList.append('force_pwd_change')
+ suiteList.append('grace_login')
</script>
<!-- Run the test suites -->
--
Gitblit v1.10.0