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

Gary Williams
08.13.2012 e14ed0ae5032b80c3ee37ca440c757723403ae25
Re-write of password policy functional tests part 1
9 files added
3 files modified
5531 ■■■■■ changed files
opends/tests/staf-tests/functional-tests/shared/data/password_policy/add_entry1.ldif 43 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/password_policy/add_entry2.ldif 43 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/password_policy/pwp_startup.ldif 2751 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change.xml 169 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change_all_users_tests.xml 456 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change_tests.xml 1515 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/max_pwd_age/pwp_max_pwd_age.xml 141 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/max_pwd_age/pwp_max_pwd_age_tests.xml 271 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml 106 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/dsconfig.xml 8 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/topology.xml 16 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/utils.xml 12 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/shared/data/password_policy/add_entry1.ldif
New file
@@ -0,0 +1,43 @@
# 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.
#
dn: uid=mcat, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Mortimer Cat
sn: Cat
givenname: Mortimer
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: mcat
mail: mcat@example.com
telephonenumber: +1 408 555 4798
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4612
userpassword: pizza
opends/tests/staf-tests/functional-tests/shared/data/password_policy/add_entry2.ldif
New file
@@ -0,0 +1,43 @@
# 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.
#
dn: uid=mdog, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Mortimer Dog
sn: Dog
givenname: Mortimer
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: mdog
mail: mdog@example.com
telephonenumber: +1 408 555 4798
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4612
userpassword: pizza
opends/tests/staf-tests/functional-tests/shared/data/password_policy/pwp_startup.ldif
New file
@@ -0,0 +1,2751 @@
# 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
#
dn: dc=com
dc: com
objectclass: top
objectclass: domain
dn:  dc=example,dc=com
dc: example
objectclass: top
objectclass: domain
dn:  o=Pwd Policy Tests, dc=example,dc=com
o: Pwd Policy Tests
objectclass: top
objectclass: organization
dn: ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
ou: password tests
objectclass: top
objectclass: organizationalunit
dn: ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
objectclass: top
objectclass: organizationalunit
ou: People
dn: uid=scarter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Sam Carter
sn: Carter
givenname: Sam
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: scarter
mail: scarter@example.com
telephonenumber: +1 408 555 4798
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4612
userpassword: sprain
dn: uid=tmorris, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Ted Morris
sn: Morris
givenname: Ted
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: tmorris
mail: tmorris@example.com
telephonenumber: +1 408 555 9187
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 4117
userpassword: irrefutable
dn: uid=kvaughan, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Kirsten Vaughan
sn: Vaughan
givenname: Kirsten
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: kvaughan
mail: kvaughan@example.com
telephonenumber: +1 408 555 5625
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 2871
userpassword: bribery
dn: uid=abergin, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Andy Bergin
sn: Bergin
givenname: Andy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Cupertino
uid: abergin
mail: abergin@example.com
telephonenumber: +1 408 555 8585
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 3472
userpassword: inflict
dn: uid=dmiller, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: David Miller
sn: Miller
givenname: David
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: dmiller
mail: dmiller@example.com
telephonenumber: +1 408 555 9423
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 4135
userpassword: gosling
dn: uid=gfarmer, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Gern Farmer
sn: Farmer
givenname: Gern
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: gfarmer
mail: gfarmer@example.com
telephonenumber: +1 408 555 6201
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1269
userpassword: ruling
dn: uid=kwinters, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Kelly Winters
sn: Winters
givenname: Kelly
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: kwinters
mail: kwinters@example.com
telephonenumber: +1 408 555 9069
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 4178
userpassword: forsook
dn: uid=trigden, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Torrey Rigden
sn: Rigden
givenname: Torrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: trigden
mail: trigden@example.com
telephonenumber: +1 408 555 9280
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 3584
userpassword: sensitive
dn: uid=cschmith, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Chris Schmith
sn: Schmith
givenname: Chris
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: cschmith
mail: cschmith@example.com
telephonenumber: +1 408 555 8011
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0416
userpassword: hypotenuse
dn: uid=jwallace, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Judy Wallace
sn: Wallace
givenname: Judy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: jwallace
mail: jwallace@example.com
telephonenumber: +1 408 555 0319
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1033
userpassword: linear
dn: uid=jwalker, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: John Walker
sn: Walker
givenname: John
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Cupertino
uid: jwalker
mail: jwalker@example.com
telephonenumber: +1 408 555 1476
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 3915
userpassword: dogleg
dn: uid=tclow, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Torrey Clow
sn: Clow
givenname: Torrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: tclow
mail: tclow@example.com
telephonenumber: +1 408 555 8825
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 4376
userpassword: cardreader
dn: uid=rdaugherty, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Robert Daugherty
sn: Daugherty
givenname: Robert
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: rdaugherty
mail: rdaugherty@example.com
telephonenumber: +1 408 555 1296
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 0194
userpassword: apples
dn: uid=jreuter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jayne Reuter
sn: Reuter
givenname: Jayne
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Cupertino
uid: jreuter
mail: jreuter@example.com
telephonenumber: +1 408 555 1122
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 2942
userpassword: destroy
dn: uid=tmason, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Torrey Mason
sn: Mason
givenname: Torrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: tmason
mail: tmason@example.com
telephonenumber: +1 408 555 1596
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 1124
userpassword: squatted
dn: uid=bhall, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Benjamin Hall
sn: Hall
givenname: Benjamin
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: bhall
mail: bhall@example.com
telephonenumber: +1 408 555 6067
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 2511
userpassword: oranges
dn: uid=btalbot, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Brad Talbot
sn: Talbot
givenname: Brad
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: btalbot
mail: btalbot@example.com
telephonenumber: +1 408 555 4992
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 3532
userpassword: trident
dn: uid=mward, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Marcus Ward
sn: Ward
givenname: Marcus
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: mward
mail: mward@example.com
telephonenumber: +1 408 555 5688
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 1707
userpassword: normal
dn: uid=bjablons, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barbara Jablonski
sn: Jablonski
givenname: Barbara
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: bjablons
mail: bjablons@example.com
telephonenumber: +1 408 555 8815
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0906
userpassword: strawberry
dn: uid=jmcFarla, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Judy McFarland
sn: McFarland
givenname: Judy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: jmcFarla
mail: jmcFarla@example.com
telephonenumber: +1 408 555 2567
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 2359
userpassword: walnut
dn: uid=llabonte, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Lee Labonte
sn: Labonte
givenname: Lee
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: llabonte
mail: llabonte@example.com
telephonenumber: +1 408 555 0957
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 2854
userpassword: sourdough
dn: uid=jcampaig, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jody Campaigne
sn: Campaigne
givenname: Jody
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: jcampaig
mail: jcampaig@example.com
telephonenumber: +1 408 555 1660
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4385
userpassword: grapevine
dn: uid=bhal2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barbara Hall
sn: Hall
givenname: Barbara
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: bhal2
mail: bhal2@example.com
telephonenumber: +1 408 555 4491
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 2758
userpassword: truths
dn: uid=alutz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Alexander Lutz
sn: Lutz
givenname: Alexander
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: alutz
mail: alutz@example.com
telephonenumber: +1 408 555 6505
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 1327
userpassword: northward
dn: uid=btalbo2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Bjorn Talbot
sn: Talbot
givenname: Bjorn
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: btalbo2
mail: btalbo2@example.com
telephonenumber: +1 408 555 4234
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 1205
userpassword: corduroy
dn: uid=achassin, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Ashley Chassin
sn: Chassin
givenname: Ashley
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: achassin
mail: achassin@example.com
telephonenumber: +1 408 555 9972
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 0466
userpassword: duopolist
dn: uid=hmiller, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Harry Miller
sn: Miller
givenname: Harry
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: hmiller
mail: hmiller@example.com
telephonenumber: +1 408 555 9804
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 4304
userpassword: hillock
dn: uid=jcampai2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jeffrey Campaigne
sn: Campaigne
givenname: Jeffrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: jcampai2
mail: jcampai2@example.com
telephonenumber: +1 408 555 7393
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 1377
userpassword: nominee
dn: uid=lulrich, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Lee Ulrich
sn: Ulrich
givenname: Lee
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: lulrich
mail: lulrich@example.com
telephonenumber: +1 408 555 8652
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 0985
userpassword: attribution
dn: uid=mlangdon, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Marcus Langdon
sn: Langdon
givenname: Marcus
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: mlangdon
mail: mlangdon@example.com
telephonenumber: +1 408 555 6249
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 4471
userpassword: threat
dn: uid=striplet, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Stephen Triplett
sn: Triplett
givenname: Stephen
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: striplet
mail: striplet@example.com
telephonenumber: +1 408 555 4519
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 3083
userpassword: compactify
dn: uid=gtriplet, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Gern Triplett
sn: Triplett
givenname: Gern
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: gtriplet
mail: gtriplet@example.com
telephonenumber: +1 408 555 2582
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 4023
userpassword: placeable
dn: uid=jfalena, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: John Falena
sn: Falena
givenname: John
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: jfalena
mail: jfalena@example.com
telephonenumber: +1 408 555 8133
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 1917
userpassword: nightly
dn: uid=speterso, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Sue Peterson
sn: Peterson
givenname: Sue
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: speterso
mail: speterso@example.com
telephonenumber: +1 408 555 3613
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 3073
userpassword: quinine
dn: uid=ejohnson, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Emanuel Johnson
sn: Johnson
givenname: Emanuel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: ejohnson
mail: ejohnson@example.com
telephonenumber: +1 408 555 3287
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 3737
userpassword: marketwise
dn: uid=prigden, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Peter Rigden
sn: Rigden
givenname: Peter
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: prigden
mail: prigden@example.com
telephonenumber: +1 408 555 5099
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1271
userpassword: epiphyseal
dn: uid=bwalker, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Brad Walker
sn: Walker
givenname: Brad
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: bwalker
mail: bwalker@example.com
telephonenumber: +1 408 555 5476
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 3529
userpassword: interruptible
dn: uid=kjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Kurt Jensen
sn: Jensen
givenname: Kurt
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: kjensen
mail: kjensen@example.com
telephonenumber: +1 408 555 6127
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 1944
userpassword: regulatory
dn: uid=mlott, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Mike Lott
sn: Lott
givenname: Mike
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: mlott
mail: mlott@example.com
telephonenumber: +1 408 555 2234
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 0498
userpassword: cognac
dn: uid=cwallace, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Cecil Wallace
sn: Wallace
givenname: Cecil
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: cwallace
mail: cwallace@example.com
telephonenumber: +1 408 555 6438
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 0349
userpassword: quintus
dn: uid=tpierce, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tobias Pierce
sn: Pierce
givenname: Tobias
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: tpierce
mail: tpierce@example.com
telephonenumber: +1 408 555 1531
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 1383
userpassword: rascal
dn: uid=rbannist, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Richard Bannister
sn: Bannister
givenname: Richard
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: rbannist
mail: rbannist@example.com
telephonenumber: +1 408 555 1833
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 0983
userpassword: demonstrate
dn: uid=bplante, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Brian Plante
sn: Plante
givenname: Brian
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: bplante
mail: bplante@example.com
telephonenumber: +1 408 555 3550
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 4654
userpassword: tangerine
dn: uid=rmills, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Randy Mills
sn: Mills
givenname: Randy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: rmills
mail: rmills@example.com
telephonenumber: +1 408 555 2072
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 3823
userpassword: condescend
dn: uid=bschneid, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Benjamin Schneider
sn: Schneider
givenname: Benjamin
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: bschneid
mail: bschneid@example.com
telephonenumber: +1 408 555 1012
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 4471
userpassword: biblical
dn: uid=skellehe, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Sue Kelleher
sn: Kelleher
givenname: Sue
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: skellehe
mail: skellehe@example.com
telephonenumber: +1 408 555 3480
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 1608
userpassword: sweltering
dn: uid=brentz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Bertram Rentz
sn: Rentz
givenname: Bertram
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: brentz
mail: brentz@example.com
telephonenumber: +1 408 555 5526
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 0617
userpassword: diachronic
dn: uid=dsmith, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Daniel Smith
sn: Smith
givenname: Daniel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: dsmith
mail: dsmith@example.com
telephonenumber: +1 408 555 9519
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 0368
userpassword: quantitative
dn: uid=scarte2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Stephen Carter
sn: Carter
givenname: Stephen
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: scarte2
mail: scarte2@example.com
telephonenumber: +1 408 555 6022
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 2013
userpassword: scooter
dn: uid=dthorud, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: David Thorud
sn: Thorud
givenname: David
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: dthorud
mail: dthorud@example.com
telephonenumber: +1 408 555 6185
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 1128
userpassword: fulcrum
dn: uid=ekohler, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Elba Kohler
sn: Kohler
givenname: Elba
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: ekohler
mail: ekohler@example.com
telephonenumber: +1 408 555 1926
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 2721
userpassword: guildhall
dn: uid=lcampbel, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Laurel Campbell
sn: Campbell
givenname: Laurel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: lcampbel
mail: lcampbel@example.com
telephonenumber: +1 408 555 2537
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 2073
userpassword: impress
dn: uid=tlabonte, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tim Labonte
sn: Labonte
givenname: Tim
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: tlabonte
mail: tlabonte@example.com
telephonenumber: +1 408 555 0058
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 1426
userpassword: express
dn: uid=slee, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Scott Lee
sn: Lee
givenname: Scott
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: slee
mail: slee@example.com
telephonenumber: +1 408 555 2335
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 1806
userpassword: revertive
dn: uid=bfree, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Bjorn Free
sn: Free
givenname: Bjorn
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: bfree
mail: bfree@example.com
telephonenumber: +1 408 555 8588
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 3307
userpassword: etiquette
dn: uid=tschneid, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Torrey Schneider
sn: Schneider
givenname: Torrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: tschneid
mail: tschneid@example.com
telephonenumber: +1 408 555 7086
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 2292
userpassword: chaperone
dn: uid=prose, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Paula Rose
sn: Rose
givenname: Paula
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: prose
mail: prose@example.com
telephonenumber: +1 408 555 9998
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 0542
userpassword: regatta
dn: uid=jhunter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Janet Hunter
sn: Hunter
givenname: Janet
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: jhunter
mail: jhunter@example.com
telephonenumber: +1 408 555 7665
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 4856
userpassword: nanometer
dn: uid=ashelton, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Alexander Shelton
sn: Shelton
givenname: Alexander
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: ashelton
mail: ashelton@example.com
telephonenumber: +1 408 555 1081
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 1987
userpassword: appointe
dn: uid=mmcinnis, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Marcus Mcinnis
sn: Mcinnis
givenname: Marcus
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: mmcinnis
mail: mmcinnis@example.com
telephonenumber: +1 408 555 9655
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 4818
userpassword: calcify
dn: uid=falbers, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Frank Albers
sn: Albers
givenname: Frank
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: falbers
mail: falbers@example.com
telephonenumber: +1 408 555 3094
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 1439
userpassword: degradation
dn: uid=mschneid, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Martin Schneider
sn: Schneider
givenname: Martin
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: mschneid
mail: mschneid@example.com
telephonenumber: +1 408 555 5017
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 3153
userpassword: motorcycle
dn: uid=pcruse, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Patricia Cruse
sn: Cruse
givenname: Patricia
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: pcruse
mail: pcruse@example.com
telephonenumber: +1 408 555 8641
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 3967
userpassword: pauper
dn: uid=tkelly, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Timothy Kelly
sn: Kelly
givenname: Timothy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
l: Santa Clara
uid: tkelly
mail: tkelly@example.com
telephonenumber: +1 408 555 4295
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 3107
userpassword: risible
dn: uid=ahel, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Andrew Hel
sn: Hel
givenname: Andrew
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: ahel
mail: ahel@example.com
telephonenumber: +1 408 555 2666
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 0572
userpassword: sarsaparilla
dn: uid=jburrell, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: James Burrell
sn: Burrell
givenname: James
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: jburrell
mail: jburrell@example.com
telephonenumber: +1 408 555 0751
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 4926
userpassword: degrease
dn: uid=smason, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Sue Mason
sn: Mason
givenname: Sue
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: smason
mail: smason@example.com
telephonenumber: +1 408 555 9780
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 4971
userpassword: sensible
dn: uid=ptyler, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Pete Tyler
sn: Tyler
givenname: Pete
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: ptyler
mail: ptyler@example.com
telephonenumber: +1 408 555 3335
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0327
userpassword: vinegar
dn: uid=calexand, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Chris Alexander
sn: Alexander
givenname: Chris
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Sunnyvale
uid: calexand
mail: calexand@example.com
telephonenumber: +1 408 555 9438
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 2884
userpassword: dauphin
dn: uid=jcruse, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jim Cruse
sn: Cruse
givenname: Jim
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: jcruse
mail: jcruse@example.com
telephonenumber: +1 408 555 9482
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 0083
userpassword: bridgework
dn: uid=kcarter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Karen Carter
sn: Carter
givenname: Karen
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: kcarter
mail: kcarter@example.com
telephonenumber: +1 408 555 4675
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 2320
userpassword: radiosonde
dn: uid=rfish, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Randy Fish
sn: Fish
givenname: Randy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: rfish
mail: rfish@example.com
telephonenumber: +1 408 555 9865
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 2317
userpassword: mailbox
dn: uid=phunt, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Philip Hunt
sn: Hunt
givenname: Philip
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: phunt
mail: phunt@example.com
telephonenumber: +1 408 555 1242
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 1183
userpassword: wastewater
dn: uid=rschneid, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Rachel Schneider
sn: Schneider
givenname: Rachel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: rschneid
mail: rschneid@example.com
telephonenumber: +1 408 555 9908
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 4183
userpassword: decorous
dn: uid=bjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barbara Jensen
cn: Babs Jensen
sn: Jensen
givenname: Barbara
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: bjensen
mail: bjensen@example.com
telephonenumber: +1 408 555 1862
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 0209
userpassword: hifalutin
dn: uid=jlange, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jim Lange
sn: Lange
givenname: Jim
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: jlange
mail: jlange@example.com
telephonenumber: +1 408 555 0488
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 3798
userpassword: chastity
dn: uid=rulrich, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Randy Ulrich
sn: Ulrich
givenname: Randy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: rulrich
mail: rulrich@example.com
telephonenumber: +1 408 555 5311
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 1282
userpassword: twinkle
dn: uid=rfrancis, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Richard Francis
sn: Francis
givenname: Richard
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: rfrancis
mail: rfrancis@example.com
telephonenumber: +1 408 555 8157
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 3482
userpassword: hacienda
dn: uid=mwhite, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Morgan White
sn: White
givenname: Morgan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: mwhite
mail: mwhite@example.com
telephonenumber: +1 408 555 9620
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 3088
userpassword: staple
dn: uid=gjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Gern Jensen
sn: Jensen
givenname: Gern
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: gjensen
mail: gjensen@example.com
telephonenumber: +1 408 555 3299
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4609
userpassword: primitive
dn: uid=awhite, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Alan White
sn: White
givenname: Alan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: awhite
mail: awhite@example.com
telephonenumber: +1 408 555 3232
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 0142
userpassword: placeholder
dn: uid=bmaddox, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barbara Maddox
sn: Maddox
givenname: Barbara
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: bmaddox
mail: bmaddox@example.com
telephonenumber: +1 408 555 7783
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 2207
userpassword: feedback
dn: uid=mtalbot, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Martin Talbot
sn: Talbot
givenname: Martin
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: mtalbot
mail: mtalbot@example.com
telephonenumber: +1 408 555 9228
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1415
userpassword: currant
dn: uid=jbrown, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Judy Brown
sn: Brown
givenname: Judy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: jbrown
mail: jbrown@example.com
telephonenumber: +1 408 555 6885
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 4224
userpassword: militiamen
dn: uid=jjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jody Jensen
sn: Jensen
givenname: Jody
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: jjensen
mail: jjensen@example.com
telephonenumber: +1 408 555 7587
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 4882
userpassword: borderland
dn: uid=mcarter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Mike Carter
sn: Carter
givenname: Mike
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: mcarter
mail: mcarter@example.com
telephonenumber: +1 408 555 1846
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 3819
userpassword: mainland
dn: uid=dakers, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: David Akers
sn: Akers
givenname: David
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: dakers
mail: dakers@example.com
telephonenumber: +1 408 555 4812
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 4944
userpassword: integument
dn: uid=sfarmer, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Scott Farmer
sn: Farmer
givenname: Scott
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: sfarmer
mail: sfarmer@example.com
telephonenumber: +1 408 555 4228
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 0019
userpassword: triumphal
dn: uid=dward, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Daniel Ward
sn: Ward
givenname: Daniel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: dward
mail: dward@example.com
telephonenumber: +1 408 555 5322
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 3927
userpassword: armload
dn: uid=tward, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tobias Ward
sn: Ward
givenname: Tobias
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: tward
mail: tward@example.com
telephonenumber: +1 408 555 7202
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 2238
userpassword: cedilla
dn: uid=pshelton, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Patricia Shelton
sn: Shelton
givenname: Patricia
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Cupertino
uid: pshelton
mail: pshelton@example.com
telephonenumber: +1 408 555 6442
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 2918
userpassword: nosedive
dn: uid=jrentz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jody Rentz
sn: Rentz
givenname: Jody
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: jrentz
mail: jrentz@example.com
telephonenumber: +1 408 555 5829
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 3025
userpassword: meander
dn: uid=plorig, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Peter Lorig
sn: Lorig
givenname: Peter
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: plorig
mail: plorig@example.com
telephonenumber: +1 408 555 0624
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 1276
userpassword: calorimeter
dn: uid=ajensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Allison Jensen
sn: Jensen
givenname: Allison
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: ajensen
mail: ajensen@example.com
telephonenumber: +1 408 555 7892
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 0784
userpassword: coltsfoot
dn: uid=kschmith, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Kelly Schmith
sn: Schmith
givenname: Kelly
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: kschmith
mail: kschmith@example.com
telephonenumber: +1 408 555 9749
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 2221
userpassword: purvey
dn: uid=pworrell, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Pete Worrell
sn: Worrell
givenname: Pete
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: pworrell
mail: pworrell@example.com
telephonenumber: +1 408 555 1637
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 2449
userpassword: solicitous
dn: uid=mreuter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Matthew Reuter
sn: Reuter
givenname: Matthew
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: mreuter
mail: mreuter@example.com
telephonenumber: +1 408 555 6879
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 1356
userpassword: oblivious
dn: uid=gtyler, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Gern Tyler
sn: Tyler
givenname: Gern
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: gtyler
mail: gtyler@example.com
telephonenumber: +1 408 555 1020
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0312
userpassword: typology
dn: uid=tschmith, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tobias Schmith
sn: Schmith
givenname: Tobias
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: tschmith
mail: tschmith@example.com
telephonenumber: +1 408 555 9626
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 4607
userpassword: compost
dn: uid=bjense2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Bjorn Jensen
sn: Jensen
givenname: Bjorn
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: bjense2
mail: bjense2@example.com
telephonenumber: +1 408 555 5655
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 4294
userpassword: mortgage
dn: uid=dswain, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Dietrich Swain
sn: Swain
givenname: Dietrich
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Sunnyvale
uid: dswain
mail: dswain@example.com
telephonenumber: +1 408 555 9222
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 4396
userpassword: freedom
dn: uid=ahall, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Andy Hall
sn: Hall
givenname: Andy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: ahall
mail: ahall@example.com
telephonenumber: +1 408 555 6169
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 3050
userpassword: slater
dn: uid=jmuffly, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jeff Muffly
sn: Muffly
givenname: Jeff
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: jmuffly
mail: jmuffly@example.com
telephonenumber: +1 408 555 5287
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 0997
userpassword: dictate
dn: uid=tjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Ted Jensen
sn: Jensen
givenname: Ted
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: tjensen
mail: tjensen@example.com
telephonenumber: +1 408 555 8622
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 4717
userpassword: ecosystem
dn: uid=ahunter, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Allison Hunter
sn: Hunter
givenname: Allison
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Sunnyvale
uid: ahunter
mail: ahunter@example.com
telephonenumber: +1 408 555 7713
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1213
userpassword: egregious
dn: uid=jgoldste, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jon Goldstein
sn: Goldstein
givenname: Jon
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: jgoldste
mail: jgoldste@example.com
telephonenumber: +1 408 555 5769
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 1454
userpassword: yellow
dn: uid=aworrell, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Alan Worrell
sn: Worrell
givenname: Alan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: aworrell
mail: aworrell@example.com
telephonenumber: +1 408 555 1591
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 3966
userpassword: gargoyle
dn: uid=wlutz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Wendy Lutz
sn: Lutz
givenname: Wendy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: wlutz
mail: wlutz@example.com
telephonenumber: +1 408 555 3358
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 4912
userpassword: bassinet
dn: uid=jlutz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Janet Lutz
sn: Lutz
givenname: Janet
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: jlutz
mail: jlutz@example.com
telephonenumber: +1 408 555 4902
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 2544
userpassword: autumn
dn: uid=dlangdon, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Dan Langdon
sn: Langdon
givenname: Dan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: dlangdon
mail: dlangdon@example.com
telephonenumber: +1 408 555 7044
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 3263
userpassword: botulin
dn: uid=aknutson, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Ashley Knutson
sn: Knutson
givenname: Ashley
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: aknutson
mail: aknutson@example.com
telephonenumber: +1 408 555 2169
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 4736
userpassword: maltose
dn: uid=kmcinnis, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Kelly Mcinnis
sn: Mcinnis
givenname: Kelly
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: kmcinnis
mail: kmcinnis@example.com
telephonenumber: +1 408 555 8596
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 4312
userpassword: stargaze
dn: uid=tcouzens, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Trent Couzens
sn: Couzens
givenname: Trent
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Sunnyvale
uid: tcouzens
mail: tcouzens@example.com
telephonenumber: +1 408 555 8401
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 3994
userpassword: tambourine
dn: uid=lstockto, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Lee Stockton
sn: Stockton
givenname: Lee
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: lstockto
mail: lstockto@example.com
telephonenumber: +1 408 555 0518
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0169
userpassword: brooklyn
dn: uid=jbourke, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jon Bourke
sn: Bourke
givenname: Jon
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Cupertino
uid: jbourke
mail: jbourke@example.com
telephonenumber: +1 408 555 8541
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 0034
userpassword: brainwash
dn: uid=dlanoway, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Dan Lanoway
sn: Lanoway
givenname: Dan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: dlanoway
mail: dlanoway@example.com
telephonenumber: +1 408 555 2017
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 3540
userpassword: manhattan
dn: uid=kcope, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Karl Cope
sn: Cope
givenname: Karl
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: kcope
mail: kcope@example.com
telephonenumber: +1 408 555 2709
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 3040
userpassword: forfeiture
dn: uid=abarnes, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Anne-Louise Barnes
sn: Barnes
givenname: Anne-Louise
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: abarnes
mail: abarnes@example.com
telephonenumber: +1 408 555 9445
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 2290
userpassword: chevron
dn: uid=rjensen, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Richard Jensen
sn: Jensen
givenname: Richard
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: rjensen
mail: rjensen@example.com
telephonenumber: +1 408 555 5957
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 2631
userpassword: disciplinarian
dn: uid=phun2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Pete Hunt
sn: Hunt
givenname: Pete
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: phun2
mail: phun2@example.com
telephonenumber: +1 408 555 0342
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 0087
userpassword: absorb
dn: uid=mvaughan, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Matthew Vaughan
sn: Vaughan
givenname: Matthew
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: mvaughan
mail: mvaughan@example.com
telephonenumber: +1 408 555 4692
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 4508
userpassword: submitted
dn: uid=jlut2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: James Lutz
sn: Lutz
givenname: James
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: jlut2
mail: jlut2@example.com
telephonenumber: +1 408 555 9689
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 3541
userpassword: shrank
dn: uid=mjablons, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Morgan Jablonski
sn: Jablonski
givenname: Morgan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: mjablons
mail: mjablons@example.com
telephonenumber: +1 408 555 0813
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 3160
userpassword: minimal
dn: uid=pchassin, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Peter Chassin
sn: Chassin
givenname: Peter
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: pchassin
mail: pchassin@example.com
telephonenumber: +1 408 555 2816
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 4524
userpassword: barbital
dn: uid=dcope, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Dan Cope
sn: Cope
givenname: Dan
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Sunnyvale
uid: dcope
mail: dcope@example.com
telephonenumber: +1 408 555 9813
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 1737
userpassword: snifter
dn: uid=jrent2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Judy Rentz
sn: Rentz
givenname: Judy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Santa Clara
uid: jrent2
mail: jrent2@example.com
telephonenumber: +1 408 555 2523
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 4405
userpassword: tachistoscope
dn: uid=tcruse, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tobias Cruse
sn: Cruse
givenname: Tobias
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: tcruse
mail: tcruse@example.com
telephonenumber: +1 408 555 5980
facsimiletelephonenumber: +1 408 555 4774
roomnumber: 4191
userpassword: flinty
dn: uid=eward, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Eric Ward
sn: Ward
givenname: Eric
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: eward
mail: eward@example.com
telephonenumber: +1 408 555 2320
facsimiletelephonenumber: +1 408 555 7472
roomnumber: 4874
userpassword: episcopal
dn: uid=ttully, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Torrey Tully
sn: Tully
givenname: Torrey
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: ttully
mail: ttully@example.com
telephonenumber: +1 408 555 2274
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 3924
userpassword: schooner
dn: uid=charvey, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Cecil Harvey
sn: Harvey
givenname: Cecil
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: charvey
mail: charvey@example.com
telephonenumber: +1 408 555 1815
facsimiletelephonenumber: +1 408 555 3825
roomnumber: 4583
userpassword: journalese
dn: uid=rfisher, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Randy Fisher
sn: Fisher
givenname: Randy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: rfisher
mail: rfisher@example.com
telephonenumber: +1 408 555 1506
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 1579
userpassword: pomegranate
dn: uid=alangdon, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Andrew Langdon
sn: Langdon
givenname: Andrew
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: alangdon
mail: alangdon@example.com
telephonenumber: +1 408 555 8289
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 2254
userpassword: muzzle
dn: uid=drose, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: David Rose
sn: Rose
givenname: David
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: drose
mail: drose@example.com
telephonenumber: +1 408 555 3963
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 4012
userpassword: gubernatorial
dn: uid=polfield, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Peter Olfield
sn: Olfield
givenname: Peter
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: polfield
mail: polfield@example.com
telephonenumber: +1 408 555 8231
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 1376
userpassword: monologue
dn: uid=awalker, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Andy Walker
sn: Walker
givenname: Andy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Cupertino
uid: awalker
mail: awalker@example.com
telephonenumber: +1 408 555 9199
facsimiletelephonenumber: +1 408 555 3372
roomnumber: 0061
userpassword: detonable
dn: uid=lrentz, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Lex Rentz
sn: Rentz
givenname: Lex
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: lrentz
mail: lrentz@example.com
telephonenumber: +1 408 555 2019
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 2203
userpassword: calcium
dn: uid=jvaughan, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jeff Vaughan
sn: Vaughan
givenname: Jeff
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: jvaughan
mail: jvaughan@example.com
telephonenumber: +1 408 555 4543
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 1734
userpassword: appoint
dn: uid=bfrancis, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barbara Francis
sn: Francis
givenname: Barbara
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Santa Clara
uid: bfrancis
mail: bfrancis@example.com
telephonenumber: +1 408 555 9111
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 3743
userpassword: holystone
dn: uid=ewalker, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Eric Walker
sn: Walker
givenname: Eric
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Payroll
ou: People
l: Cupertino
uid: ewalker
mail: ewalker@example.com
telephonenumber: +1 408 555 6387
facsimiletelephonenumber: +1 408 555 8721
roomnumber: 2295
userpassword: beguile
dn: uid=tjames, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Tobias James
sn: James
givenname: Tobias
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: tjames
mail: tjames@example.com
telephonenumber: +1 408 555 2458
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 0730
userpassword: turtle
dn: uid=brigden, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Bjorn Rigden
sn: Rigden
givenname: Bjorn
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Sunnyvale
uid: brigden
mail: brigden@example.com
telephonenumber: +1 408 555 5263
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 1643
userpassword: purple
dn: uid=ecruse, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Eric Cruse
sn: Cruse
givenname: Eric
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: ecruse
mail: ecruse@example.com
telephonenumber: +1 408 555 0648
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 4233
userpassword: platelet
dn: uid=rjense2, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Randy Jensen
sn: Jensen
givenname: Randy
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Sunnyvale
uid: rjense2
mail: rjense2@example.com
telephonenumber: +1 408 555 9045
facsimiletelephonenumber: +1 408 555 1992
roomnumber: 1984
userpassword: transpose
dn: uid=rhunt, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Richard Hunt
sn: Hunt
givenname: Richard
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Accounting
ou: People
l: Santa Clara
uid: rhunt
mail: rhunt@example.com
telephonenumber: +1 408 555 0139
facsimiletelephonenumber: +1 408 555 8473
roomnumber: 0718
userpassword: becloud
dn: uid=bparker, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Barry Parker
sn: Parker
givenname: Barry
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Sunnyvale
uid: bparker
mail: bparker@example.com
telephonenumber: +1 408 555 4647
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 1148
userpassword: lenticular
dn: uid=ealexand, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Erin Alexander
sn: Alexander
givenname: Erin
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: ealexand
mail: ealexand@example.com
telephonenumber: +1 408 555 5563
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 2434
userpassword: galactose
dn: uid=mtyler, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Matthew Tyler
sn: Tyler
givenname: Matthew
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Human Resources
ou: People
l: Cupertino
uid: mtyler
mail: mtyler@example.com
telephonenumber: +1 408 555 7907
facsimiletelephonenumber: +1 408 555 4661
roomnumber: 2701
userpassword: instantiate
dn: uid=elott, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Emanuel Lott
sn: Lott
givenname: Emanuel
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Testing
ou: People
l: Santa Clara
uid: elott
mail: elott@example.com
telephonenumber: +1 408 555 0932
facsimiletelephonenumber: +1 408 555 9751
roomnumber: 3906
userpassword: holdout
dn: uid=cnewport, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Christoph Newport
sn: Newport
givenname: Christoph
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Sunnyvale
uid: cnewport
mail: cnewport@example.com
telephonenumber: +1 408 555 0066
facsimiletelephonenumber: +1 408 555 9332
roomnumber: 0056
userpassword: expertise
dn: uid=jvedder, ou=People, ou=password tests,  o=Pwd Policy Tests, dc=example,dc=com
cn: Jeff Vedder
sn: Vedder
givenname: Jeff
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
ou: Product Development
ou: People
l: Santa Clara
uid: jvedder
mail: jvedder@example.com
telephonenumber: +1 408 555 4668
facsimiletelephonenumber: +1 408 555 0111
roomnumber: 3445
userpassword: befitting
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change.xml
New file
@@ -0,0 +1,169 @@
<?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_force_pwd_change"/>
  <function name="main_pwp_force_pwd_change" scope="local">
    <sequence>
      <block name="'main_pwp_force_pwd_change'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group'] = 'password_policy'
              CurrentTestPath['suite'] = 'force_pwd_change'
              _group=CurrentTestPath['group']
              _groupdir='%s/testcases/%s' % (TESTS_DIR,_group)
              _label = 'PWP Force Pwd Change'
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Password policy force_pwd_change test suite
            #@TestSuitePurpose    Verify password policy force_pwd_change operations
            #@TestSuiteID         force_pwd_change
            #@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('force_pwd_change/pwp_force_pwd_change_tests')
                  importList.append('force_pwd_change/pwp_force_pwd_change_all_users_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 force_pwd_change 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 = 'get-password-changed-by-required-time'
                  msg2 = 'get-seconds-until-required-change-time'
                </script>
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('pwp_force_pwd_change_001')
                  testsList.append('pwp_force_pwd_change_002')
                  testsList.append('pwp_force_pwd_change_003')
                  testsList.append('pwp_force_pwd_change_004')
                  testsList.append('pwp_force_pwd_change_005')
                  testsList.append('pwp_force_pwd_change_006')
                  testsList.append('pwp_force_pwd_change_007')
                  testsList.append('pwp_force_pwd_change_008')
                  testsList.append('pwp_force_pwd_change_009')
                  testsList.append('pwp_force_pwd_change_010')
                  testsList.append('pwp_force_pwd_change_011')
                  testsList.append('pwp_force_pwd_change_012')
                  testsList.append('pwp_force_pwd_change_013')
                  testsList.append('pwp_force_pwd_change_014')
                  testsList.append('pwp_force_pwd_change_015')
                  testsList.append('pwp_force_pwd_change_016')
                  testsList.append('pwp_force_pwd_change_017')
                  testsList.append('pwp_force_pwd_change_018')
                  testsList.append('pwp_force_pwd_change_019')
                  testsList.append('pwp_force_pwd_change_020')
                  testsList.append('pwp_force_pwd_change_021')
                  testsList.append('pwp_force_pwd_change_022')
                  testsList.append('pwp_force_pwd_change_023')
                  testsList.append('pwp_force_pwd_change_024')
                </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>
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change_all_users_tests.xml
New file
@@ -0,0 +1,456 @@
<?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>
  <!--- Test Case information
    #@TestMarker       Force PasswordChange All Users
    #@TestName         User Search With Password
    #@TestIssue        none
    #@TestPurpose      Set the Pwd Expiration Time to a past date
    #@TestPreamble     none
    #@TestStep         Step 1 - User Searching With Password
    #@TestStep         Step 2 - Admin Enabling Exp Pwd No Warning
                       set expire-passwords-without-warning to true
    #@TestStep         Step 3 - Admin Setting Pwd Time Exp
                       set require-change-by-time to 20061030183752.848Z
    #@TestPostamble    none
    #@TestResult       Success if the 3 steps are PASS
  -->
  <function name="pwp_force_pwd_change_020" scope="local">
    <testcase name="getTestCaseName('PWP Enable Force PasswordChange All Users')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=scarter,%s' % basedn ,
                'dsInstancePswd'   : 'sprain' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Enabling Expire Passwords Without Warning.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set expire-passwords-without-warning:true')
              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' : 'PWP: Admin Setting Require Change by Time.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set require-change-by-time:20061030183752.848Z')
              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>
          </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       Force PasswordChange All Users
    #@TestName         User Search With Expired Password
    #@TestIssue        none
    #@TestPurpose      User Search With Expired Password
    #@TestPreamble     none
    #@TestStep         User Search With Expired Password RC 49
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_021" scope="local">
    <testcase name="getTestCaseName('PWP User Search With Expired Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Expired Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=scarter,%s' % basedn ,
                'dsInstancePswd'   : 'sprain' ,
                '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       Force PasswordChange All Users
    #@TestName         Admin Disable Exp Pwd No Warning
    #@TestIssue        none
    #@TestPurpose      Admin Disable Exp Pwd No Warning
    #@TestPreamble     none
    #@TestStep         Admin Disabling Exp Pwd No Warning
                       set expire-passwords-without-warning to false
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_022" scope="local">
    <testcase name="getTestCaseName('PWP Admin Disable Expire Passwords Without Warning')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Disabling Expire Passwords Without Warning.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set expire-passwords-without-warning:false')
              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>
          </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       Force PasswordChange All Users
    #@TestName         User Search With Expired Password 2
    #@TestIssue        none
    #@TestPurpose      User Search With Expired Password 2
    #@TestPreamble     none
    #@TestStep         User Searching With Expired Password 2
                       SearchObject grep will expire
    #@TestPostamble    none
    #@TestResult       Success if the steps is PASS
  -->
  <function name="pwp_force_pwd_change_023" scope="local">
    <testcase name="getTestCaseName('PWP User Search With Expired Password 2')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Expired Password 2.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=scarter,%s' % basedn ,
                'dsInstancePswd'   : 'sprain' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <script>
             returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
                { 'returnString'       : returnString ,
                  'expectedString'     : 'will expire' }
            </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       Force PasswordChange All Users
    #@TestName         Admin Reset Pwd Time Exp
    #@TestIssue        none
    #@TestPurpose      Admin Reset Pwd Time Exp
    #@TestPreamble     none
    #@TestStep         Admin Resetting Pwd Time Exp
                       remove require-change-by-time 20061030183752.848Z
    #@TestStep         User Searching With Password SearchObject returns 0
    #@TestStep         check manage-account
                       get-password-changed-by-required-time
    #@TestStep         Check manage-account
                       get-seconds-until-required-change-time
    #@TestPostamble    none
    #@TestResult       Success if the 4 steps are PASS
  -->
  <function name="pwp_force_pwd_change_024" scope="local">
    <testcase name="getTestCaseName('PWP Require Change by Time')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Resetting Require Change by Time.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set require-change-by-time:20061030183752.848Z')
              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' : 'PWP: Get Require Change by Time.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "require-change-by-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'          : 'get-password-policy-prop',
                'optionsString'       : dsconfigOptions,
                'expectedString'      : 'require-change-by-time : 20061030183752.848Z'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=scarter,%s' % basedn ,
                'dsInstancePswd'   : 'sprain' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Check manage-account %s' % msg1 }
            </call>
            <call function="'manageAccountWithScript'">
               { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                 'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                 'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                 'subcommand'       : 'get-password-changed-by-required-time' ,
                 'targetDn'         : 'uid=scarter,%s' % basedn  }
            </call>
            <script>
               returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
               { 'returnString'       : returnString ,
                 'expectedString'     : 'Password Changed by Required Time:' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'Check manage-account %s' % msg2 }
            </call>
            <call function="'manageAccountWithScript'">
               { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                 'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                 'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                 'subcommand'       : 'get-seconds-until-required-change-time' ,
                 'targetDn'         : 'uid=scarter,%s' % basedn  }
            </call>
            <script>
               returnString = STAXResult[0][1]
            </script>
            <call function="'checktestString'">
               { 'returnString'       : returnString ,
                 'expectedString'     : 'Seconds Until Required Change 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>
</stax>
opends/tests/staf-tests/functional-tests/testcases/password_policy/force_pwd_change/pwp_force_pwd_change_tests.xml
New file
@@ -0,0 +1,1515 @@
<?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>
  <!--- Test Case information
    #@TestMarker         Force Password Change
    #@TestName           Force Change On Add
    #@TestIssue          none
    #@TestPurpose        Force Change On Add
    #@TestPreamble       none
    #@TestStep           Step 1. Get Force Change On Add
    #@TestStep           Step 2. Get Force Change on Add Attribute
    #@TestStep           Step 3. Set Force Change On Add to True
    #@TestPostamble      none
    #@TestResult         Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_001" scope="local">
    <testcase name="getTestCaseName('PWP Enable Force Change On Add')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Force Change On Add.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-add"')
              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'      : 'force-change-on-add : false'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Force Change on Add Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'    : 'ds-cfg-force-change-on-add:false',
                'entryToBeCompared'   : basepwp }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Set Force Change On Add to True.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set force-change-on-add:true')
              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' : 'PWP: Get Force Change On Add.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-add"')
              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'      : 'force-change-on-add : true'
              }
            </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        Force Password Change
    #@TestName          Add Single New User
    #@TestIssue         none
    #@TestPurpose       Add Single New User
    #@TestPreamble      none
    #@TestStep          add_entry1.ldif
    #@TestStep          User Searching With Password SearchObject RC 19
    #@TestPostamble     none
    #@TestResult        Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_002" scope="local">
    <testcase name="getTestCaseName('PWP Add Single New User')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Add Single New User.' }
            </call>
            <call function="'addEntry'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'entryToBeAdded'   : '%s/password_policy/add_entry1.ldif' \
                                     % remote.data }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mcat,%s' % basedn ,
                'dsInstancePswd'   : 'pizza' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base',
                'expectedRC'       : 19 }
            </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        Force Password Change
    #@TestName          Added User changes password
    #@TestIssue         none
    #@TestPurpose       Added User changes password
    #@TestPreamble      none
    #@TestStep          User Change Password
    #@TestStep          User Searching With Password SearchObject RC 0
    #@TestPostamble     none
    #@TestResult        Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_003" scope="local">
    <testcase name="getTestCaseName('PWP Added User Change Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Added User Change Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mcat,%s' % basedn ,
                    'dsInstancePswd'         : 'pizza' ,
                    'dsAuthzID'              : 'dn:uid=mcat,%s' % basedn ,
                    'dsNewPassword'          : 'newpizza' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mcat,%s' % basedn ,
                'dsInstancePswd'   : 'newpizza' ,
                '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        Force Password Change
    #@TestName          Admin Disable Force Change On Add
    #@TestIssue         none
    #@TestPurpose       Admin Disable Force Change On Add
    #@TestPreamble      none
    #@TestStep          Step 1. Set Force Change On Add to False.
    #@TestStep          Step 2. Get Force Change On Add
    #@TestStep          Step 3. Adding Single New User add_entry2.ldif
    #@TestStep          Step 4. User Searching With Password RC 0
    #@TestPostamble     none
    #@TestResult        Success if the 3 steps are PASS
  -->
  <function name="pwp_force_pwd_change_004" scope="local">
    <testcase name="getTestCaseName('PWP Disable Force Change On Add')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Set Force Change On Add to True.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set force-change-on-add:false')
              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' : 'PWP: Get Force Change On Add.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-add"')
              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'      : 'force-change-on-add : false'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Adding Single New User.' }
            </call>
            <call function="'addEntry'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'entryToBeAdded'   : '%s/password_policy/add_entry2.ldif' \
                                     % remote.data }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'pizza' ,
                '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       Force Password Change
    #@TestName         Force Change On Reset
    #@TestIssue        none
    #@TestPurpose      Force Change On Reset
    #@TestPreamble     none
    #@TestStep         Step 1. Get Force Change On Reset
    #@TestStep         Step 2. Admin Enabling Force Change On Reset
                       Change ds-cfg-force-change-on-reset to true
    #@TestPostamble    none
    #@TestResult       Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_005" scope="local">
    <testcase name="getTestCaseName('PWP Force Change On Reset')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Force Change On Reset.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-reset"')
              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'      : 'force-change-on-reset : false'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Force Change on Add Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'    : 'ds-cfg-force-change-on-reset:false',
                'entryToBeCompared'   : basepwp }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Set Force Change On Add to True.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set force-change-on-reset:true')
              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' : 'PWP: Get Force Change On Reset.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-reset"')
              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'      : 'force-change-on-reset : true'
              }
            </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       Force Password Change
    #@TestName         Admin Reset User Password
    #@TestIssue        none
    #@TestPurpose      Admin Reset User Password
    #@TestPreamble     none
    #@TestStep         Admin Resetting User Password
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_006" scope="local">
    <testcase name="getTestCaseName('PWP Admin Reset User Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Reset User Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'adminpizza' }
            </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       Force Password Change
    #@TestName         User Search With Old Password
    #@TestIssue        none
    #@TestPurpose      User Search With Old Password
    #@TestPreamble     none
    #@TestStep         User Search With Old Password : SearchObject returns 49
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_007" scope="local">
    <testcase name="getTestCaseName('PWP User Searching With Old Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Old Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'pizza' ,
                '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       Force Password Change
    #@TestName         User Add With Old Password
    #@TestIssue        none
    #@TestPurpose      User Add With Old Password
    #@TestPreamble     none
    #@TestStep         User Adding Attr With Old Password RC 49
    #@TestStep         Checking User-added Attribute Exists RC 16
    #@TestPostamble    none
    #@TestResult       Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_008" scope="local">
    <testcase name="getTestCaseName('PWP User Adding Attr With Old Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Adding Attr With Old Password.' }
            </call>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mdog,%s' % basedn ,
                    'dsInstancePswd'         : 'pizza' ,
                    'DNToModify'             : 'uid=mdog,%s' % basedn ,
                    'attributeName'          : 'pager' ,
                    'newAttributeValue'      : '+1 999 555 1212' ,
                    'changetype'             : 'add'  ,
                    'expectedRC'             : 49 }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Checking For Existence of User-added Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'    : 'pager:+1 999 555-1212',
                'entryToBeCompared'   : 'uid=mdog,%s' % basedn ,
                'expectedRC'          : 16 }
            </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       Force Password Change
    #@TestName         User Delete With Old Password
    #@TestIssue        none
    #@TestPurpose      User Delete With Old Password
    #@TestPreamble     none
    #@TestStep         User Deleting Attr With Old Password RC 49
    #@TestStep         Checking For Existence of User-deleted Attribute
    #@TestPostamble    none
    #@TestResult       Success if the 2 step are PASS
  -->
  <function name="pwp_force_pwd_change_009" scope="local">
    <testcase name="getTestCaseName('PWP User Deleting Attr With Old Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Deleting Attr With Old Password.' }
            </call>
            <call function="'modifyAnAttribute'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mdog,%s' % basedn ,
                    'dsInstancePswd'         : 'pizza' ,
                    'DNToModify'             : 'uid=mdog,%s' % basedn ,
                    'attributeName'          : 'roomnumber' ,
                    'changetype'             : 'delete' ,
                    'expectedRC'             : 49  }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Checking For Existence of User-deleted Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'    : 'roomnumber:4612',
                'entryToBeCompared'   : 'uid=mdog,%s' % basedn , }
            </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       Force Password Change
    #@TestName         Old Password - Compare
    #@TestIssue        none
    #@TestPurpose      Old Password - Compare
    #@TestPreamble     none
    #@TestStep         Checking For Existence of User Attribute RC 49
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_010" scope="local">
    <testcase name="getTestCaseName('PWP Old Password - Compare')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Checking For Existence of User Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'      : 'pizza' ,
                'attrToBeCompared'    : 'l:Sunnyvale',
                'entryToBeCompared'   : 'uid=mdog,%s' % basedn ,
                '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       Force Password Change
    #@TestName         User Search With Assigned Password
    #@TestIssue        none
    #@TestPurpose      User Search With Assigned Password
    #@TestPreamble     none
    #@TestStep         User Searching With Assigned Password RC 19
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_011" scope="local">
    <testcase name="getTestCaseName('PWP Search With Assigned Password')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Assigned Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'adminpizza' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base',
                'expectedRC'       : 19 }
            </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       Force Password Change
    #@TestName         User Change Password
    #@TestIssue        none
    #@TestPurpose      User Change Password
    #@TestPreamble     none
    #@TestStep         User Changing Password after reset
    #@TestStep         User Searching With Assigned Password RC 49
    #@TestStep         User Searching With New Password SearchObject RC 0
    #@TestPostamble    none
    #@TestResult       Success if the 3 steps are PASS
  -->
  <function name="pwp_force_pwd_change_012" scope="local">
    <testcase name="getTestCaseName('PWP User Change Password After Reset')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Changing Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mdog,%s' % basedn ,
                    'dsInstancePswd'         : 'adminpizza' ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'newpizza' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Assigned Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'adminpizza' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' ,
                'expectedRC'       : 49 }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With New Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'newpizza' ,
                '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       Force Password Change
    #@TestName         Admin Enable Maximum Reset Age - Long Reset Time
    #@TestIssue        none
    #@TestPurpose      Admin Enable Maximum Reset Age - Long Reset Time
    #@TestPreamble     none
    #@TestStep         Admin Enabling Maximum Reset Age - Long Reset Time
                       set max-password-reset-age to 30 m
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_013" scope="local">
    <testcase name="getTestCaseName('PWP Admin Enable Max Reset Age Long')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Enabling Maximum Reset Age Long.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set max-password-reset-age:30m')
              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' : 'PWP: Get Max Password Reset Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-reset-age"')
              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'      : 'max-password-reset-age : 30 m'
              }
            </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       Force Password Change
    #@TestName         Admin Change User Password - Long Reset Time
    #@TestIssue        none
    #@TestPurpose      Admin Change User Password - Long Reset Time
    #@TestPreamble     none
    #@TestStep         Admin Changing User Password
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_014" scope="local">
    <testcase name="getTestCaseName('PWP Admin Reset User Password - Long Reset Time')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Changing User Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'adminlongpizza' }
            </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       Force Password Change
    #@TestName         User Change Password - Long Reset Time
    #@TestIssue        none
    #@TestPurpose      User Changing Password - Long Reset Time
    #@TestPreamble     none
    #@TestStep         User Changing Password - Long Reset Time
    #@TestStep         User Searching With Password RC 0
    #@TestPostamble    none
    #@TestResult       Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_015" scope="local">
    <testcase name="getTestCaseName('PWP User Change Password - Long Reset Time')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Changing Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mdog,%s' % basedn ,
                    'dsInstancePswd'         : 'adminlongpizza' ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'newlongpizza' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'newlongpizza' ,
                '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       Force Password Change
    #@TestName         Admin Enable Maxmimum Reset Age - Short Reset Time
    #@TestIssue        none
    #@TestPurpose      Admin Enable Maxmimum Reset Age - Short Reset Time
    #@TestPreamble     none
    #@TestStep         Admin Enable Maxmimum Reset Age Short Reset Time
                       set max-password-reset-age to 8 s
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_016" scope="local">
    <testcase name="getTestCaseName('PWP Admin Enable Max Reset Age Short')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Enabling Maximum Reset Age Short.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set max-password-reset-age:8s')
              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' : 'PWP: Get Max Password Reset Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-reset-age"')
              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'      : 'max-password-reset-age : 8 s'
              }
            </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       Force Password Change
    #@TestName         Admin Change User Password - Short Reset Time
    #@TestIssue        none
    #@TestPurpose      Admin Changing User Password -Short Reset Time
    #@TestPreamble     none
    #@TestStep         Admin Changing User Password
    #@TestPostamble    none
    #@TestResult       Success if the step is PASS
  -->
  <function name="pwp_force_pwd_change_017" scope="local">
    <testcase name="getTestCaseName('PWP Admin Reset User Password - Short Reset Time')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Changing User Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'adminshortpizza' }
            </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       Force Password Change
    #@TestName         User Change Password -Short Reset Time
    #@TestIssue        none
    #@TestPurpose      User Change Password -Short Reset Time
    #@TestPreamble     none
    #@TestStep         User Change Password sleep 12000
    #@TestStep         User Changing Password ldapPasswordModifyWithScript
                        returns 49
    #@TestStep         User Searching With Password SearchObject return 49
    #@TestPostamble    none
    #@TestResult       Success if the 3 steps are PASS
  -->
  <function name="pwp_force_pwd_change_018" scope="local">
    <testcase name="getTestCaseName('PWP User Change Password - Short Reset Time')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Change Password - Short Reset Time - Sleeping.' }
            </call>
            <call function="'Sleep'">
              { 'sleepForMilliSeconds' : '12000' }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Changing Password.' }
            </call>
            <call function="'ldapPasswordModifyWithScript'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstancePort'         : DIRECTORY_INSTANCE_PORT ,
                    'dsInstanceDn'           : 'uid=mdog,%s' % basedn ,
                    'dsInstancePswd'         : 'adminpizza' ,
                    'dsAuthzID'              : 'dn:uid=mdog,%s' % basedn ,
                    'dsNewPassword'          : 'newshortpizza' ,
                    'expectedRC'             : 49  }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: User Searching With Password.' }
            </call>
            <call function="'SearchObject'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=mdog,%s' % basedn ,
                'dsInstancePswd'   : 'newshortpizza' ,
                '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       Force Password Change
    #@TestName         Admin Disable Force Change On Reset
    #@TestIssue        none
    #@TestPurpose      Admin Disable Force Change On Reset
    #@TestPreamble     none
    #@TestStep         Step 1. Admin Disabling Max Password Age
                       set max-password-reset-age to 0 s
    #@TestStep         Step 2. Admin Disabling Force Password On Reset
                       set force-change-on-reset to false
    #@TestPostamble    none
    #@TestResult       Success if the 2 steps are PASS
  -->
  <function name="pwp_force_pwd_change_019" scope="local">
    <testcase name="getTestCaseName('PWP Disable Force Change On Reset')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Disabling Max Password Reset Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set max-password-reset-age:0s')
              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' : 'PWP: Get Max Password Reset Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-reset-age"')
              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'      : 'max-password-reset-age : 0 s'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Disabling Force Change On Reset.' }
            </call>
            <call function="'modifyPwdPolicy'">
                  { 'dsInstanceHost'         : DIRECTORY_INSTANCE_HOST ,
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'force-change-on-reset' ,
                    'attributeValue'         : 'false' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set force-change-on-reset:false')
              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' : 'PWP: Get Force Change on Reset.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "force-change-on-reset"')
              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'      : 'force-change-on-reset : false'
              }
            </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>
