try: ldap_conn.simple_bind_s(ldap_url.who or '', ldap_url.cred or '') except ldap.INVALID_CREDENTIALS as e: print('Simple bind failed:', str(e)) sys.exit(1) try: msg_id = ldap_conn.search_ext( ldap_url.dn, ldap_url.scope, filterstr=ldap_url.filterstr or '(objectClass=*)', attrlist=['1.1'], timeout=SEARCH_TIMEOUT, serverctrls=[SearchNoOpControl(criticality=True)], ) _, _, _, search_response_ctrls = ldap_conn.result3(msg_id, all=1, timeout=SEARCH_TIMEOUT) except LDAPLimitErrors as e: ldap_conn.abandon(msg_id) sys.exit(1) noop_srch_ctrl = [ c for c in search_response_ctrls if c.controlType == SearchNoOpControl.controlType ][0] print('Number of search results: %d' % noop_srch_ctrl.numSearchResults) print('Number of search continuations: %d' %
from slapdtest import SlapdTestCase, requires_tls import ldap from ldap.controls import RequestControlTuples from ldap.controls.pagedresults import SimplePagedResultsControl from ldap.controls.openldap import SearchNoOpControl from ldap.ldapobject import SimpleLDAPObject SENTINEL = object() TEST_CTRL = RequestControlTuples([ # with BER data SimplePagedResultsControl(criticality=0, size=5, cookie=b'cookie'), # value-less SearchNoOpControl(criticality=1), ]) TEST_CTRL_EXPECTED = [ TEST_CTRL[0], # get_option returns empty bytes (TEST_CTRL[1][0], TEST_CTRL[1][1], b''), ] class BaseTestOptions: """Common tests for getting/setting options Used in subclasses below """ def get_option(self, option): raise NotImplementedError()