2454N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2887N/A<!DOCTYPE stax SYSTEM "/shared/stax.dtd">
2454N/A<!--
2454N/A ! CDDL HEADER START
2454N/A !
2454N/A ! The contents of this file are subject to the terms of the
2454N/A ! Common Development and Distribution License, Version 1.0 only
2454N/A ! (the "License"). You may not use this file except in compliance
2454N/A ! with the License.
2454N/A !
2454N/A ! You can obtain a copy of the license at
2454N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
2454N/A ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
2454N/A ! See the License for the specific language governing permissions
2454N/A ! and limitations under the License.
2454N/A !
2454N/A ! When distributing Covered Code, include this CDDL HEADER in each
2454N/A ! file and include the License file at
2454N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
2454N/A ! add the following below this CDDL HEADER, with the fields enclosed
2454N/A ! by brackets "[]" replaced with your own identifying information:
2454N/A ! Portions Copyright [yyyy] [name of copyright owner]
2454N/A !
2454N/A ! CDDL HEADER END
2454N/A !
4618N/A ! Copyright 2007-2009 Sun Microsystems, Inc.
2454N/A ! -->
2454N/A<stax>
2454N/A <defaultcall function="plugins_uniqueness"/>
2454N/A <function name="plugins_uniqueness" scope="local">
2454N/A <block name="STAXCurrentFunction">
4618N/A <try>
2454N/A <sequence>
2454N/A <script>
2454N/A CurrentTestPath['suite']=STAXCurrentFunction
2454N/A </script>
2454N/A <call function="'testSuite_Preamble'" />
2454N/A
4618N/A <call function="'common_setup'">
4618N/A {
4618N/A 'quickStart' : True ,
4618N/A 'startServer' : True ,
4618N/A 'stopServer' : False
4618N/A }
4618N/A </call>
3188N/A
3154N/A<!--- Test Suite information
3188N/A#@TestSuiteName Plugin uniqueness
3188N/A#@TestSuitePurpose Validate the plugin uniqueness
3188N/A#@TestSuiteID Plugins
3154N/A#@TestSuiteGroup Plugins
3154N/A#@TestGroup Plugins
3154N/A#@TestScript plugins_uniqueness.xml
3154N/A#@TestHTMLLink http://opends.dev.java.net/
3154N/A-->
3154N/A
3188N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness setup
3188N/A#@TestPurpose Setup
2454N/A#@TestPreamble none
3188N/A#@TestStep Create the user entries
3188N/A#@TestStep the user entries contain the attributes mail and description
3188N/A#@TestStep Enable the uniqueness plugin
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is done
2454N/A-->
2454N/A
2454N/A
2454N/A <testcase name="getTestCaseName('Setup')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2454N/A <message>'###### Add an user entry ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <!-- This entry is used as a reference -->
2454N/A <!-- Add an entry -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:testuser_uniqueness')
2454N/A listAttr.append('sn:testuser_uniqueness')
2454N/A listAttr.append('cn:testuser_uniqueness')
2454N/A listAttr.append('mail:testuser_uniqueness@sun')
2454N/A listAttr.append('description:mydescription1')
2454N/A listAttr.append('description:mydescription2')
2454N/A listAttr.append('telephoneNumber:1 2 3 4')
2454N/A </script>
2454N/A
2454N/A <call function="'addAnEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'DNToAdd' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
2454N/A
2454N/A
2454N/A <call function="'SearchObject'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'dsBaseDN' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'dsFilter' : 'objectclass=*' ,
2454N/A 'dsScope' : 'base',
3047N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
2454N/A
2454N/A <message>'###### Activate the uniqueness plugin. ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
3047N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
3047N/A 'optionsString' : '--set enabled:true',
2454N/A 'expectedRC' : 0 }
2454N/A </call>
3960N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
3047N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
3047N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness with the type uid
3188N/A#@TestPurpose Check the plugin uniqueness matchs against the default attribute names uid
2454N/A#@TestPreamble none
3188N/A#@TestStep Keep the default type uid
3188N/A#@TestStep Check we can't add an entry with the same uid as the user entry reference
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is refused
3188N/A-->
3188N/A
3188N/A <testcase name="getTestCaseName('Plugin uniqueness with the type uid')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
3188N/A
3188N/A <message>'###### Add an entry with an uid already present in the DIT ######'</message>
2454N/A <message>'--- The creation must be refused to ensure the uniqueness of the attributes uid '</message>
3188N/A <message>' '</message>
3188N/A
3188N/A <!-- Add an entry -->
2454N/A <!--The uid testuser_uniqueness already exist in the DIT. the Add must be refused with the error 19 -->
3188N/A
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:testuser_uniqueness')
2454N/A listAttr.append('sn:testuser_uniqueness')
2454N/A listAttr.append('cn:testuser_uniqueness')
2454N/A </script>
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'DNToAdd' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
3047N/A 'expectedRC' : 19
2454N/A }
2454N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness with the type mail
3188N/A#@TestPurpose Check the plugin uniqueness matchs against the attribute names mail
2454N/A#@TestPreamble none
3188N/A#@TestStep Change the type of the UID Unique Attribute to mail
2454N/A#@TestStep Check we can't add an entry with the same mail as the user entry reference
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is refused
2454N/A-->
2454N/A
2454N/A
3188N/A <testcase name="getTestCaseName('Plugin uniqueness with the type mail')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2624N/A <message>'###### Set the type to mail ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'dsconfig'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3047N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
2454N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
2624N/A 'optionsString' : '--set type:mail',
3047N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
2454N/A
2454N/A <message>'###### Add an entry containing a mail already present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be refused with the error 19 -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
2454N/A listAttr.append('mail:testuser_uniqueness@sun')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 19
2454N/A }
2454N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
2454N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness with several type
3188N/A#@TestPurpose Check the plugin uniqueness with several types
2454N/A#@TestPreamble none
3188N/A#@TestStep Set the type of the UID Unique Attribute to mail and telephonenumber
2454N/A#@TestStep Check we can't add an entry with the same mail as the user entry reference
2454N/A#@TestStep Check we can't add an entry with the same telephonenumber as the user entry reference
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is refused
2454N/A-->
2454N/A
3188N/A <testcase name="getTestCaseName('Plugin uniqueness with several type')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2454N/A
2624N/A <message>'###### Set the type to mail and telephoneNumber ###### '</message>
2454N/A <message>' '</message>
3960N/A
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'set-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'optionsString' : '--set type:mail',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
2454N/A
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
3047N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'optionsString' : '--add type:telephoneNumber',
2454N/A 'expectedRC' : 0 }
2454N/A </call>
3960N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
2454N/A
2454N/A <message>'###### Add an entry containing a mail already present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be refused with the error 19 -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
2454N/A listAttr.append('mail:testuser_uniqueness@sun')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 19
2454N/A }
2454N/A </call>
2454N/A
2454N/A
2454N/A <message>'###### Add an entry containing a telephoneNumber already present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be refused with the error 19 -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
2454N/A listAttr.append('telephoneNumber:1 2 3 4')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 19
2454N/A }
2454N/A </call>
2454N/A
2454N/A
2454N/A
2454N/A <message>'###### Add an entry containing a telephoneNumber not present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be accepted -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
2454N/A listAttr.append('telephoneNumber:1 2 3 4 5')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
2454N/A
2454N/A <!-- cleanup -->
2454N/A <message>'###### Cleanup ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'DeleteEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'dsBaseDN' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A }
2454N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness with multi valued attributes
3188N/A#@TestPurpose Check the plugin ensures the uniqueness of the attributes multi valued
2454N/A#@TestPreamble none
3188N/A#@TestStep Change the type of the UID Unique Attribute to telephoneNumber
3047N/A#@TestStep Check we can't add an entry with the same telephoneNumber as the user entry reference
3047N/A#@TestStep the attribute telephoneNumber is multi-valued
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is refused
2454N/A-->
2454N/A
2454N/A <testcase name="getTestCaseName('Check uniqueness of attributes mutil-valued')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2454N/A
3047N/A <message>'###### Set the type to telephoneNumber ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
3047N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
3047N/A 'optionsString' : '--set type:telephoneNumber',
2454N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
3960N/A
3047N/A <message>'###### Add an entry containing a telephoneNumber already present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be refused with the error 19 -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
3047N/A listAttr.append('telephoneNumber:1 2 3 4')
3047N/A listAttr.append('telephoneNumber:1 2 3 4 6')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 19
2454N/A }
2454N/A </call>
2454N/A
2454N/A
3047N/A <message>'###### Add an entry containing a telephoneNumber not present in the DIT ###### '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be accepted -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
3047N/A listAttr.append('telephoneNumber:1 2 3 4 5')
3047N/A listAttr.append('telephoneNumber:1 2 3 4 6')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
2454N/A
2454N/A
2454N/A <!-- cleanup -->
2454N/A <message>'###### Cleanup ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'DeleteEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'dsBaseDN' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A }
2454N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness with scope
3188N/A#@TestPurpose Check the plugin uniqueness matchs the scope configured
2454N/A#@TestPreamble none
3188N/A#@TestStep Set the type of the UID Unique Attribute to description
3188N/A#@TestStep Set the base-dn of the plugin to dc=example,dc=com
2454N/A#@TestStep Check we can't add an entry under the restricted scope
2454N/A#@TestStep Check we can add an entry outside the restricted scope
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed is the plugin respectes the restricted scope
3047N/A -->
2454N/A
2454N/A <testcase name="getTestCaseName('Restrict the scope of the plugin')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2624N/A <message>'###### Set the base-dn to dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
3047N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
3047N/A 'optionsString' : '--set type:telephoneNumber --set base-dn:dc=example,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
3960N/A
2454N/A <message>'###### Add an entry under dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
2454N/A <!-- Add an entry -->
3047N/A <!-- the Add must be added -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
3047N/A listAttr.append('sn:newtestuser_uniqueness1')
3047N/A listAttr.append('cn:newtestuser_uniqueness1')
3047N/A listAttr.append('telephoneNumber:1 2 3 4')
2454N/A </script>
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness1,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
3047N/A <message>'###### Add an entry under dc=example,%s ###### ' % DIRECTORY_INSTANCE_SFX</message>
3047N/A <message>'this operation must be rejected because of the unique attribute conflict'</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- the Add must be refused with the error 19 -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:newtestuser_uniqueness')
2454N/A listAttr.append('sn:newtestuser_uniqueness')
2454N/A listAttr.append('cn:newtestuser_uniqueness')
3047N/A listAttr.append('telephoneNumber:1 2 3 4')
3047N/A </script>
3047N/A
3047N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
3047N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
3047N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
3047N/A 'expectedRC' : 19
3047N/A }
3047N/A </call>
3047N/A
3047N/A
3047N/A <message>'###### Add an entry under %s ###### ' % DIRECTORY_INSTANCE_SFX</message>
3047N/A <!-- Add an entry -->
3047N/A <!-- the Add must be accepted -->
3047N/A <script>
3047N/A listAttr = []
3047N/A listAttr.append('objectclass:top')
3047N/A listAttr.append('objectclass:organizationalperson')
3047N/A listAttr.append('objectclass:inetorgperson')
3047N/A listAttr.append('objectclass:person')
3047N/A listAttr.append('givenname:newtestuser_uniqueness')
3047N/A listAttr.append('sn:newtestuser_uniqueness')
3047N/A listAttr.append('cn:newtestuser_uniqueness')
3047N/A listAttr.append('telephoneNumber:1 2 3 4')
2454N/A </script>
2454N/A
2454N/A
2454N/A <call function="'addAnEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'DNToAdd' : 'uid=newtestuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A 'listAttributes' : listAttr,
3047N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
2454N/A
2454N/A <!-- cleanup -->
2454N/A <message>'###### Cleanup ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'DeleteEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'dsBaseDN' : 'uid=newtestuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A }
2454N/A </call>
3047N/A <call function="'DeleteEntry'">
3047N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
3047N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
3047N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'dsBaseDN' : 'uid=newtestuser_uniqueness1,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
3047N/A }
3047N/A </call>
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
3047N/A </testcase>
3047N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Disable Plugin uniqueness
3188N/A#@TestPurpose Disable the plugin uniqueness
2454N/A#@TestStep Disable the plugin uniqueness
2624N/A#@TestStep Keep the default configuration ( ie, type = uid )
2454N/A#@TestStep Add an entry containing a uid value already present in the DIT
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the creation is accepted
2454N/A-->
2454N/A
2454N/A
2624N/A <testcase name="getTestCaseName('Disabled with type defined to uid')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2454N/A <message>'###### Disable the uniqueness plugin ###### '</message>
2454N/A <message>' '</message>
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3047N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3047N/A 'subcommand' : 'set-plugin-prop' ,
3047N/A 'objectType' : 'plugin-name' ,
3047N/A 'objectName' : 'UID Unique Attribute',
3047N/A 'optionsString' : '--set enabled:false',
2454N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
3960N/A
2454N/A <message>'###### Add an entry ###### '</message>
2454N/A <message>'-- The creation must be accepted '</message>
2454N/A <!-- Add an entry -->
2454N/A <!-- The add must be accepted -->
2454N/A <script>
2454N/A listAttr = []
2454N/A listAttr.append('objectclass:top')
2454N/A listAttr.append('objectclass:organizationalperson')
2454N/A listAttr.append('objectclass:inetorgperson')
2454N/A listAttr.append('objectclass:person')
2454N/A listAttr.append('givenname:testuser_uniqueness')
2454N/A listAttr.append('sn:testuser_uniqueness')
2454N/A listAttr.append('cn:testuser_uniqueness')
2454N/A listAttr.append('uid:testuser_uniqueness')
2454N/A </script>
3047N/A
2454N/A <call function="'addAnEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'DNToAdd' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A 'listAttributes' : listAttr,
2454N/A 'expectedRC' : 0
2454N/A }
2454N/A </call>
2454N/A
2454N/A <!-- cleanup -->
2454N/A <message>'###### Cleanup ###### '</message>
2454N/A <message>' '</message>
3047N/A
2454N/A <call function="'DeleteEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'dsBaseDN' : 'uid=testuser_uniqueness,dc=example,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A }
2454N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
3047N/A
3047N/A
2454N/A
2454N/A<!---
2454N/A#@TestMarker Plugin uniqueness
3188N/A#@TestName Plugin uniqueness cleanup
3188N/A#@TestPurpose Cleanup
2454N/A#@TestPreamble none
2454N/A#@TestStep delete the user entries
2454N/A#@TestPostamble none
2454N/A#@TestResult The test is passed if the delete are done
2454N/A-->
2454N/A
2454N/A
2454N/A <testcase name="getTestCaseName('Cleanup')">
2454N/A <sequence>
2454N/A <call function="'testCase_Preamble'"/>
2454N/A
2454N/A <call function="'DeleteEntry'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST ,
2454N/A 'dsInstancePort' : DIRECTORY_INSTANCE_PORT ,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'dsBaseDN' : 'uid=testuser_uniqueness,%s' % DIRECTORY_INSTANCE_SFX,
2454N/A }
2454N/A </call>
2454N/A
2454N/A
2454N/A <message>'###### Desactivate the uniqueness plugin. ###### '</message>
2454N/A <message>' '</message>
2454N/A
2454N/A <call function="'dsconfig'">
2454N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
2454N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
2454N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
2454N/A 'subcommand' : 'set-plugin-prop' ,
2454N/A 'objectType' : 'plugin-name' ,
2454N/A 'objectName' : 'UID Unique Attribute',
2454N/A 'optionsString' : '--set enabled:false',
2454N/A 'expectedRC' : 0 }
2454N/A </call>
2454N/A
3960N/A <message>'###### Get the UID Unique Attributes ###### '</message>
3960N/A <call function="'dsconfig'">
3960N/A { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST,
3960N/A 'dsInstanceDn' : DIRECTORY_INSTANCE_DN ,
3960N/A 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD ,
3960N/A 'subcommand' : 'get-plugin-prop' ,
3960N/A 'objectType' : 'plugin-name' ,
3960N/A 'objectName' : 'UID Unique Attribute',
3960N/A 'expectedRC' : 0 }
3960N/A </call>
2454N/A
2454N/A <call function="'testCase_Postamble'"/>
2454N/A </sequence>
2454N/A </testcase>
2454N/A
3047N/A
4618N/A
2454N/A </sequence>
4618N/A <finally>
4618N/A <sequence>
4618N/A <!-- Test Suite Cleanup -->
4618N/A <message>'Finally: Global Uniqueness Plugin Cleanup.'</message>
4618N/A <try>
4618N/A <call function="'common_cleanup'" />
4618N/A <catch exception="'STAFException'">
4618N/A <sequence>
4618N/A <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
4618N/A </sequence>
4618N/A </catch>
4618N/A <finally>
4618N/A <call function="'testSuite_Postamble'"/>
4618N/A </finally>
4618N/A </try>
4618N/A </sequence>
4618N/A </finally>
4618N/A
4618N/A </try>
4618N/A </block>
4618N/A </function>
2454N/A</stax>