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

Christophe Sovant
24.52.2008 e55d62c49fb4a2e22f8a40c3d3521c8b64fc538c
Add tests for ldappasswordmodify utility and new checks for status utility
1 files added
4 files modified
566 ■■■■■ changed files
opends/tests/functional-tests/shared/data/clu/data/clu_start.ldif 247 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu.xml 5 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu_ldappasswordmodify_checkbehavior.xml 278 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/testcases/clu/clu_status_checkbehavior.xml 19 ●●●● patch | view | raw | blame | history
opends/tests/shared/functions/ldap.xml 17 ●●●●● patch | view | raw | blame | history
opends/tests/functional-tests/shared/data/clu/data/clu_start.ldif
@@ -20,7 +20,7 @@
#
# CDDL HEADER END
#
#      Portions Copyright 2007 Sun Microsystems, Inc.
#      Portions Copyright 2007-2008 Sun Microsystems, Inc.
#
dn: dc=com
@@ -24778,3 +24778,248 @@
postalAddress: Bree Bjorklund$00450 Fifteenth Street$Colorado Springs, CT  76102
description: This is the description for Bree Bjorklund.
dn: ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: organizationalunit
ou: ldappasswordmodify
dn: uid=user.0,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Aaccf
sn: Amar
cn: Aaccf Amar
initials: AUA
employeeNumber: 0
uid: user.0
mail: user.0@example.com
userPassword: password
telephoneNumber: +1 910 503 7751
homePhone: +1 979 402 0677
pager: +1 584 557 1358
mobile: +1 598 746 8736
street: 48346 Spring Street
l: Pittsburgh
st: WA
postalCode: 93681
postalAddress: Aaccf Amar$48346 Spring Street$Pittsburgh, WA  93681
description: This is the description for Aaccf Amar.
dn: uid=user.1,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Aaren
sn: Atp
cn: Aaren Atp
initials: AQA
employeeNumber: 1
uid: user.1
mail: user.1@example.com
userPassword: password
telephoneNumber: +1 160 269 4702
homePhone: +1 140 500 2548
pager: +1 981 560 1533
mobile: +1 686 004 4788
street: 48467 Park Street
l: Harrisonburg
st: MA
postalCode: 16209
postalAddress: Aaren Atp$48467 Park Street$Harrisonburg, MA  16209
description: This is the description for Aaren Atp.
dn: uid=user.2,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Aarika
sn: Atpco
cn: Aarika Atpco
initials: AEA
employeeNumber: 2
uid: user.2
mail: user.2@example.com
userPassword: password
telephoneNumber: +1 313 580 8643
homePhone: +1 804 753 4265
pager: +1 809 671 1444
mobile: +1 169 605 3391
street: 98989 Adams Street
l: Wilkes Barre
st: CT
postalCode: 88853
postalAddress: Aarika Atpco$98989 Adams Street$Wilkes Barre, CT  88853
description: This is the description for Aarika Atpco.
dn: uid=user.3,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Aaron
sn: Atrc
cn: Aaron Atrc
initials: AJA
employeeNumber: 3
uid: user.3
mail: user.3@example.com
userPassword: password
telephoneNumber: +1 730 200 5332
homePhone: +1 543 037 0906
pager: +1 122 228 0004
mobile: +1 150 883 5700
street: 02460 Cedar Street
l: New York
st: NJ
postalCode: 36670
postalAddress: Aaron Atrc$02460 Cedar Street$New York, NJ  36670
description: This is the description for Aaron Atrc.
dn: uid=user.4,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Aartjan
sn: Aalders
cn: Aartjan Aalders
initials: AIA
employeeNumber: 4
uid: user.4
mail: user.4@example.com
userPassword: password
telephoneNumber: +1 075 262 8381
homePhone: +1 004 973 1528
pager: +1 165 522 1677
mobile: +1 814 998 1028
street: 16387 Laurel Street
l: Joplin
st: VT
postalCode: 35249
postalAddress: Aartjan Aalders$16387 Laurel Street$Joplin, VT  35249
description: This is the description for Aartjan Aalders.
dn: uid=user.5,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Abagael
sn: Aasen
cn: Abagael Aasen
initials: AYA
employeeNumber: 5
uid: user.5
mail: user.5@example.com
userPassword: password
telephoneNumber: +1 597 207 4061
homePhone: +1 438 445 7199
pager: +1 126 880 6083
mobile: +1 800 623 8653
street: 01918 Eleventh Street
l: Portland
st: WV
postalCode: 24470
postalAddress: Abagael Aasen$01918 Eleventh Street$Portland, WV  24470
description: This is the description for Abagael Aasen.
dn: uid=user.6,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Abagail
sn: Abadines
cn: Abagail Abadines
initials: ADA
employeeNumber: 6
uid: user.6
mail: user.6@example.com
userPassword: password
telephoneNumber: +1 126 483 9756
homePhone: +1 768 687 5906
pager: +1 023 639 0068
mobile: +1 145 442 6600
street: 50995 Johnson Street
l: Indianapolis
st: MA
postalCode: 58635
postalAddress: Abagail Abadines$50995 Johnson Street$Indianapolis, MA  58635
description: This is the description for Abagail Abadines.
dn: uid=user.7,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Abahri
sn: Abazari
cn: Abahri Abazari
initials: AVA
employeeNumber: 7
uid: user.7
mail: user.7@example.com
userPassword: password
telephoneNumber: +1 657 605 0417
homePhone: +1 710 673 3832
pager: +1 968 832 7800
mobile: +1 989 204 3514
street: 90029 Laurel Street
l: Honolulu
st: ME
postalCode: 51052
postalAddress: Abahri Abazari$90029 Laurel Street$Honolulu, ME  51052
description: This is the description for Abahri Abazari.
dn: uid=user.8,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Abbas
sn: Abbatantuono
cn: Abbas Abbatantuono
initials: AJA
employeeNumber: 8
uid: user.8
mail: user.8@example.com
userPassword: password
telephoneNumber: +1 404 733 3860
homePhone: +1 803 107 8243
pager: +1 274 591 8881
mobile: +1 720 956 7009
street: 63102 Taylor Street
l: Glendive
st: FL
postalCode: 76385
postalAddress: Abbas Abbatantuono$63102 Taylor Street$Glendive, FL  76385
description: This is the description for Abbas Abbatantuono.
dn: uid=user.9,ou=ldappasswordmodify,o=clu tests,dc=example,dc=com
objectClass: top
objectClass: person
objectClass: organizationalperson
objectClass: inetorgperson
givenName: Abbe
sn: Abbate
cn: Abbe Abbate
initials: AMA
employeeNumber: 9
uid: user.9
mail: user.9@example.com
userPassword: password
telephoneNumber: +1 712 054 8412
homePhone: +1 257 002 0605
pager: +1 091 356 2843
mobile: +1 258 453 7401
street: 76410 Sixth Street
l: Lafayette
st: IA
postalCode: 06698
postalAddress: Abbe Abbate$76410 Sixth Street$Lafayette, IA  06698
description: This is the description for Abbe Abbate.
opends/tests/functional-tests/testcases/clu/clu.xml
@@ -23,7 +23,7 @@
 !
 ! CDDL HEADER END
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 !      Portions Copyright 2007-2008 Sun Microsystems, Inc.
! -->
<stax>
  