opends/tests/staf-tests/functional-tests/testcases/password_policy/max_pwd_age/pwp_max_pwd_age.xml
New file
@@ -0,0 +1,141 @@
<?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_max_pwd_age"/>
  <function name="main_pwp_max_pwd_age" scope="local">
    <sequence>
      <block name="'main_pwp_max_pwd_age'">
        <try>
          <sequence>
            <script>
              CurrentTestPath['group'] = 'password_policy'
              CurrentTestPath['suite'] = 'max_pwd_age'
              _group=CurrentTestPath['group']
              _groupdir='%s/testcases/%s' % (TESTS_DIR,_group)
              _label = 'PWP Max Password Age'
            </script>
            <!--- Test Suite information
            #@TestSuiteName       Password policy max_pwd_age test suite
            #@TestSuitePurpose    Verify password policy max_pwd_age operations
            #@TestSuiteID         max_pwd_age
            #@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('max_pwd_age/pwp_max_pwd_age_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 max_pwd_age password policy tests -->
                <!-- List of Test Cases -->
                <script>
                  testsList=[]
                  testsList.append('pwp_max_pwd_age_001')
                  testsList.append('pwp_max_pwd_age_002')
                  testsList.append('pwp_max_pwd_age_003')
                </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>
opends/tests/staf-tests/functional-tests/testcases/password_policy/max_pwd_age/pwp_max_pwd_age_tests.xml
New file
@@ -0,0 +1,271 @@
<?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>
  <!--- Test Case information
    #@TestMarker          TODO
    #@TestName            Get Max Password Age Property
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="pwp_max_pwd_age_001" scope="local">
    <testcase name="getTestCaseName('PWP Get Max Password Age Property')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Max Password Age Property.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-age"')
              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'      : 'max-password-age : 0 s'
              }
            </call>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Get Max Password Age Attribute.' }
            </call>
            <call function="'compareEntry'">
              { 'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'attrToBeCompared'   : 'ds-cfg-max-password-age:0 seconds',
                'entryToBeCompared'  : 'cn=Default Password Policy,cn=Password Policies,cn=config' }
            </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          TODO
    #@TestName            Admin Change Max Password Age
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="pwp_max_pwd_age_002" scope="local">
    <testcase name="getTestCaseName('PWP Admin Change Max Password Age')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Set Max Password Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--set max-password-age:10d')
              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' : 'PWP: Get Max Password Age Property.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-age"')
              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'      : 'max-password-age : 1 w 3 d'
              }
            </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          TODO
    #@TestName            Admin Reset Max Password Age
    #@TestIssue           none
    #@TestPurpose         TODO.
    #@TestPreamble        none
    #@TestStep            TODO.
    #@TestPostamble       none
    #@TestResult          TODO.
  -->
  <function name="pwp_max_pwd_age_003" scope="local">
    <testcase name="getTestCaseName('PWP Admin Reset Max Password Age')">
      <sequence>
        <try>
          <sequence>
            <call function="'testCase_Preamble'"/>
            <message>
               'Test Name = %s' % STAXCurrentTestcase
            </message>
            <call function="'testStep'">
              { 'stepMessage' : 'PWP: Admin Resetting Max Password Age.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--reset max-password-age')
              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' : 'PWP: Get Max Password Age Property.' }
            </call>
            <script>
              options=[]
              options.append('--policy-name "Default Password Policy"')
              options.append('--property "max-password-age"')
              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'      : 'max-password-age : 0 s'
              }
            </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>
