diff --git a/roles/ldap_server/molecule/default/tests/test_default.py b/roles/ldap_server/molecule/default/tests/test_default.py index daee18588aeaa2412ab8962af2bea20764ad8bc6..4b95c6dc7ba4af12d35cc8e9e9b7fb4022d3a6f7 100644 --- a/roles/ldap_server/molecule/default/tests/test_default.py +++ b/roles/ldap_server/molecule/default/tests/test_default.py @@ -2,6 +2,8 @@ import os import testinfra.utils.ansible_runner +from helpers import parse_ldif + testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-*') @@ -13,7 +15,7 @@ def test_installed_packages(host): """ assert host.package('slapd').is_installed - assert host.package('python-ldap').is_installed + assert host.package('python3-pyldap').is_installed def test_ldap_user_group(host): @@ -111,20 +113,25 @@ def test_basic_directory_structure(host): Tests if the base LDAP directory structure has been set-up correctly. """ - with host.sudo(): - - ous = ["people", "groups", "services"] - - for ou in ous: + expected_entries = parse_ldif(""" +dn: ou=people,dc=local +objectClass: organizationalUnit +ou: people - entry = host.run('ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -s base -b ou=%s,dc=local' % ou) +dn: ou=groups,dc=local +objectClass: organizationalUnit +ou: groups - assert entry.rc == 0 - assert entry.stdout == """dn: ou=%(ou)s,dc=local +dn: ou=services,dc=local objectClass: organizationalUnit -ou: %(ou)s +ou: services +""") -""" % {'ou': ou} + entry = host.run("ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -b dc=local " + "'(|(entrydn=ou=people,dc=local)(entrydn=ou=groups,dc=local)(entrydn=ou=services,dc=local))'") + + assert entry.rc == 0 + assert parse_ldif(entry.stdout) == expected_entries def test_mail_service_entries(host): @@ -134,29 +141,23 @@ def test_mail_service_entries(host): with host.sudo(): - entry = host.run('ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -s base -b ou=mail,ou=services,dc=local') - assert entry.rc == 0 - assert entry.stdout == """dn: ou=mail,ou=services,dc=local + expected_entries = parse_ldif(""" +dn: ou=mail,ou=services,dc=local objectClass: organizationalUnit ou: mail -""" +dn: ou=aliases,ou=mail,ou=services,dc=local +objectClass: organizationalUnit +ou: aliases - entry = host.run('ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -s base -b ou=domains,ou=mail,ou=services,dc=local') - assert entry.rc == 0 - assert entry.stdout == """dn: ou=domains,ou=mail,ou=services,dc=local +dn: ou=domains,ou=mail,ou=services,dc=local objectClass: organizationalUnit ou: domains +""") -""" - - entry = host.run('ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -s base -b ou=aliases,ou=mail,ou=services,dc=local') + entry = host.run('ldapsearch -H ldapi:/// -Q -LLL -Y EXTERNAL -b ou=mail,ou=services,dc=local') assert entry.rc == 0 - assert entry.stdout == """dn: ou=aliases,ou=mail,ou=services,dc=local -objectClass: organizationalUnit -ou: aliases - -""" + assert parse_ldif(entry.stdout) == expected_entries def test_firewall_configuration_file(host):