@@ -58,6 +58,7 @@
            testList.append(['.','clu_ldapdelete_checkbehavior'])
            testList.append(['.','clu_base64_checkbehavior'])
            testList.append(['.','clu_status_checkbehavior'])
            testList.append(['.','clu_ldappasswordmodify_checkbehavior'])
            testList.append(['.','clu_cleanup'])
          </script>
          
@@ -66,7 +67,7 @@
              
              <import machine="STAF_LOCAL_HOSTNAME"
                      file="'%s/testcases/clu/%s/%s.xml' % 
              (TESTS_DIR,_test[0],_test[1])"/>
                      (TESTS_DIR,_test[0],_test[1])"/>
              
              <call function="'%s' % _test[1]" />
              
opends/tests/functional-tests/testcases/clu/clu_ldappasswordmodify_checkbehavior.xml
New file
@@ -0,0 +1,278 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE stax SYSTEM "../../../shared/stax.dtd">
<!--
 ! CDDL HEADER START
 !
 ! The contents of this file are subject to the terms of the
 ! Common Development and Distribution License, Version 1.0 only
 ! (the "License").  You may not use this file except in compliance
 ! with the License.
 !
 ! You can obtain a copy of the license at
 ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
 ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
 ! See the License for the specific language governing permissions
 ! and limitations under the License.
 !
 ! When distributing Covered Code, exclude this CDDL HEADER in each
 ! file and exclude 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
 !
 !      Portions Copyright 2008 Sun Microsystems, Inc.
