'###### Add user entries ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'DNToAdd' : 'cn=%s,%s' % (username,DIRECTORY_INSTANCE_SFX), 'listAttributes' : listAttr, 'expectedRC' : 0 } '###### Add a static Group under dc=group ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'DNToAdd' : 'dc=groups,%s' % DIRECTORY_INSTANCE_SFX, 'listAttributes' : listAttr, 'expectedRC' : 0 } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'DNToAdd' : 'cn=child_staticgroup,dc=groups,%s' % DIRECTORY_INSTANCE_SFX, 'listAttributes' : listAttr, 'expectedRC' : 0 } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'DNToAdd' : 'cn=top_staticgroup,%s' % DIRECTORY_INSTANCE_SFX, 'listAttributes' : listAttr, 'expectedRC' : 0 } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=top_staticgroup,%s' % DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniqueMember', 'expectedRC' : 0 } { 'returnString' : returnString , 'testString' : 'uniqueMember', 'expectedResult' : '1' } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=child_staticgroup,dc=groups,%s' % DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniqueMember', 'expectedRC' : 0 } { 'returnString' : returnString , 'testString' : 'uniqueMember', 'expectedResult' : '1' } '###### Activate the referential integrity plugin. ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--set enabled:true', 'expectedRC' : 0 } '###### Set the base-dn to dc=groups,%s ###### ' % DIRECTORY_INSTANCE_SFX ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--set base-dn:dc=groups,%s' % DIRECTORY_INSTANCE_SFX, 'expectedRC' : 0 } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT, 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD, 'objectName' : 'plugin', 'propertyType' : 'plugin', 'propertyName' : 'Referential Integrity', 'attributeName' : 'base-dn' } '###### Delete an user entry###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=user06,%s' % (DIRECTORY_INSTANCE_SFX), } 'The reference check must be limited to the scope dc=groups,dc=com' ' ' 'The reference check must be done to the base DN dc=groups,dc=com' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=child_staticgroup,dc=groups,%s' % DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'The references to the delete user must be removed' { 'returnString' : returnString , 'testString' : 'user06', 'expectedResult' : '0' } 'The reference check must not be done to the base DN dc=com' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=top_staticgroup,%s' % DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'The references to the delete user must be still present ' { 'returnString' : returnString , 'testString' : 'user06', 'expectedResult' : '1' } '###### Reset the base-dn ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--reset base-dn', 'expectedRC' : 0 } '###### Delete an user entry###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=user01,%s' % (DIRECTORY_INSTANCE_SFX), } { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'references to the delete user must be gone ' { 'returnString' : returnString , 'testString' : 'user01', 'expectedResult' : '0' } 'references to an existing user must be still present' { 'returnString' : returnString , 'testString' : 'user02', 'expectedResult' : '1' } '###### Remove the attribute uniquemember from the list of attribute-type ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--remove attribute-type:uniquemember', 'expectedRC' : 0 } '###### Delete an user entry###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=user02,%s' % (DIRECTORY_INSTANCE_SFX), } 'Check the new configuration is applied' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'The references to the delete user must be still present ' { 'returnString' : returnString , 'testString' : 'user02', 'expectedResult' : '1' } '###### Restore the attribute uniquemember from the list of attribute-type ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--add attribute-type:uniquemember', 'expectedRC' : 0 } '###### Remove the plugin-type attribute postoperationdelete ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--remove plugin-type:postoperationdelete', 'expectedRC' : 0 } { 'location' : STAF_REMOTE_HOSTNAME, 'dsHost' : DIRECTORY_INSTANCE_HOST, 'dsPort' : DIRECTORY_INSTANCE_PORT, 'dsBindDN' : DIRECTORY_INSTANCE_DN, 'dsBindPwd' : DIRECTORY_INSTANCE_PSWD, 'dsRestart' : ' ' } { 'noOfLoops' : 5 , 'noOfMilliSeconds' : 2000 } '###### Delete an user entry###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=user05,%s' % (DIRECTORY_INSTANCE_SFX), } 'Check the new configuration is applied' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'The references to the delete user must be still present ' { 'returnString' : returnString , 'testString' : 'user05', 'expectedResult' : '1' } '###### Add the plugin-type attribute postoperationdelete ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--add plugin-type:postoperationdelete', 'expectedRC' : 0 } '###### Disable the referential integrity plugin. ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--set enabled:false', 'expectedRC' : 0 } '###### Set the list of attribute-type ###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST, 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'subcommand' : 'set-plugin-prop' , 'objectType' : 'plugin-name' , 'objectName' : 'Referential Integrity', 'optionsString' : '--set attribute-type:uniquemember --set attribute-type:member', 'expectedRC' : 0 } '###### Delete an user entry###### ' ' ' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN , 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : 'cn=user07,%s' % (DIRECTORY_INSTANCE_SFX), } 'Check the new configuration is applied' { 'dsInstanceHost' : DIRECTORY_INSTANCE_HOST , 'dsInstancePort' : DIRECTORY_INSTANCE_PORT , 'dsInstanceDn' : DIRECTORY_INSTANCE_DN, 'dsInstancePswd' : DIRECTORY_INSTANCE_PSWD , 'dsBaseDN' : DIRECTORY_INSTANCE_SFX, 'dsFilter' : 'objectclass=groupOfUniqueNames' , 'attributes' : 'uniquemember', 'expectedRC' : 0 } 'The references to the delete user must be still present ' { 'returnString' : returnString , 'testString' : 'user07', 'expectedResult' : '1' }