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"