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

ugaston
18.53.2009 b25da32e939089eb8108c4d7394b3f7d64232827
Improve knownIssue handling in some replication and sasl testcases
7 files modified
661 ■■■■ changed files
opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml 12 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml 55 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/replication/ldifimport/ldifimport.xml 8 ●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/replication/schema/schema.xml 22 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml 9 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/security/sasl/security_sasl_digest-md5.xml 535 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/shared/functions/tools.xml 20 ●●●●● patch | view | raw | blame | history
opends/tests/staf-tests/functional-tests/testcases/replication/changelog/changelog.xml
@@ -1315,16 +1315,21 @@
                      # => expect NO entry returned
                      # => len(searchResult) = 0 => resultLength = 0
                      myExpectedRC = 0
                      # if entry not purged => we may have run into Issue 3736
                      # (Dynamic purge delay change not taken into account)
                      myKnownIssue = '3736'
                    else:
                      # purge delay not expired (default purge delay: 1 day)
                      # => expect entry returned
                      # => len(searchResult) > 0 => resultLength = 1
                      myExpectedRC = 1
                      myKnownIssue = None
                  </script>
                  <call function="'checktestRC'">
                    { 'returncode' : resultLength ,
                      'result'     : searchResult ,
                      'expected'   : myExpectedRC
                      'expected'   : myExpectedRC,
                      'issue'      : myKnownIssue
                    }
                  </call>                                           
                               
@@ -1337,11 +1342,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call>
              <!-- #3736: Dynamic purge delay change not properly taken into
                   account -->
              <call function="'setKnownIssue'">
                { 'issueId' : '3736' }
              </call>
             
              <call function="'testCase_Postamble'"/>
            </sequence>
opends/tests/staf-tests/functional-tests/testcases/replication/encryption/encryption.xml
@@ -97,6 +97,16 @@
                  <script>
                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
                    userDn = 'uid=iabizen-%s, ou=People, %s' % (i,synchroSuffix)
                    if i == 0:
                      myKnownIssue = None
                    else:
                      # if we fail to add the entry to the 'consumer' servers
                      # => it may mean that the initialize-all is not completely
                      # done yet, and so we may have come across Issue 3315
                      # (dsreplication initialize-all returns before peer
                      # has completed initialisation)
                      myKnownIssue = '3315'
                  </script>
                    
                  <!-- Add entry to one of the other servers -->
@@ -121,7 +131,8 @@
                      'dsInstancePswd' : server.getRootPwd(),
                      'DNToAdd'        : userDn,
                      'listAttributes' : listAttr,
                      'expectedRC'     : 0
                      'expectedRC'     : 0,
                      'knownIssue'     : myKnownIssue
                    }
                  </call>
              
@@ -134,11 +145,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call> 
              <!-- #3315: dsreplication initialize-all returns before peer has
                   completed initialisation -->
              <call function="'setKnownIssue'">
                { 'issueId' : '3315' }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
@@ -169,6 +175,16 @@
                  <script>
                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
                    userDn = 'uid=iabizen-%s, ou=People, %s' % (i,synchroSuffix)
                    if i == 0:
                      myKnownIssue = None
                    else:
                      # if we fail to modify the entry in the 'consumer' servers
                      # => it may mean that the initialize-all is not completely
                      # done yet, and so we may have come across Issue 3315
                      # (dsreplication initialize-all returns before peer
                      # has completed initialisation)
                      myKnownIssue = '3315'
                  </script>
                                    
                  <!-- Modify entry on one of the servers -->
@@ -182,7 +198,8 @@
                      'DNToModify'        : userDn,
                      'attributeName'     : 'l',
                      'newAttributeValue' : 'GEC',
                      'changetype'        : 'replace'
                      'changetype'        : 'replace',
                      'knownIssue'        : myKnownIssue
                    }
                  </call>                       
                </sequence>
@@ -194,12 +211,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call> 
              <!-- #3315: dsreplication initialize-all returns before peer has
                   completed initialisation -->
              <call function="'setKnownIssue'">
                { 'issueId' : '3315' }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
          </testcase>                     
@@ -229,6 +240,16 @@
                  <script>
                    serverPath = '%s/%s' % (server.getDir(), OPENDSNAME)
                    userDn = 'uid=iabizen-%s, ou=People, %s' % (i,synchroSuffix)
                    if i == 0:
                      myKnownIssue = None
                    else:
                      # if we fail to delete the entry to the 'consumer' servers
                      # => it may mean that the initialize-all is not completely
                      # done yet, and so we may have come across Issue 3315
                      # (dsreplication initialize-all returns before peer
                      # has completed initialisation)
                      myKnownIssue = '3315'
                  </script>
                    
                  <!-- Delete entry on one of the servers -->    
@@ -239,7 +260,8 @@
                      'dsInstancePort' : server.getPort() ,
                      'dsInstanceDn'   : server.getRootDn() ,
                      'dsInstancePswd' : server.getRootPwd() ,
                      'dsBaseDN'       : userDn
                      'dsBaseDN'       : userDn,
                      'knownIssue'     : myKnownIssue
                    }
                  </call>
                </sequence>
@@ -251,11 +273,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call>
              <!-- #3315: dsreplication initialize-all returns before peer has
                   completed initialisation -->
              <call function="'setKnownIssue'">
                { 'issueId' : '3315' }
              </call>
         
              <call function="'testCase_Postamble'"/>
            </sequence>
opends/tests/staf-tests/functional-tests/testcases/replication/ldifimport/ldifimport.xml
@@ -225,13 +225,13 @@
                
              <!-- Verify the synchronization of the trees among the servers in
                the topology -->
              <!-- If the trees differ, it could be due to Issue 3122
                (Off-line import-export sequence produces no generationID) -->
              <call function="'verifyTrees'">
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
                [ clientHost, clientPath, master, consumerList, synchroSuffix,
                  '3122' ]
              </call> 
              <call function="'setKnownIssue'">
                { 'issueId' : '3122' }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
opends/tests/staf-tests/functional-tests/testcases/replication/schema/schema.xml
@@ -689,6 +689,8 @@
                                
              <!-- Try to add entry to servers; should be rejected with error 65
                (objectclass violation) -->
              <!-- If the add doesn't return 65, it may mean we came across
                issue 2355 (Manual schema objectclass delete not replicated) -->
              <iterate var="server" in="_topologyServerList">
                <call function="'addEntry'">
                  { 'location'       : clientHost,
@@ -699,7 +701,8 @@
                    'dsInstancePswd' : server.getRootPwd(),
                    'entryToBeAdded' : '%s/replication/newtestuser-0.ldif' % \
                                       clientDataDir,
                    'expectedRC'     : 65
                    'expectedRC'     : 65,
                    'knownIssue'     : '2355'
                  }
                </call>                             
              </iterate> 
@@ -716,9 +719,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call> 
              <call function="'setKnownIssue'">
                { 'issueId' : '2355' }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
@@ -792,6 +792,8 @@
                                                                                                                                
              <!-- Try to add entry to servers; should be rejected with error 65
                (objectclass violation) -->
              <!-- If the add doesn't return 65, it may mean we came across
                issue 2355 (Manual schema objectclass delete not replicated) -->
              <iterate var="server" in="_topologyServerList">
                <call function="'addEntry'">
                  { 'location'       : clientHost,
@@ -802,15 +804,20 @@
                    'dsInstancePswd' : server.getRootPwd(),
                    'entryToBeAdded' : '%s/replication/newtestuser-2.ldif' % \
                                       clientDataDir,
                    'expectedRC'     : 65
                    'expectedRC'     : 65,
                    'knownIssue'     : '2355'
                  }
                </call>                             
              </iterate> 
                       
              <!-- Verify the synchronization of the schema among the servers in
                the topology -->
              <!-- Since this testcase inherits the 99-user.ldif from the one
                before, as long as 2355 is still present, the schema files will
                differ as the second server will still have newobjectclass-0 -->
              <call function="'verifySchemas'">
                [ clientHost, clientPath, master, consumerList, '99-user.ldif' ]
                [ clientHost, clientPath, master, consumerList, '99-user.ldif',
                  '2355' ]
              </call> 
                
              <!-- Verify the synchronization of the trees among the servers in
@@ -819,9 +826,6 @@
                [ clientHost, clientPath, master, consumerList, synchroSuffix ]
              </call> 
              <call function="'setKnownIssue'">
                { 'issueId' : '2355' }
              </call>
              <call function="'testCase_Postamble'"/>
            </sequence>
opends/tests/staf-tests/functional-tests/testcases/replication/totalupdate/totalupdate.xml
@@ -345,8 +345,12 @@
              <!-- Verify the synchronization of the schema among the servers
                in the topology -->
              <!-- If the schema files differ, it could be due to Issue 2599
                (Replication adds modifiersName and modifyTimestamp to schema
                updates) -->
              <call function="'verifySchemas'">
                [ clientHost, clientPath, master, consumerList, '99-user.ldif' ]
                [ clientHost, clientPath, master, consumerList, '99-user.ldif',
                  '2599' ]
              </call> 
                                                
              <!-- Verify the synchronization of the trees among the servers in
@@ -355,9 +359,6 @@
                [ clientHost, clientPath, master, consumerList, 'o=example' ]
              </call>                
              <call function="'setKnownIssue'">
                { 'issueId' : '2599' }
              </call>
              
              <call function="'testCase_Postamble'"/>
            </sequence>
opends/tests/staf-tests/functional-tests/testcases/security/sasl/security_sasl_digest-md5.xml
@@ -908,15 +908,13 @@
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, simple authentication'
            </message>
@@ -934,15 +932,13 @@
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, delete global search ACI'
            </message>
@@ -975,15 +971,13 @@
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, simple authentication'
            </message>
@@ -994,22 +988,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, adding authmethod ACI'
            </message>
@@ -1026,7 +1019,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'add' }
                'changetype'             : 'add'
              }
            </call>
                
            <message>
@@ -1038,22 +1032,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, simple authentication'
            </message>
@@ -1064,22 +1057,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'       : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal sasl, deleting authmethod ACI'
            </message>
@@ -1092,7 +1084,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'delete' }
                  'changetype'             : 'delete'
              }
             </call>
                
             <message>
@@ -1104,7 +1097,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'add' }
                'opType'                 : 'add'
              }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -1147,22 +1141,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, simple authentication'
            </message>
@@ -1173,22 +1166,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, delete global search ACI'
            </message>
@@ -1202,7 +1194,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'remove' }
                'opType'                 : 'remove'
              }
            </call>
            
            <message>
@@ -1214,22 +1207,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, simple authentication'
            </message>
@@ -1240,22 +1232,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, adding authmethod ACI'
            </message>
@@ -1272,7 +1263,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'add' }
                'changetype'             : 'add'
              }
             </call>
                
             <message>
@@ -1284,22 +1276,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, simple authentication'
            </message>
@@ -1310,22 +1301,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equal simple, deleting authmethod ACI'
            </message>
@@ -1338,7 +1328,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'delete' }
                'changetype'             : 'delete'
              }
             </call>
                
             <message>
@@ -1350,7 +1341,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'add' }
                'opType'                 : 'add'
              }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -1393,22 +1385,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, simple authentication'
            </message>
@@ -1419,22 +1410,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, delete global search ACI'
            </message>
@@ -1448,7 +1438,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'remove' }
                'opType'                 : 'remove'
              }
            </call>
            
            <message>
@@ -1460,22 +1451,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, simple authentication'
            </message>
@@ -1486,22 +1476,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, adding authmethod ACI'
            </message>
@@ -1518,7 +1507,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'add' }
                'changetype'             : 'add'
              }
             </call>
                
             <message>
@@ -1530,22 +1520,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, simple authentication'
            </message>
@@ -1556,22 +1545,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod  not equals simple, deleting authmethod ACI'
            </message>
@@ -1584,7 +1572,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'delete' }
                'changetype'             : 'delete'
              }
             </call>
                
             <message>
@@ -1596,7 +1585,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'add' }
                'opType'                 : 'add'
              }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -1639,22 +1629,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, simple authentication'
            </message>
