2954N/A<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2954N/A<!DOCTYPE stax SYSTEM "/shared/stax.dtd">
2954N/A<!--
2954N/A ! CDDL HEADER START
2954N/A !
2954N/A ! The contents of this file are subject to the terms of the
2954N/A ! Common Development and Distribution License, Version 1.0 only
2954N/A ! (the "License"). You may not use this file except in compliance
2954N/A ! with the License.
2954N/A !
2954N/A ! You can obtain a copy of the license at
2954N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
2954N/A ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
2954N/A ! See the License for the specific language governing permissions
2954N/A ! and limitations under the License.
2954N/A !
2954N/A ! When distributing Covered Code, include this CDDL HEADER in each
2954N/A ! file and include the License file at
2954N/A ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
2954N/A ! add the following below this CDDL HEADER, with the fields enclosed
2954N/A ! by brackets "[]" replaced with your own identifying information:
2954N/A ! Portions Copyright [yyyy] [name of copyright owner]
2954N/A !
2954N/A ! CDDL HEADER END
2954N/A !
4495N/A ! Copyright 2007-2009 Sun Microsystems, Inc.
6184N/A ! Portions Copyright 2011-2013 Forgerock AS
2954N/A ! -->
2954N/A
2954N/A<stax>
2954N/A
2954N/A <defaultcall function="main_virtualAttributes_cos"/>
2954N/A
2954N/A <function name="main_virtualAttributes_cos">
2954N/A
2954N/A <sequence>
2954N/A
2954N/A <block name="'virtualAttributes_cos'">
4495N/A
4495N/A <try>
4495N/A
4495N/A <sequence>
2954N/A
4495N/A <script>
4495N/A if not CurrentTestPath.has_key('group'):
4495N/A CurrentTestPath['group']='virtualAttributes'
4495N/A CurrentTestPath['suite']=STAXCurrentBlock
4495N/A </script>
4495N/A
4495N/A <!-- GLOBAL VARIABLES -->
4495N/A <script>
4495N/A applicationDn='uid=my_application,dc=virtualAttributes,dc=com'
4495N/A applicationPswd='pw_my_application'
4495N/A staticGroupDn='cn=my_staticgroup,dc=virtualAttributes,dc=com'
2954N/A
4495N/A virtualAttributesDn='dc=virtualAttributes,dc=com'
4495N/A
4495N/A people1Dn='ou=people1,%s' % virtualAttributesDn
2954N/A
4495N/A user1='user_01'
4495N/A user1Dn='uid=%s,%s' % (user1,people1Dn)
4495N/A user1Pswd='pw_01'
4495N/A
4495N/A people2Dn='ou=people2,%s' % virtualAttributesDn
4495N/A
4495N/A user4='user_04'
4495N/A user4Dn='uid=%s,%s' % (user4,people2Dn)
4495N/A user4Pswd='pw_04'
4495N/A </script>
4495N/A
4495N/A
4495N/A <call function="'testSuite_Preamble'"/>
4495N/A
4495N/A
4495N/A <!--- Test Suite information
4495N/A #@TestSuiteName virtual attributes test suite
4495N/A #@TestSuitePurpose COS (user defined virtual attributes) Tests
4495N/A #@TestSuiteGroup COS (user defined virtual attributes)
4495N/A #@TestScript virtualAttributes_cos.xml
4495N/A -->
2954N/A
4495N/A <call function="'common_setup'">
2954N/A {
4495N/A 'quickStart' : False,
4495N/A 'startServer' : True,
4495N/A 'stopServer' : False,
4495N/A 'loadData' : True,
4495N/A 'ldifFile' : '%s/virtualAttributes/virtualAttributes.ldif' % remote.data
2954N/A }
4495N/A </call>
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: COS for all the DIT
4495N/A #@TestPurpose check cos defined in top on the tree
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check it is available on entry
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos for all the DIT')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr1'
4495N/A attributeName = 'manager'
4495N/A attributeValue = 'John Doe'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A myOptions = '%s %s %s %s %s' % (arg1,arg2,arg3,arg4,arg5)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ check user defined virtual attribute created \
4495N/A is listed by dsconfig'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'list-virtual-attributes',
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : cosName,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user entry which \
4495N/A should have now %s attribute' % attributeName
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return value : %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ change user defined virtual attribute value'
4495N/A </message>
4495N/A <script>
4495N/A attributeValue2 = 'Elvis'
4495N/A arg1 = '--name %s' % cosName
4495N/A arg2 = '--set value:"%s"' % attributeValue2
4495N/A myOptions = '%s %s' % (arg1,arg2)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'set-virtual-attribute-prop',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user entry which \
4495N/A should have new value for %s attribute' % attributeName
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return value : %s' % attributeValue2
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue2,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: COS for a subtree
4495N/A #@TestPurpose check cos defined in a subtree on the tree
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check it is available under the subtree
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos for a subtree')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr2'
4495N/A attributeName = 'carLicense'
4495N/A attributeValue = '1234XZ38'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % people1Dn
4495N/A myOptions = '%s %s %s %s %s' % (arg1,arg2,arg3,arg4,arg5)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ check user defined virtual attribute created \
4495N/A is listed by dsconfig'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'list-virtual-attributes',
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : cosName,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user entry which \
4495N/A should have now %s attribute (entry under the subtree %s)'\
4495N/A % (attributeName,people1Dn)
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return value : %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user entry which \
4495N/A should NOT have %s attribute (entry under the subtree %s)'\
4495N/A % (attributeName,people2Dn)
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user4Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search do not return value : %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: should be readonly attribute
4495N/A #@TestPurpose check cos attribute can not be modified by
4495N/A ldapmodify CLI
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check it is in readonly
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos should be readonly attribute')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr3'
4495N/A attributeName = 'telexNumber'
4495N/A attributeValue = '987654321'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A myOptions = '%s %s %s %s %s' % (arg1,arg2,arg3,arg4,arg5)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user entry which \
4495N/A should NOT have %s attribute (entry under the subtree %s)'\
4495N/A % (attributeName,people2Dn)
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return value %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a modify on user entry which \
4495N/A should have now %s attribute (should fail)' % attributeName
4495N/A </message>
4495N/A <call function="'ldapModifyWithScript'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsFilename' : '%s/virtualAttributes/ldif_mod.ldif' \
4495N/A % remote.data,
4495N/A 'expectedRC' : 21
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName
2954N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: enable/disable COS
4495N/A #@TestPurpose check cos enable property
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps enable/disable the cos
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos enable/disable')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr4'
4495N/A attributeName = 'carLicense'
4495N/A attributeValue = '6541RT38'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute (disabled)'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:false'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A myOptions = '%s %s %s %s %s' % (arg1,arg2,arg3,arg4,arg5)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search do not return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Enable user defined virtual attribute'
4495N/A </message>
4495N/A <script>
4495N/A myOptions = '--name %s --set enabled:true' % cosName
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'set-virtual-attribute-prop',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: virtual-overrides-real
4495N/A #@TestPurpose check cos conflict-behavior property
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check conflict-behavior=virtual-overrides-real
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos virtual-overrides-real')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr5'
4495N/A attributeName = 'description'
4495N/A attributeValue = 'new_desc_for_testcase'
4495N/A descDefaultValue = 'this is the description of'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute with \
4495N/A conflict-behavior prop set to virtual-overrides-real'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A arg6 = '--set conflict-behavior:virtual-overrides-real'
4495N/A myOptions='%s %s %s %s %s %s'%(arg1,arg2,arg3,arg4,arg5,arg6)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <script>
4495N/A ldapsearchReturn = STAXResult[0][1]
4495N/A </script>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search do not return %s' % descDefaultValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % descDefaultValue,
4495N/A 'mainString' : ldapsearchReturn,
4495N/A 'nbExpected' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search return virtualattribute %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : ldapsearchReturn,
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4286N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: real-overrides-virtual
4495N/A #@TestPurpose check cos conflict-behavior property
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check conflict-behavior=real-overrides-virtual
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos real-overrides-virtual')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr6'
4495N/A attributeName = 'description'
4495N/A attributeValue = 'new_desc_for_testcase'
4495N/A descDefaultValue = 'this is the description of'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute with \
5579N/A conflict-behavior prop set to real-overrides-virtual'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A arg6 = '--set conflict-behavior:real-overrides-virtual'
4495N/A myOptions='%s %s %s %s %s %s'%(arg1,arg2,arg3,arg4,arg5,arg6)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <script>
4495N/A ldapsearchReturn = STAXResult[0][1]
4495N/A </script>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search return %s' % descDefaultValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % descDefaultValue,
4495N/A 'mainString' : ldapsearchReturn,
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search do not return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : ldapsearchReturn,
4495N/A 'nbExpected' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
2954N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: merge-real-and-virtual
4495N/A #@TestPurpose check cos conflict-behavior property
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps check conflict-behavior=merge-real-and-virtual
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos merge-real-and-virtual')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr7'
4495N/A attributeName = 'description'
4495N/A attributeValue = 'new_desc_for_testcase'
4495N/A descDefaultValue = 'this is the description of'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute with \
5579N/A conflict-behavior prop set to merge-real-and-virtual'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A arg6 = '--set conflict-behavior:merge-real-and-virtual'
4495N/A myOptions='%s %s %s %s %s %s'%(arg1,arg2,arg3,arg4,arg5,arg6)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on user'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <script>
4495N/A ldapsearchReturn = STAXResult[0][1]
4495N/A </script>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search return %s' % descDefaultValue
4495N/A </message>
4495N/A <call function="'searchString'">
4495N/A {
4495N/A 'expectedString' : '%s' % descDefaultValue ,
6184N/A 'returnString' : ldapsearchReturn
4495N/A }
4495N/A </call>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check search return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : ldapsearchReturn,
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A
4495N/A <!--- Test Case information
4495N/A #@TestMarker virtual attributes test suite
4495N/A #@TestName virtualAttributes: filter for COS
4495N/A #@TestPurpose check cos filter property
4495N/A #@TestPreamble create a cos
4495N/A #@TestSteps filter=person should only apply the cos to
4495N/A person entries
4495N/A #@TestPostamble delete the cos
4495N/A #@TestResult
4495N/A -->
4495N/A <testcase name="getTestCaseName('cos filter')">
4495N/A <sequence>
4495N/A <call function="'testCase_Preamble'"/>
4495N/A
4495N/A <script>
4495N/A cosName = 'userDefinedVirtualAttr8'
4495N/A attributeName = 'manager'
4495N/A attributeValue = 'Al ty'
4495N/A </script>
4495N/A
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Create user defined virtual attribute (disabled)'
4495N/A </message>
4495N/A <script>
4495N/A arg1 = '--type user-defined --name %s' % cosName
4495N/A arg2 = '--set enabled:true'
4495N/A arg3 = '--set attribute-type:%s' % attributeName
4495N/A arg4 = '--set value:"%s"' % attributeValue
4495N/A arg5 = '--set base-dn:%s' % virtualAttributesDn
4495N/A arg6 = '--set filter:objectClass=person'
4495N/A myOptions = '%s %s %s %s %s %s'%(arg1,arg2,arg3,arg4,arg5,arg6)
4495N/A </script>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'create-virtual-attribute',
4495N/A 'optionsString' : myOptions,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on person entry'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : user1Dn,
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 1
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Application do a search on organization entry'
4495N/A </message>
4495N/A <call function="'ldapSearchWithScript'">
4495N/A { 'dsInstanceHost' : server.host,
4495N/A 'dsInstancePort' : server.port,
4495N/A 'dsInstanceDn' : applicationDn,
4495N/A 'dsInstancePswd' : applicationPswd,
4495N/A 'dsBaseDN' : people1Dn,
4495N/A 'dsScope' : 'base',
4495N/A 'dsFilter' : 'objectclass=*',
4495N/A 'dsAttributes' : '%s' % attributeName }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Check the search do not return %s' % attributeValue
4495N/A </message>
4495N/A <call function="'CheckMatches'">
4495N/A { 'string2find' : '%s' % attributeValue,
4495N/A 'mainString' : STAXResult[0][1],
4495N/A 'nbExpected' : 0
4495N/A }
4495N/A </call>
4495N/A <!-- ========================================= -->
4495N/A <message>
4495N/A '++++ Delete user defined virtual attribute'
4495N/A </message>
4495N/A <call function="'dsconfig'">
4495N/A {
4495N/A 'dsInstanceHost' : server.host,
4495N/A 'dsInstanceDn' : server.dn,
4495N/A 'dsInstancePswd' : server.password,
4495N/A 'subcommand' : 'delete-virtual-attribute',
4495N/A 'optionsString' : '--name %s' % cosName,
4495N/A 'expectedRC' : 0
4495N/A }
4495N/A </call>
4495N/A
4495N/A <call function="'testCase_Postamble'"/>
4495N/A </sequence>
4495N/A </testcase>
4495N/A
4495N/A <!-- *********************************************** -->
4495N/A <import machine="STAF_LOCAL_HOSTNAME"
4495N/A file="'%s/testcases/virtualAttributes/virtualAttributes_cleanup.xml'
4495N/A % (TESTS_DIR)"/>
4495N/A <call function="'virtualAttributes_cleanup'">
4495N/A { 'stopDS' : True }
4495N/A </call>
4495N/A
4495N/A </sequence>
2954N/A
4495N/A <finally>
2954N/A <sequence>
4495N/A <!-- Test Suite Cleanup -->
4495N/A <message>'Finally: Global ACI Cleanup.'</message>
4495N/A <try>
4495N/A <call function="'common_cleanup'" />
4495N/A <catch exception="'STAFException'">
4495N/A <sequence>
4495N/A <message log="1" level="'fatal'">'Cleanup of test suite failed.'</message>
4495N/A </sequence>
4495N/A </catch>
4495N/A <finally>
4495N/A <call function="'testSuite_Postamble'"/>
4495N/A </finally>
4495N/A </try>
2954N/A </sequence>
4495N/A </finally>
4495N/A
4495N/A </try>
2954N/A
2954N/A </block>
4495N/A
2954N/A </sequence>
2954N/A
2954N/A </function>
2954N/A
2954N/A</stax>