! -->
<stax>
  <defaultcall function="clu_ldappasswordmodify_checkbehavior"/>
  <function name="clu_ldappasswordmodify_checkbehavior">
    <sequence>
      <block name="'clu_ldappasswordmodify_checkbehavior'">
        <sequence>
          <!--- Test Suite information
            #@TestSuiteName       ldappasswordmodify check behavior tests
            #@TestSuitePurpose    Test the results of ldappasswordmodify
                                  command.
            #@TestSuiteGroup      ldappasswordmodify results options tests
            #@TestScript          clu_ldappasswordmodify_checkbehavior.xml
          -->
          <script>
            if not CurrentTestPath.has_key('group'):
              CurrentTestPath['group'] = 'clu'
            CurrentTestPath['suite'] = STAXCurrentBlock
          </script>
          <call function="'testSuite_Preamble'"/>
          <!--- Define default value for basedn -->
          <script>
            basedn = 'ou=ldappasswordmodify,o=clu tests,dc=example,dc=com'
          </script>
          <!--- Test Case information
            #@TestMarker          ldappasswordmodify check behavior tests
            #@TestName            ldappasswordmodify: user can change his
                                  own pwd
            #@TestIssue           none
            #@TestPurpose         Verify that a user can change his own
                                  password.
            #@TestPreamble        none
            #@TestStep            Check that user.0 can do an ldapsearch.
            #@TestStep            Do an ldappasswordmodify to change user
                                  password.
            #@TestStep            Check that user.0 can't do an ldapsearch with
                                  his old password.
            #@TestStep            Check that user.0 can do an ldapsearch with
                                  his new password.
            #@TestPostamble       none
            #@TestResult          Success if ldappasswordmodify returns 0.
          -->
          <testcase name="getTestCaseName
          ('ldappasswordmodify: user can change his own pwd')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'ldappasswordmodify: user can change his own pwd'
              </message>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.0,%s' % basedn ,
                'dsInstancePswd'   : 'password' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*'
                }
              </call>
              <call function="'ldapPasswordModifyWithScript'">
                {
                'dsInstanceHost'      : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsAuthzID'           : 'dn:uid=user.0,%s' % basedn ,
                'dsCurrentPassword'   : 'password' ,
                'dsNewPassword'       : 'newpassword'
                }
              </call>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.0,%s' % basedn ,
                'dsInstancePswd'   : 'password' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*' ,
                'expectedRC'       : 49
                }
              </call>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.0,%s' % basedn ,
                'dsInstancePswd'   : 'newpassword' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          ldappasswordmodify check behavior tests
            #@TestName            ldappasswordmodify: user cannot modify pwd for
                                  another user
            #@TestIssue           none
            #@TestPurpose         Verify that a user cannot modify the password
                                  for another user.
            #@TestPreamble        none
            #@TestStep            Do an ldappasswordmodify to change user
                                  password.
            #@TestPostamble       none
            #@TestResult          Success if ldappasswordmodify returns 0.
          -->
          <testcase name="getTestCaseName
          ('ldappasswordmodify: user cannot modify pwd for another user')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'ldappasswordmodify: user cannot modify pwd for another user'
              </message>
              <call function="'ldapPasswordModifyWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'dn:uid=user.0,%s' % basedn ,
                'dsInstancePswd'   : 'newpassword' ,
                'dsAuthzID'        : 'dn:uid=user.1,%s' % basedn ,
                'dsNewPassword'    : 'newpassword' ,
                'expectedRC'       : 49
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <!--- Test Case information
            #@TestMarker          ldappasswordmodify check behavior tests
            #@TestName            ldappasswordmodify: DM can modify pwd for
                                  another user
            #@TestIssue           none
            #@TestPurpose         Verify that Directory Manager can change the
                                  password of a user.
            #@TestPreamble        none
            #@TestStep            Check that user.0 can do an ldapsearch.
            #@TestStep            Do an ldappasswordmodify to change user
                                  password.
            #@TestStep            Check that user.0 can't do an ldapsearch with
                                  his old password.
            #@TestStep            Check that user.0 can do an ldapsearch with
                                  his new password.
            #@TestPostamble       none
            #@TestResult          Success if ldappasswordmodify returns 0.
          -->
          <testcase name="getTestCaseName
          ('ldappasswordmodify: DM can modify pwd for another user')">
            <sequence>
              <call function="'testCase_Preamble'"/>
              <message>
                'ldappasswordmodify: DM can modify pwd for another user'
              </message>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.1,%s' % basedn ,
                'dsInstancePswd'   : 'password' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*'
                }
              </call>
              <call function="'ldapPasswordModifyWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'   : DIRECTORY_INSTANCE_PSWD ,
                'dsAuthzID'        : 'dn:uid=user.1,%s' % basedn ,
                'dsNewPassword'    : 'newpassword'
                }
              </call>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.,%s' % basedn ,
                'dsInstancePswd'   : 'password' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*' ,
                'expectedRC'       : 49
                }
              </call>
              <call function="'ldapSearchWithScript'">
                {
                'dsInstanceHost'   : DIRECTORY_INSTANCE_HOST ,
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'     : 'uid=user.1,%s' % basedn ,
                'dsInstancePswd'   : 'newpassword' ,
                'dsTypesOnly'      : 'True' ,
                'dsBaseDN'         : basedn ,
                'dsFilter'         : 'uid=user.*'
                }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>
          <call function="'testSuite_Postamble'"/>
        </sequence>
      </block>
    </sequence>
  </function>