opends/tests/staf-tests/functional-tests/testcases/password_policy/password_policy.xml
New file
@@ -0,0 +1,106 @@
<?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_password_policy" />
  <function name="main_password_policy">
    <function-list-args>
      <function-required-arg name="STAXParentID"/>
    </function-list-args>
    <sequence>
      <try>
        <block name="'password_policy'">
          <sequence>
            <!--- Load the job environment for the test group execution -->
            <import machine="STAF_LOCAL_HOSTNAME"
                    file="'%s/environment.xml' % TESTS_FUNCTIONS_DIR" />
            <call function="'loadJobEnvironment'">
                 { 'parent' : STAXParentID }
            </call>
            <script>
              CurrentTestPath['group']='password_policy'
              _group=CurrentTestPath['group']
            </script>
            <call function="'testGroup_Preamble'" />
            <script>
              suiteList = []
              #suiteList.append('max_pwd_age')
              suiteList.append('force_pwd_change')
            </script>
            <!-- Run the test suites -->
            <iterate  var="_suite" in="suiteList">
              <sequence>
                <try>
                  <sequence>
                    <!-- SNMP Test Suites -->
                    <import machine="STAF_LOCAL_HOSTNAME"
                      file="'%s/testcases/%s/%s/pwp_%s.xml' % (TESTS_DIR,_group,_suite,_suite)"/>
                    <call function="'main_pwp_%s' % (_suite)" />
                  </sequence>
                <catch exception="'STAFException.TestSuite.SetupException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Setup of test suite %s failed.' % _suite</message>
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.MainException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Main part of test suite %s failed.' % _suite</message>
                  </sequence>
                </catch>
                <catch exception="'STAFException.TestSuite.CleanupException'">
                  <sequence>
                    <message log="1" level="'fatal'">'Cleanup of test suite %s failed.' % _suite</message>
                  </sequence>
                </catch>
                </try>
              </sequence>
            </iterate>
          </sequence>
        </block>
        <catch exception="'STAXException.TestGroupException'">
          <sequence>
            <message log="1" level="'fatal'">'Execution of Test Group Failed'</message>
          </sequence>
        </catch>
        <finally>
          <sequence>
            <!-- Test Group Postamble -->
            <call function="'testGroup_Postamble'"/>
          </sequence>
        </finally>
      </try>
    </sequence>
  </function>
