Feature: Writing tests scenarios with short living LDAP server It's common for bigger systems to synchronize with LDAP server for users, groups or accounts lists. This crate allow starting isolated LDAP server (openldap) in temporary directory and on a free TCP port, so developers can use it to creating automated tests. Application - tested code LDAP Server - temporary LDAP server started on random port LDIF - LDAP Data Interchange Format, format used for updating LDAP server (like SQL for postgres). Rule: Application can login to LDAP server Background: Given Created LDAP database And LDAP database initialized with empty Organizational Unit (ou) named 'people' And LDAP server is started Scenario: Applications successfully login with root dn user When Application tries to login to LDAP server Then Successfully logged Scenario: Applications failed to login with invalid password When Application simple binds to server with invalid password Then Got error 'invalidCredentials' Rule: Application can add schema server Background: Given Created LDAP database And LDAP database initialized with empty Organizational Unit (ou) named 'people' Scenario: Application can add Active Directory compatibility layer for attribute sAMAccountName When Application adds LDIF to LDAP database with AD compatibility layer Then Application can add person with filled sAMAccountName attribute Rule: Application can modify LDAP database while LDAP is running Background: Given Created LDAP database And LDAP database initialized with empty Organizational Unit (ou) named 'people' And LDAP server is started Given Application added person 'mk' to OU 'people' with LDIF Given Application added person 'mpa' to OU 'people' with LDIF Scenario: Applications can add LDAP server with LDIF Given Application added person 'ru' to OU 'people' with LDIF When Application queries LDAP server with '(objectClass=inetorgperson)' Then There is 3 result(s) Scenario: Applications can modify LDAP server with LDIF Given Application updated person 'mk' in OU 'people' with displayName 'kaka' with LDIF When Application queries LDAP server with '(&(objectClass=inetorgperson)(displayName=kaka))' Then There is 1 result(s) Scenario: Applications can delete LDAP server with LDIF Given Application deleted person 'mk' in OU 'people' with LDIF When Application queries LDAP server with '(objectClass=inetorgperson)' Then There is 1 result(s)