</stax>
opends/tests/functional-tests/testcases/clu/clu_status_checkbehavior.xml
@@ -23,7 +23,7 @@
 !
 ! CDDL HEADER END
 !
 !      Portions Copyright 2007 Sun Microsystems, Inc.
 !      Portions Copyright 2007-2008 Sun Microsystems, Inc.
 ! -->
<stax>
  
@@ -79,7 +79,7 @@
                }
              </call>
              
              <!-- STAXResult is not always a list-->
              <!-- STAXResult is not always a list-->
              <script>
                try:
                  RC,Result=STAXResult[0]
@@ -94,6 +94,21 @@
                'result'     : Result
                }
              </call>     
              <call function="'checktestString'">
                {
                'returnString'     : Result ,
                'expectedString'   : 'Administrative Users: %s' \
                % DIRECTORY_INSTANCE_DN
                }
              </call>
              <call function="'checktestString'">
                {
                'returnString'     : Result ,
                'expectedString'   : 'Server Run Status:    Started'
                }
              </call>
              
              <call function="'testCase_Postamble'"/>
              
opends/tests/shared/functions/ldap.xml
@@ -1916,6 +1916,12 @@
        </function-arg-description>
        <function-arg-property name="type" value="option"/>
      </function-arg-def>
      <function-arg-def name="dsReportAuthzID" type="optional">
        <function-arg-description>
          Use the authorization identity control
        </function-arg-description>
        <function-arg-property name="type" value="option"/>
      </function-arg-def>
      <function-arg-def name="dsFilename" type="optional">
        <function-arg-description>
          Specifies the LDIF file containing the changes to apply
@@ -2111,7 +2117,10 @@
          
        if dsContinueOnError:
          STAFCmdParamsList.append('-c')       
        if dsReportAuthzID:
          STAFCmdParamsList.append('-E')
        if dsFilename:
          STAFCmdParamsList.append('-f %s' % dsFilename) 
  
@@ -2485,6 +2494,12 @@
        </function-arg-description>
        <function-arg-property name="type" value="hostname"/>
      </function-arg-def>
      <function-arg-def name="dsSaslOption" type="optional">
        <function-arg-description>
          SASL bind options
        </function-arg-description>
        <function-arg-property name="type" value="string"/>
      </function-arg-def>
      <function-arg-def name="dsInstancePort" type="optional">
        <function-arg-description>
          Directory Server Port Number