Temporary slapd launcher for testing purposes
Project description
volatildap provides simple helpers for testing code against a LDAP database.
Its main features include:
Simple configuration: Don’t provide anything the LDAP server will start with sane defaults
Built-in cleanup: As soon as the test ends / the test process exits, the server is instantly removed
Cross-distribution setup: Automatically discover system paths for OpenLDAP binaries, schemas, etc.
Usage
import volatildap
class MyTests(unittest.TestCase):
@classmethod
def setUpClass(cls):
super(MyTests, cls).setUpClass()
cls._slapd = volatildap.LdapServer(suffix='dc=example,dc=org')
def setUp(self):
# Will start the server, or reset/restart it if already started from a previous test.
self._slapd.start()
def test_something(self):
conn = ldap.connection(self._slapd.uri)
# Do some tests
def test_with_data(self):
# Load some data
self._slapd.add({'ou=people': {'cn': [b'Users']}})
# Run the tests
The volatildap.LdapServer provides a few useful methods:
- start()
Start or restart the server. This will:
Clear all data, if any
Start the server if it’s not yet running
Populate the initial data
- stop()
Stop the server.
This will clean up all data and kill the proces.
- add(data)
Add some data, see the initial_data structure below.
- get(dn)
Retrieve an object by its distinguished name;
Returns a dictionary mapping an attribute to the list of its values, as bytes.
Raises KeyError if the distinguished name is unknown to the underlying database.
- reset()
Restore the server to its pristine, initial state. This includes loading the inital_data.
Configuration
The volatildap.LdapServer class accepts a few parameters:
- suffix
The suffix to use for the LDAP tree
Default: dc=example,dc=org
- rootdn
The administrator account for the LDAP server
Default: cn=testadmin,dc=example,dc=org
- rootpw
The administrator password.
Default: A random value, available through LdapServer.rootpw
- schemas
List of schemas to load; can be either a simple name (e.g cosine.schema; looked up in openldap installation); or a path to a custom one.
Default: ['core.schema']
- initial_data
Dict mapping a distinguished name to a dict of attribute/values:
slapd(initial_data={ 'ou=people': { 'objectClass': ['organizationalUnit'], 'cn': ['People'], }, })
Note: When adding data, the suffix can be omitted on objects DNs.
Default: {}
- skip_missing_schemas
When loading schemas, this flag instructs volatildap to continue if some schemas can’t be found.
Default: False
- port
The port to use.
Default: An available TCP port on the system
- slapd_debug
The debug level for slapd; see slapd.conf
Default: 0
- max_server_startup_delay
The maximum delay allowed for server startup, in seconds.
Default: 30
- tls_config
A set of TLS certificate files for configuring the server. A valid set for localhost is provided as volatildap.LOCALHOST_TLS_CONFIG, but users may also provide their own:
tls_config = volatildap.TLSConfig( root=read(ca_path), chain=[ read(intermediate_path), ], certificate=read(certificate_path), key=read(key_path), )
Per-distribution specificities
- Ubuntu
Under Ubuntu, the default AppArmor policy does not allow slapd (the LDAP daemon) to read temporary folders. Users should update the /etc/apparmor.d/usr.sbin.slapd file and add /tmp/** rw there.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for volatildap-1.3.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9ef3ee7fcdf8d3ae1dd243e0a8c3892e404e4552caa60153fa0de97287bcfc6 |
|
MD5 | 42379b0c72eaf1dc8126c10f7dba16aa |
|
BLAKE2b-256 | a83c980994abfce5c138a554be3042a4d3e137fc55cf1ce8f5ec761508299092 |