LDAP server for Rust integration testing

This crate allow starting isolated OpenLDAP (slapd) server in integration tests.

OpenLDAP server is created in temporary directory and uses random free port.

Example

```rust use ldaptestserver::LdapServerBuilder;

[tokio::main]

async fn main() { let server = LdapServerBuilder::new("dc=planetexpress,dc=com") // add LDIF to database before LDAP server is started .add(1, "dn: dc=planetexpress,dc=com objectclass: dcObject objectclass: organization o: Planet Express dc: planetexpress

dn: ou=people,dc=planetexpress,dc=com objectClass: top objectClass: organizationalUnit description: Planet Express crew ou: people") // init databases and started LDAP server .run() .await;

    // Add entity to running LDAP server
    server.add(r##"dn: cn=Turanga Leela,ou=people,dc=planetexpress,dc=com

objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top cn: Turanga Leela sn: Turanga givenName: Leela"##).await; } ```

Dependencies

This crate depends on system commands that has to be available from $PATH - slapdd - slapd - ldapadd - ldapmodiy - ldapdelete

How to install slpad and ldap-utils on Ubuntu

sh DEBIAN_FRONTEND=noninteractive sudo apt-get install -y slapd ldap-utils openssl sudo systemctl stop slapd sudo systemctl disable slapd sudo ln -s /etc/apparmor.d/usr.sbin.slapd /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.slapd

License

Licensed under either of: