10139N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
10139N/A<!DOCTYPE stax SYSTEM "/shared/stax.dtd">
10139N/A<!--
12147N/A ! CDDL HEADER START
10139N/A !
10139N/A ! The contents of this file are subject to the terms of the
10139N/A ! Common Development and Distribution License, Version 1.0 only
17820N/A ! (the "License"). You may not use this file except in compliance
10139N/A ! with the License.
17177N/A !
17177N/A ! You can obtain a copy of the license at
17177N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
10139N/A ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
10139N/A ! See the License for the specific language governing permissions
10139N/A ! and limitations under the License.
10139N/A !
18365N/A ! When distributing Covered Code, include this CDDL HEADER in each
10139N/A ! file and include the License file at
10139N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
10139N/A ! add the following below this CDDL HEADER, with the fields enclosed
10139N/A ! by brackets "[]" replaced with your own identifying information:
17882N/A ! Portions Copyright [yyyy] [name of copyright owner]
10159N/A !
12094N/A ! CDDL HEADER END
12773N/A !
12773N/A ! Copyright 2007-2009 Sun Microsystems, Inc.
12773N/A ! -->
10139N/A<stax>
10139N/A <defaultcall function="plugins_uniqueness"/>
10139N/A <function name="plugins_uniqueness" scope="local">
10139N/A <block name="STAXCurrentFunction">
10139N/A <try>
10139N/A <sequence>
10139N/A <script>
10139N/A CurrentTestPath['suite']=STAXCurrentFunction
10139N/A </script>
10139N/A <call function="'testSuite_Preamble'" />
10139N/A
10139N/A <call function="'common_setup'">
10139N/A {
10139N/A 'quickStart' : True ,
10139N/A 'startServer' : True ,
10139N/A 'stopServer' : False
10139N/A }
10139N/A </call>
10139N/A
10139N/A<!--- Test Suite information
10139N/A#@TestSuiteName Plugin uniqueness
10139N/A#@TestSuitePurpose Validate the plugin uniqueness
10139N/A#@TestSuiteID Plugins
10139N/A#@TestSuiteGroup Plugins
10139N/A#@TestGroup Plugins
10139N/A#@TestScript plugins_uniqueness.xml
10139N/A#@TestHTMLLink http://opends.dev.java.net/
10139N/A-->
10139N/A
10139N/A
10139N/A<!---
10139N/A#@TestMarker Plugin uniqueness
10139N/A#@TestName Plugin uniqueness setup
10139N/A#@TestPurpose Setup
10139N/A#@TestPreamble none
10139N/A#@TestStep Create the user entries
10139N/A#@TestStep the user entries contain the attributes mail and description
12094N/A#@TestStep Enable the uniqueness plugin
12754N/A#@TestPostamble none
10159N/A#@TestResult The test is passed if the creation is done
10139N/A-->
10139N/A
10139N/A
10139N/A <testcase name="getTestCaseName('Setup')">
10139N/A <sequence>
10139N/A <call function="'testCase_Preamble'"/>
10139N/A
10139N/A <message>'###### Add an user entry ###### '</message>
10139N/A <message>' '</message>
10139N/A
10139N/A <!-- This entry is used as a reference -->
10139N/A <!-- Add an entry -->
10139N/A <script>
10139N/A listAttr = []
10139N/A listAttr.append('objectclass:top')
10139N/A listAttr.append('objectclass:organizationalperson')
10139N/A listAttr.append('objectclass:inetorgperson')
10139N/A listAttr.append('objectclass:person')
10139N/A listAttr.append('givenname:testuser_uniqueness')
10139N/A listAttr.append('sn:testuser_uniqueness')
11149N/A listAttr.append('cn:testuser_uniqueness')
12773N/A listAttr.append('mail:testuser_uniqueness@sun')
12773N/A listAttr.append('description:mydescription1')
12773N/A listAttr.append('description:mydescription2')
12773N/A listAttr.append('telephoneNumber:1 2 3 4')
12773N/A </script>
10139N/A
10139N/A <call function="'addAnEntry'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
10139N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'DNToAdd' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'listAttributes' : listAttr,
10139N/A 'expectedRC' : 0
10139N/A }
10139N/A </call>
17882N/A
10139N/A
10139N/A <call function="'SearchObject'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
10139N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'dsBaseDN' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'dsFilter' : 'objectclass=*' ,
10139N/A 'dsScope' : 'base',
10139N/A 'expectedRC' : 0 }
10139N/A </call>
12184N/A
10139N/A
10139N/A <message>'###### Activate the uniqueness plugin. ###### '</message>
10139N/A <message>' '</message>
10139N/A
10139N/A <call function="'dsconfig'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'subcommand' : 'set-plugin-prop' ,
10139N/A 'objectType' : 'plugin-name' ,
10139N/A 'objectName' : 'UID Unique Attribute',
10139N/A 'optionsString' : '--set enabled:true',
10139N/A 'expectedRC' : 0 }
10139N/A </call>
10139N/A
10139N/A <message>'###### Get the UID Unique Attributes ###### '</message>
12184N/A <call function="'dsconfig'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'subcommand' : 'get-plugin-prop' ,
10139N/A 'objectType' : 'plugin-name' ,
10139N/A 'objectName' : 'UID Unique Attribute',
10139N/A 'expectedRC' : 0 }
10139N/A </call>
18365N/A
18365N/A <call function="'testCase_Postamble'"/>
18300N/A </sequence>
18300N/A </testcase>
18236N/A
18236N/A
18140N/A
18140N/A<!---
18140N/A#@TestMarker Plugin uniqueness
17882N/A#@TestName Plugin uniqueness with the type uid
17882N/A#@TestPurpose Check the plugin uniqueness matchs against the default attribute names uid
17882N/A#@TestPreamble none
17570N/A#@TestStep Keep the default type uid
17570N/A#@TestStep Check we can't add an entry with the same uid as the user entry reference
17397N/A#@TestPostamble none
17397N/A#@TestResult The test is passed if the creation is refused
17301N/A-->
17301N/A
17142N/A <testcase name="getTestCaseName('Plugin uniqueness with the type uid')">
17142N/A <sequence>
16987N/A <call function="'testCase_Preamble'"/>
16987N/A
16906N/A <message>'###### Add an entry with an uid already present in the DIT ######'</message>
16906N/A <message>'--- The creation must be refused to ensure the uniqueness of the attributes uid '</message>
16807N/A <message>' '</message>
16807N/A
16670N/A <!-- Add an entry -->
16670N/A <!--The uid testuser_uniqueness already exist in the DIT. the Add must be refused with the error 19 -->
16670N/A
16626N/A <script>
16626N/A listAttr = []
16429N/A listAttr.append('objectclass:top')
16429N/A listAttr.append('objectclass:organizationalperson')
16379N/A listAttr.append('objectclass:inetorgperson')
16626N/A listAttr.append('objectclass:person')
16379N/A listAttr.append('givenname:testuser_uniqueness')
16337N/A listAttr.append('sn:testuser_uniqueness')
16626N/A listAttr.append('cn:testuser_uniqueness')
16626N/A </script>
16162N/A
16626N/A <call function="'addAnEntry'">
16149N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
16626N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
15881N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
16626N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
15854N/A 'DNToAdd' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
16626N/A 'listAttributes' : listAttr,
15696N/A 'expectedRC' : 19
16626N/A }
14554N/A </call>
16626N/A
14540N/A <call function="'testCase_Postamble'"/>
14540N/A </sequence>
14206N/A </testcase>
14206N/A
13945N/A
16626N/A<!---
13840N/A#@TestMarker Plugin uniqueness
13840N/A#@TestName Plugin uniqueness with the type mail
13766N/A#@TestPurpose Check the plugin uniqueness matchs against the attribute names mail
13766N/A#@TestPreamble none
13624N/A#@TestStep Change the type of the UID Unique Attribute to mail
13624N/A#@TestStep Check we can't add an entry with the same mail as the user entry reference
13426N/A#@TestPostamble none
13426N/A#@TestResult The test is passed if the creation is refused
13314N/A-->
13314N/A
13260N/A
13260N/A <testcase name="getTestCaseName('Plugin uniqueness with the type mail')">
13114N/A <sequence>
13114N/A <call function="'testCase_Preamble'"/>
12808N/A
12808N/A <message>'###### Set the type to mail ###### '</message>
12586N/A <message>' '</message>
12586N/A
12467N/A <call function="'dsconfig'">
12467N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
12363N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
12363N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
12288N/A 'subcommand' : 'set-plugin-prop' ,
12288N/A 'objectType' : 'plugin-name' ,
12184N/A 'objectName' : 'UID Unique Attribute',
12184N/A 'optionsString' : '--set type:mail',
12147N/A 'expectedRC' : 0 }
12147N/A </call>
12094N/A
12094N/A <message>'###### Get the UID Unique Attributes ###### '</message>
11989N/A <call function="'dsconfig'">
11989N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
11416N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
11416N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
11240N/A 'subcommand' : 'get-plugin-prop' ,
11240N/A 'objectType' : 'plugin-name' ,
11185N/A 'objectName' : 'UID Unique Attribute',
11185N/A 'expectedRC' : 0 }
11149N/A </call>
11149N/A
11123N/A <message>'###### Add an entry containing a mail already present in the DIT ###### '</message>
11123N/A <!-- Add an entry -->
11069N/A <!-- the Add must be refused with the error 19 -->
11069N/A <script>
10979N/A listAttr = []
10979N/A listAttr.append('objectclass:top')
10924N/A listAttr.append('objectclass:organizationalperson')
10924N/A listAttr.append('objectclass:inetorgperson')
10817N/A listAttr.append('objectclass:person')
10817N/A listAttr.append('givenname:newtestuser_uniqueness')
10642N/A listAttr.append('sn:newtestuser_uniqueness')
10642N/A listAttr.append('cn:newtestuser_uniqueness')
10601N/A listAttr.append('mail:testuser_uniqueness@sun')
10601N/A </script>
10601N/A
10454N/A
10601N/A <call function="'addAnEntry'">
10280N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
10601N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10199N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10152N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10152N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'listAttributes' : listAttr,
10139N/A 'expectedRC' : 19
10139N/A }
10139N/A </call>
10139N/A
10139N/A <call function="'testCase_Postamble'"/>
10139N/A </sequence>
10139N/A </testcase>
10139N/A
10139N/A
10139N/A
10139N/A<!---
10139N/A#@TestMarker Plugin uniqueness
10139N/A#@TestName Plugin uniqueness with several type
10139N/A#@TestPurpose Check the plugin uniqueness with several types
10139N/A#@TestPreamble none
10139N/A#@TestStep Set the type of the UID Unique Attribute to mail and telephonenumber
10139N/A#@TestStep Check we can't add an entry with the same mail as the user entry reference
10139N/A#@TestStep Check we can't add an entry with the same telephonenumber as the user entry reference
16626N/A#@TestPostamble none
10139N/A#@TestResult The test is passed if the creation is refused
10139N/A-->
10139N/A
16626N/A <testcase name="getTestCaseName('Plugin uniqueness with several type')">
10139N/A <sequence>
10139N/A <call function="'testCase_Preamble'"/>
10139N/A
10139N/A
10139N/A <message>'###### Set the type to mail and telephoneNumber ###### '</message>
10139N/A <message>' '</message>
10139N/A
10139N/A <call function="'dsconfig'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'subcommand' : 'set-plugin-prop' ,
10139N/A 'objectType' : 'plugin-name' ,
10139N/A 'objectName' : 'UID Unique Attribute',
10139N/A 'optionsString' : '--set type:mail',
10139N/A 'expectedRC' : 0 }
10139N/A </call>
10139N/A
10139N/A <call function="'dsconfig'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'subcommand' : 'set-plugin-prop' ,
10139N/A 'objectType' : 'plugin-name' ,
10139N/A 'objectName' : 'UID Unique Attribute',
10139N/A 'optionsString' : '--add type:telephoneNumber',
10139N/A 'expectedRC' : 0 }
10139N/A </call>
10139N/A
10139N/A <message>'###### Get the UID Unique Attributes ###### '</message>
10139N/A <call function="'dsconfig'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'subcommand' : 'get-plugin-prop' ,
10139N/A 'objectType' : 'plugin-name' ,
10139N/A 'objectName' : 'UID Unique Attribute',
10139N/A 'expectedRC' : 0 }
16626N/A </call>
10139N/A
10139N/A <message>'###### Add an entry containing a mail already present in the DIT ###### '</message>
10139N/A <!-- Add an entry -->
10139N/A <!-- the Add must be refused with the error 19 -->
10139N/A <script>
10139N/A listAttr = []
10139N/A listAttr.append('objectclass:top')
10139N/A listAttr.append('objectclass:organizationalperson')
10139N/A listAttr.append('objectclass:inetorgperson')
16626N/A listAttr.append('objectclass:person')
10139N/A listAttr.append('givenname:newtestuser_uniqueness')
16626N/A listAttr.append('sn:newtestuser_uniqueness')
10139N/A listAttr.append('cn:newtestuser_uniqueness')
10139N/A listAttr.append('mail:testuser_uniqueness@sun')
10139N/A </script>
10139N/A
10139N/A
16626N/A <call function="'addAnEntry'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
16626N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'listAttributes' : listAttr,
10139N/A 'expectedRC' : 19
10139N/A }
16626N/A </call>
10139N/A
16626N/A
10139N/A <message>'###### Add an entry containing a telephoneNumber already present in the DIT ###### '</message>
16626N/A <!-- Add an entry -->
10139N/A <!-- the Add must be refused with the error 19 -->
10139N/A <script>
10139N/A listAttr = []
10139N/A listAttr.append('objectclass:top')
16626N/A listAttr.append('objectclass:organizationalperson')
10139N/A listAttr.append('objectclass:inetorgperson')
16626N/A listAttr.append('objectclass:person')
10139N/A listAttr.append('givenname:newtestuser_uniqueness')
10139N/A listAttr.append('sn:newtestuser_uniqueness')
10139N/A listAttr.append('cn:newtestuser_uniqueness')
10139N/A listAttr.append('telephoneNumber:1 2 3 4')
10139N/A </script>
10139N/A
10139N/A
10139N/A <call function="'addAnEntry'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
16626N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
16626N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'listAttributes' : listAttr,
10139N/A 'expectedRC' : 19
10139N/A }
10139N/A </call>
16626N/A
10139N/A
10139N/A
16626N/A <message>'###### Add an entry containing a telephoneNumber not present in the DIT ###### '</message>
10139N/A <!-- Add an entry -->
10139N/A <!-- the Add must be accepted -->
10139N/A <script>
16626N/A listAttr = []
16626N/A listAttr.append('objectclass:top')
10139N/A listAttr.append('objectclass:organizationalperson')
16626N/A listAttr.append('objectclass:inetorgperson')
10139N/A listAttr.append('objectclass:person')
16626N/A listAttr.append('givenname:newtestuser_uniqueness')
10139N/A listAttr.append('sn:newtestuser_uniqueness')
10139N/A listAttr.append('cn:newtestuser_uniqueness')
10139N/A listAttr.append('telephoneNumber:1 2 3 4 5')
10139N/A </script>
16626N/A
10139N/A
16626N/A <call function="'addAnEntry'">
10139N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
16626N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
10139N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A 'listAttributes' : listAttr,
10139N/A 'expectedRC' : 0
10139N/A }
10139N/A </call>
10139N/A
10139N/A <!-- cleanup -->
10139N/A <message>'###### Cleanup ###### '</message>
16626N/A <message>' '</message>
16626N/A
10139N/A <call function="'DeleteEntry'">
16626N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
16626N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
10139N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
10139N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
16626N/A 'dsBaseDN' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
10139N/A }
10139N/A </call>
10139N/A
10139N/A <call function="'testCase_Postamble'"/>
16626N/A </sequence>
10139N/A </testcase>
16626N/A
10139N/A
16626N/A<!---
10139N/A#@TestMarker Plugin uniqueness
10139N/A#@TestName Plugin uniqueness with multi valued attributes
10139N/A#@TestPurpose Check the plugin ensures the uniqueness of the attributes multi valued
16626N/A#@TestPreamble none
10139N/A#@TestStep Change the type of the UID Unique Attribute to telephoneNumber
16626N/A#@TestStep Check we can't add an entry with the same telephoneNumber as the user entry reference
#@TestStep the attribute telephoneNumber is multi-valued
#@TestPostamble none
#@TestResult The test is passed if the creation is refused
-->
<testcase name="getTestCaseName('Check uniqueness of attributes mutil-valued')">
<sequence>
<call function="'testCase_Preamble'"/>
<message>'###### Set the type to telephoneNumber ###### '</message>
<message>' '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'set-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'optionsString' : '--set type:telephoneNumber',
'expectedRC' : 0 }
</call>
<message>'###### Get the UID Unique Attributes ###### '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'get-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'expectedRC' : 0 }
</call>
<message>'###### Add an entry containing a telephoneNumber already present in the DIT ###### '</message>
<!-- Add an entry -->
<!-- the Add must be refused with the error 19 -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:newtestuser_uniqueness')
listAttr.append('sn:newtestuser_uniqueness')
listAttr.append('cn:newtestuser_uniqueness')
listAttr.append('telephoneNumber:1 2 3 4')
listAttr.append('telephoneNumber:1 2 3 4 6')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 19
}
</call>
<message>'###### Add an entry containing a telephoneNumber not present in the DIT ###### '</message>
<!-- Add an entry -->
<!-- the Add must be accepted -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:newtestuser_uniqueness')
listAttr.append('sn:newtestuser_uniqueness')
listAttr.append('cn:newtestuser_uniqueness')
listAttr.append('telephoneNumber:1 2 3 4 5')
listAttr.append('telephoneNumber:1 2 3 4 6')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 0
}
</call>
<!-- cleanup -->
<message>'###### Cleanup ###### '</message>
<message>' '</message>
<call function="'DeleteEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
}
</call>
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
<!---
#@TestMarker Plugin uniqueness
#@TestName Plugin uniqueness with scope
#@TestPurpose Check the plugin uniqueness matchs the scope configured
#@TestPreamble none
#@TestStep Set the type of the UID Unique Attribute to description
#@TestStep Set the base-dn of the plugin to dc=example,dc=com
#@TestStep Check we can't add an entry under the restricted scope
#@TestStep Check we can add an entry outside the restricted scope
#@TestPostamble none
#@TestResult The test is passed is the plugin respectes the restricted scope
-->
<testcase name="getTestCaseName('Restrict the scope of the plugin')">
<sequence>
<call function="'testCase_Preamble'"/>
<message>'###### Set the base-dn to dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
<message>' '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'set-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'optionsString' : '--set type:telephoneNumber --set base-dn:dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'expectedRC' : 0 }
</call>
<message>'###### Get the UID Unique Attributes ###### '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'get-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'expectedRC' : 0 }
</call>
<message>'###### Add an entry under dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
<!-- Add an entry -->
<!-- the Add must be added -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:newtestuser_uniqueness')
listAttr.append('sn:newtestuser_uniqueness1')
listAttr.append('cn:newtestuser_uniqueness1')
listAttr.append('telephoneNumber:1 2 3 4')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=newtestuser_uniqueness1,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 0
}
</call>
<message>'###### Add an entry under dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
<message>'this operation must be rejected because of the unique attribute conflict'</message>
<!-- Add an entry -->
<!-- the Add must be refused with the error 19 -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:newtestuser_uniqueness')
listAttr.append('sn:newtestuser_uniqueness')
listAttr.append('cn:newtestuser_uniqueness')
listAttr.append('telephoneNumber:1 2 3 4')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 19
}
</call>
<message>'###### Add an entry under %s ###### ' % DIRECTORY_INSTANCE_SFX</message>
<!-- Add an entry -->
<!-- the Add must be accepted -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:newtestuser_uniqueness')
listAttr.append('sn:newtestuser_uniqueness')
listAttr.append('cn:newtestuser_uniqueness')
listAttr.append('telephoneNumber:1 2 3 4')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=newtestuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 0
}
</call>
<!-- cleanup -->
<message>'###### Cleanup ###### '</message>
<message>' '</message>
<call function="'DeleteEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'uid=newtestuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
}
</call>
<call function="'DeleteEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'uid=newtestuser_uniqueness1,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
}
</call>
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
<!---
#@TestMarker Plugin uniqueness
#@TestName Disable Plugin uniqueness
#@TestPurpose Disable the plugin uniqueness
#@TestStep Disable the plugin uniqueness
#@TestStep Keep the default configuration ( ie, type = uid )
#@TestStep Add an entry containing a uid value already present in the DIT
#@TestPostamble none
#@TestResult The test is passed if the creation is accepted
-->
<testcase name="getTestCaseName('Disabled with type defined to uid')">
<sequence>
<call function="'testCase_Preamble'"/>
<message>'###### Disable the uniqueness plugin ###### '</message>
<message>' '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'set-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'optionsString' : '--set enabled:false',
'expectedRC' : 0 }
</call>
<message>'###### Get the UID Unique Attributes ###### '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'get-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'expectedRC' : 0 }
</call>
<message>'###### Add an entry ###### '</message>
<message>'-- The creation must be accepted '</message>
<!-- Add an entry -->
<!-- The add must be accepted -->
<script>
listAttr = []
listAttr.append('objectclass:top')
listAttr.append('objectclass:organizationalperson')
listAttr.append('objectclass:inetorgperson')
listAttr.append('objectclass:person')
listAttr.append('givenname:testuser_uniqueness')
listAttr.append('sn:testuser_uniqueness')
listAttr.append('cn:testuser_uniqueness')
listAttr.append('uid:testuser_uniqueness')
</script>
<call function="'addAnEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'DNToAdd' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
'listAttributes' : listAttr,
'expectedRC' : 0
}
</call>
<!-- cleanup -->
<message>'###### Cleanup ###### '</message>
<message>' '</message>
<call function="'DeleteEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
}
</call>
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
<!---
#@TestMarker Plugin uniqueness
#@TestName Plugin uniqueness cleanup
#@TestPurpose Cleanup
#@TestPreamble none
#@TestStep delete the user entries
#@TestPostamble none
#@TestResult The test is passed if the delete are done
-->
<testcase name="getTestCaseName('Cleanup')">
<sequence>
<call function="'testCase_Preamble'"/>
<call function="'DeleteEntry'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'dsBaseDN' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
}
</call>
<message>'###### Desactivate the uniqueness plugin. ###### '</message>
<message>' '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'set-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'optionsString' : '--set enabled:false',
'expectedRC' : 0 }
</call>
<message>'###### Get the UID Unique Attributes ###### '</message>
<call function="'dsconfig'">
{ 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
'subcommand' : 'get-plugin-prop' ,
'objectType' : 'plugin-name' ,
'objectName' : 'UID Unique Attribute',
'expectedRC' : 0 }
</call>
<call function="'testCase_Postamble'"/>
</sequence>
</testcase>
</sequence>
<finally>
<sequence>
<!-- Test Suite Cleanup -->
<message>'Finally: Global Uniqueness Plugin Cleanup.'</message>
<try>
<call function="'common_cleanup'" />
<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>
</function>
</stax>