@@ -1665,22 +1654,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, delete global search ACI'
            </message>
@@ -1694,7 +1682,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'remove' }
                'opType'                 : 'remove'
              }
            </call>
            
            <message>
@@ -1707,22 +1696,21 @@
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w bad',
                'expectedRC'       : 49 }
                'expectedRC'       : 49
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, simple authentication'
            </message>
@@ -1734,22 +1722,21 @@
                'dsInstancePswd'   : 'bad' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*' ,
                'expectedRC'       : 49 }
                'expectedRC'       : 49
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, adding authmethod ACI'
            </message>
@@ -1766,7 +1753,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'add' }
                'changetype'             : 'add'
              }
             </call>
                
             <message>
@@ -1778,22 +1766,21 @@
                'dsInstancePort'   : DIRECTORY_INSTANCE_PORT ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg' }
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w frogleg'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, simple authentication'
            </message>
@@ -1804,22 +1791,21 @@
                'dsInstanceDn'     : 'uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com' ,
                'dsInstancePswd'   : 'frogleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  }
                'dsFilter'         : 'objectclass=*'
              }
            </call>
            <script> 
                 returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
                    { 'returnString'       : returnString ,
                      'testString'         : 'dn: uid=tmorris,ou=People' }
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
                    <tcstatus result="'fail'"/>
            </if>
            <message>
               'Security: SASL DIGEST-MD5: User (dn:) Binding With ACI with authmethod equals none, deleting authmethod ACI'
            </message>
@@ -1832,7 +1818,8 @@
                    'DNToModify'             : 'o=SASL Tests,dc=example,dc=com' ,
                    'attributeName'          : 'aci' ,
                    'newAttributeValue'      : curr_aci ,
                    'changetype'             : 'delete' }
                'changetype'             : 'delete'
              }
             </call>
                
             <message>
@@ -1844,7 +1831,8 @@
                    'dsInstanceDn'           : DIRECTORY_INSTANCE_DN ,
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'aciValue'               : global_aci ,
                    'opType'                 : 'add' }
                'opType'                 : 'add'
              }
            </call>
            
            <call function="'testCase_Postamble'"/>
@@ -3276,15 +3264,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3339,15 +3325,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3418,16 +3402,13 @@
              returnString = STAXResult[0][1]
            </script> 
    
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString ,
                'testString'   : 'dn: uid=tmorris,ou=People'
                'expectedString' : 'dn: uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3501,16 +3482,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3587,16 +3565,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3674,16 +3649,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3761,16 +3733,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3848,16 +3817,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -3934,16 +3900,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -4021,16 +3984,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -4108,19 +4068,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
              }
            </call>
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <!-- #3723: SSF bind rule: != operator not working -->
            <call function="'setKnownIssue'">
              { 'issueId' : '3723' }
            <call function="'searchString'">
              { 'returnString'   : returnString,
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0,
                'knownIssue'     : '3723'
              }
            </call>
            <call function="'testCase_Postamble'"/>
@@ -4200,19 +4154,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
              }
            </call>
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <!-- #3723: SSF bind rule: != operator not working -->
            <call function="'setKnownIssue'">
              { 'issueId' : '3723' }
            <call function="'searchString'">
              { 'returnString'   : returnString,
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1,
                'knownIssue'     : '3723'
              }
            </call>
            <call function="'testCase_Postamble'"/>
@@ -4292,19 +4240,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
              }
            </call>
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <!-- #3723: SSF bind rule: != operator not working -->
            <call function="'setKnownIssue'">
              { 'issueId' : '3723' }
            <call function="'searchString'">
              { 'returnString'   : returnString,
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1,
                'knownIssue'     : '3723'
              }
            </call>
            <call function="'testCase_Postamble'"/>
