From 329da17b1170028faa64e0b0c5fbd9b71d120444 Mon Sep 17 00:00:00 2001
From: Gary Williams <gary.williams@forgerock.com>
Date: Wed, 01 Jun 2011 14:35:41 +0000
Subject: [PATCH] Add test library for OpenDJ SDK common functions
---
opendj-sdk/opends/tests/staf-tests/shared/functions/sdk.xml | 172 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 172 insertions(+), 0 deletions(-)
diff --git a/opendj-sdk/opends/tests/staf-tests/shared/functions/sdk.xml b/opendj-sdk/opends/tests/staf-tests/shared/functions/sdk.xml
new file mode 100644
index 0000000..acd729d
--- /dev/null
+++ b/opendj-sdk/opends/tests/staf-tests/shared/functions/sdk.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE stax SYSTEM "../stax.dtd">
+<!--
+ ! CDDL HEADER START
+ !
+ ! The contents of this file are subject to the terms of the
+ ! Common Development and Distribution License, Version 1.0 only
+ ! (the "License"). You may not use this file except in compliance
+ ! with the License.
+ !
+ ! You can obtain a copy of the license at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ ! or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ ! See the License for the specific language governing permissions
+ ! and limitations under the License.
+ !
+ ! When distributing Covered Code, include this CDDL HEADER in each
+ ! file and include the License file at
+ ! trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable,
+ ! add the following below this CDDL HEADER, with the fields enclosed
+ ! by brackets "[]" replaced with your own identifying information:
+ ! Portions Copyright [yyyy] [name of copyright owner]
+ !
+ ! CDDL HEADER END
+ !
+ ! Copyright 2011 ForgeRock AS
+ ! -->
+<stax>
+ <!-- SDK ldapsearch Function -->
+ <function name="SDKldapSearch">
+ <function-prolog>
+ This function performs an ldapsearch using the SDK java API
+ </function-prolog>
+ <function-map-args>
+ <function-arg-def name="dsInstanceHost" type="optional">
+ <function-arg-description>
+ Directory server hostname or IP address
+ </function-arg-description>
+ <function-arg-property name="type" value="hostname"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePort" type="optional">
+ <function-arg-description>
+ Directory server port number
+ </function-arg-description>
+ <function-arg-property name="type" value="Port number"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstanceDn" type="optional">
+ <function-arg-description>
+ Bind DN
+ </function-arg-description>
+ <function-arg-property name="type" value="DN"/>
+ </function-arg-def>
+ <function-arg-def name="dsInstancePswd" type="optional">
+ <function-arg-description>
+ Bind password
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsScope" type="optional">
+ <function-arg-description>
+ The scope of the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ <function-arg-def name="dsBaseDN" type="optional">
+ <function-arg-description>
+ The baseDN for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="dn"/>
+ </function-arg-def>
+ <function-arg-def name="dsFilter" type="optional">
+ <function-arg-description>
+ The filter for the search operation
+ </function-arg-description>
+ <function-arg-property name="type" value="filter"/>
+ </function-arg-def>
+ <function-arg-def name="dsAttributes" type="optional">
+ <function-arg-description>
+ Only return these attributes
+ </function-arg-description>
+ <function-arg-property name="type" value="string"/>
+ </function-arg-def>
+ </function-map-args>
+
+ <sequence>
+
+ <!-- Build the Command -->
+ <script>
+ from org.forgerock.opendj.ldap import *
+ from org.forgerock.opendj.ldap.responses import *
+ from org.forgerock.opendj.ldif import *
+
+ myHost=String(dsInstanceHost)
+ myPort=int(dsInstancePort)
+ myBaseDn=String(dsBaseDN)
+ myDn=String(dsInstanceDn)
+ myPassword=String(dsInstancePswd).toCharArray()
+
+ if dsScope == 'base':
+ myScope = SearchScope.BASE_OBJECT
+ elif dsScope == 'one':
+ myScope = SearchScope.SINGLE_LEVEL
+ elif dsScope == 'sub':
+ myScope = SearchScope.WHOLE_SUBTREE
+ else:
+ myScope = SearchScope.WHOLE_SUBTREE
+
+ if dsFilter:
+ myFilter = dsFilter
+ else:
+ myFilter = '(objectClass=*)'
+
+ if dsAttributes:
+ myAttrs = dsAttributes
+ else:
+ myAttrs = []
+
+ writer = LDIFEntryWriter(System.out)
+ factory = LDAPConnectionFactory(myHost,myPort)
+ connection = None
+
+ try:
+ try:
+ connection = factory.getConnection()
+
+ connection.bind(myDn, myPassword)
+
+ reader = connection.search(myBaseDn, myScope, myFilter, myAttrs)
+
+ #TODO: handle search result references
+ #TODO: not really a need to use writer to write to stdout
+ while (reader.hasNext()):
+ if not reader.isReference():
+ entry = reader.readEntry()
+ writer.writeComment("Search result entry: %s" % entry.getName().toString())
+ writer.writeEntry(entry)
+ else:
+ ref = reader.readReference()
+ writer.writeComment("Search result reference: %s " % ref.getURIs().toString())
+
+ writer.flush()
+
+ except ErrorResultException, e:
+ System.err.println(e.getMessage())
+ System.exit(e.getResult().getResultCode().intValue())
+
+ except ErrorResultIOException, e:
+ System.err.println(e.getMessage())
+ System.exit(e.getCause().getResult().getResultCode().intValue())
+
+ except InterruptedException, e:
+ System.err.println(e.getMessage())
+ System.exit(ResultCode.CLIENT_SIDE_USER_CANCELLED.intValue())
+
+ except IOException, e:
+ System.err.println(e.getMessage())
+ System.exit(ResultCode.CLIENT_SIDE_LOCAL_ERROR.intValue())
+
+ finally:
+ connection.close()
+
+ SDKResult = [[0,'%s' % entry.getAllAttributes().toString()]]
+ </script>
+ <message>
+ 'Result = %s' % entry.getAllAttributes().toString()
+ </message>
+ <return>
+ SDKResult
+ </return>
+ </sequence>
+ </function>
+</stax>
\ No newline at end of file
--
Gitblit v1.10.0