@@ -213,6 +213,7 @@ def _find_commands(self):
213213 self .PATH_LDAPADD = self ._find_command ("ldapadd" )
214214 self .PATH_LDAPDELETE = self ._find_command ("ldapdelete" )
215215 self .PATH_LDAPMODIFY = self ._find_command ("ldapmodify" )
216+ self .PATH_LDAPSEARCH = self ._find_command ("ldapsearch" )
216217 self .PATH_LDAPWHOAMI = self ._find_command ("ldapwhoami" )
217218 self .PATH_SLAPADD = self ._find_command ("slapadd" )
218219 self .PATH_SLAPCAT = self ._find_command ("slapcat" )
@@ -558,6 +559,27 @@ def ldapdelete(self, dn, recursive=False, extra_args=None, expected=0):
558559 self .PATH_LDAPDELETE , extra_args = extra_args , expected = expected
559560 )
560561
562+ def ldapsearch (self , filter , searchbase = None , extra_args = None , expected = 0 ):
563+ """
564+ Runs search on this slapd instance
565+
566+ :param filter: The search filter.
567+ :param base: The starting point for the search.
568+ :param extra_args: Extra argument to pass to *ldapdelete*.
569+ :param expected: Expected return code. Defaults to `0`.
570+ :type expected: An integer or a list of integers
571+
572+ :return: A :class:`subprocess.CompletedProcess` with the *ldapdelete* execution data.
573+ """
574+ if extra_args is None :
575+ extra_args = []
576+ if searchbase :
577+ extra_args .extend (["-b" , searchbase ])
578+ extra_args .append (filter )
579+ return self ._cli_popen (
580+ self .PATH_LDAPSEARCH , extra_args = extra_args , expected = expected
581+ )
582+
561583 def slapadd (self , ldif , extra_args = None , expected = 0 ):
562584 """
563585 Runs slapadd on this slapd instance, passing it the ldif content
0 commit comments