# 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 ldap_test_server::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: * Apache License, Version 2.0 ([LICENSE-APACHE](../LICENSE-APACHE)), or * MIT license ([LICENSE-MIT](../LICENSE-MIT))