@@ -4420,16 +4362,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 1
              }
            </call>
                
            <if expr="returnCode != '1'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -4504,16 +4443,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -4626,16 +4562,13 @@
              'Search result:   %s' % returnString
            </message>
            <call function="'searchStringForSubstring'">
            <call function="'searchString'">
              { 'returnString' : returnString,
                'testString'   : 'uid=tmorris,ou=People'
                'expectedString' : 'uid=tmorris,ou=People',
                'expectedRC'     : 0
              }
            </call>
                
            <if expr="returnCode != '0'">
              <tcstatus result="'fail'"/>
            </if>
            <call function="'testCase_Postamble'"/>
            
          </sequence>
@@ -4676,7 +4609,8 @@
                    'dsInstancePswd'         : DIRECTORY_INSTANCE_PSWD ,
                    'propertyName'           : 'Default Password Policy' ,
                    'attributeName'          : 'default-password-storage-scheme' ,
                    'attributeValue'         : 'Salted SHA-1' }
                'attributeValue' : 'Salted SHA-1'
              }
            </call>
            
            <message>
@@ -4691,7 +4625,8 @@
                    'DNToModify'             : 'uid=jsprinter, ou=People, o=SASL Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'catleg' ,
                    'changetype'             : 'replace' }
                'changetype'        : 'replace'
              }
            </call>
                
            <call function="'modifyAnAttribute'">
@@ -4702,7 +4637,8 @@
                    'DNToModify'             : 'uid=jwalleye, ou=People, o=SASL Realm Tests, dc=example,dc=com' ,
                    'attributeName'          : 'userpassword' ,
                    'newAttributeValue'      : 'catleg' ,
                    'changetype'             : 'replace' }
                'changetype'        : 'replace'
              }
            </call>
            
            <message>
@@ -4714,7 +4650,8 @@
                'dsInstancePort'      : DIRECTORY_INSTANCE_PORT ,
                'dsInstanceDn'        : DIRECTORY_INSTANCE_DN ,
                'dsInstancePswd'      : DIRECTORY_INSTANCE_PSWD ,
                'entryToBeModified'   : '%s/security/sasl/admin_del_realm.ldif' % remote.data }
                'entryToBeModified' : '%s/security/sasl/admin_del_realm.ldif' % remote.data
              }
            </call>
            <message>
@@ -4728,7 +4665,8 @@
                'dsInstancePswd'   : 'catleg' ,
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-s base' }
                'extraParams'      : '-s base'
              }
            </call>
            <message>
@@ -4741,7 +4679,8 @@
                'dsBaseDN'         : 'dc=example,dc=com' ,
                'dsFilter'         : 'objectclass=*'  ,
                'extraParams'      : '-o mech=DIGEST-MD5 -o "authid=dn:uid=jwalleye,ou=People,o=SASL Realm Tests,dc=example,dc=com" -w catleg' ,
                'expectedRC'       : 49 }
                'expectedRC'       : 49
              }
            </call>
            
            <call function="'testCase_Postamble'"/>
opends/tests/staf-tests/shared/functions/tools.xml
@@ -535,6 +535,13 @@
        <function-arg-property name="type" value="DN"/>
      </function-arg-def>
      <function-arg-def name="knownIssue" type="optional" default="None">
        <function-arg-description>
          Known issue. Corresponds to an issue number.
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-list-args>
    <sequence>
      <script>
@@ -629,7 +636,8 @@
      <call function="'checktestRC'">
        { 'returncode' : myRC,
          'result'     : failingServerList,
          'expected'   : 0
          'expected'   : 0,
          'issue'      : knownIssue
        }
      </call>
      <return>[myRC, failedServers]</return>
@@ -681,6 +689,13 @@
        <function-arg-property name="type" value="filename"/>
      </function-arg-def>
      <function-arg-def name="knownIssue" type="optional" default="None">
        <function-arg-description>
          Known issue. Corresponds to an issue number.
        </function-arg-description>
        <function-arg-property name="type" value="string" />
      </function-arg-def>
    </function-list-args>
    <sequence>
      <script>
@@ -742,7 +757,8 @@
      <call function="'checktestRC'">
        { 'returncode' : myRC,
          'result'     : failingServerList ,
          'expected'   : 0
          'expected'   : 0,
          'issue'      : knownIssue
        }
      </call>
      <return>[myRC, failedServers]</return>