diff --git a/CHANGES.rst b/CHANGES.rst index a867f9b..a750378 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_, and this project adheres to `Semantic Versioning `_. +[0.1.1] - 2021-11-24 +==================== + +Added +***** + +- Added `ldapsearch` command. :pr:`4` + [0.1.0] - 2021-04-02 ==================== diff --git a/slapd/__init__.py b/slapd/__init__.py index 9b20d8d..b5ec1f9 100644 --- a/slapd/__init__.py +++ b/slapd/__init__.py @@ -213,6 +213,7 @@ def _find_commands(self): self.PATH_LDAPADD = self._find_command("ldapadd") self.PATH_LDAPDELETE = self._find_command("ldapdelete") self.PATH_LDAPMODIFY = self._find_command("ldapmodify") + self.PATH_LDAPSEARCH = self._find_command("ldapsearch") self.PATH_LDAPWHOAMI = self._find_command("ldapwhoami") self.PATH_SLAPADD = self._find_command("slapadd") self.PATH_SLAPCAT = self._find_command("slapcat") @@ -558,6 +559,27 @@ def ldapdelete(self, dn, recursive=False, extra_args=None, expected=0): self.PATH_LDAPDELETE, extra_args=extra_args, expected=expected ) + def ldapsearch(self, filter, searchbase=None, extra_args=None, expected=0): + """ + Runs search on this slapd instance + + :param filter: The search filter. + :param base: The starting point for the search. + :param extra_args: Extra argument to pass to *ldapdelete*. + :param expected: Expected return code. Defaults to `0`. + :type expected: An integer or a list of integers + + :return: A :class:`subprocess.CompletedProcess` with the *ldapdelete* execution data. + """ + if extra_args is None: + extra_args = [] + if searchbase: + extra_args.extend(["-b", searchbase]) + extra_args.append(filter) + return self._cli_popen( + self.PATH_LDAPSEARCH, extra_args=extra_args, expected=expected + ) + def slapadd(self, ldif, extra_args=None, expected=0): """ Runs slapadd on this slapd instance, passing it the ldif content diff --git a/tests/test_slapdobject.py b/tests/test_slapdobject.py index b0dbd71..0641d38 100644 --- a/tests/test_slapdobject.py +++ b/tests/test_slapdobject.py @@ -33,6 +33,8 @@ def test_commands(): "dn:cn=manager,dc=slapd-test,dc=python-ldap,dc=org\n" == server.ldapwhoami().stdout.decode("utf-8") ) + server.ldapsearch("ou=home", "dc=slapd-test,dc=python-ldap,dc=org", expected=32) + ldif = ( "dn: dc=slapd-test,dc=python-ldap,dc=org\n" "objectClass: dcObject\n" @@ -55,6 +57,8 @@ def test_commands(): in server.slapcat().stdout.decode("utf-8") ) + server.ldapsearch("ou=home", "dc=slapd-test,dc=python-ldap,dc=org") + ldif = ( "dn: ou=home,dc=slapd-test,dc=python-ldap,dc=org\n" "changetype: modify\n"