</stax>
opends/tests/staf-tests/shared/functions/dsconfig.xml
@@ -475,6 +475,13 @@
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="expectedString" type="optional" default="None">
        <function-arg-description>
          Expected return string value.
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
      <function-arg-def name="knownIssue" type="optional" default="None">
        <function-arg-description>
          Known issue. Corresponds to an issue number.
@@ -509,6 +516,7 @@
          'command'   : STAFCmd,
          'arguments' : STAFCmdParams,
          'expectedRC': expectedRC,
          'expectedString'  : expectedString,
          'knownIssue': knownIssue
        }
      </call>
opends/tests/staf-tests/shared/functions/topology.xml
@@ -2109,13 +2109,19 @@
        </function-arg-description>
        <function-arg-property name="type" value="structure"/>
      </function-arg-def>
     <function-arg-def name="friendlyName" type="optional" default="'Common'">
        <function-arg-description>
          Friendly name for the common setup launcher
        </function-arg-description>
        <function-arg-property name="type" value="structure"/>
      </function-arg-def>
    </function-map-args>
    <sequence>
      <block name="'common-setup'">
        <testcase name="getTestCaseName('Common Setup')">
        <testcase name="getTestCaseName('%s Setup' % friendlyName)">
          <try>      
        
@@ -2334,12 +2340,18 @@
        </function-arg-description>
        <function-arg-property name="type" value="boolean"/>
     </function-arg-def>
     <function-arg-def name="friendlyName" type="optional" default="'Common'">
        <function-arg-description>
          Friendly name for the common cleanup launcher
        </function-arg-description>
        <function-arg-property name="type" value="structure"/>
      </function-arg-def>
   </function-map-args>
    <sequence>
      <block name="'common-cleanup'">
        <testcase name="getTestCaseName('Common Cleanup')">
        <testcase name="getTestCaseName('%s Cleanup' % friendlyName)">
          <try>
          
opends/tests/staf-tests/shared/functions/utils.xml
@@ -1937,6 +1937,11 @@
          Wildcard 'noCheck' to not check the RC
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="expectedString" type="optional" default="None">
        <function-arg-description>
          Expected return string value.
        </function-arg-description>
      </function-arg-def>
      <function-arg-def name="knownIssue" type="optional" default="None">
        <function-arg-description>
          Known issue. Corresponds to an issue number.
@@ -2066,6 +2071,13 @@
              }
            </call>
          </if>
          <if expr="expectedString">
            <call function="'checktestString'">
                { 'returnString'    : cmdOutput ,
                  'expectedString'  : expectedString }
            </call>
          </if>
        </sequence>
      </timer>