import os import testinfra.utils.ansible_runner testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('parameters-optional') def test_database_dump_directory(host): """ Tests configuration of the directory where database dumps are stored prior to running backup. """ with host.sudo(): directory = host.file('/srv/backup') assert directory.is_directory assert directory.user == 'root' assert directory.group == 'root' assert directory.mode == 0o700 def test_database_dump_script(host): """ Tests if database dump script is deployed correctly. """ with host.sudo(): script = host.file('/etc/duply/main/pre.d/ldapdump.sh') assert script.is_file assert script.user == 'root' assert script.group == 'root' assert script.mode == 0o700 def test_backup(host): """ Tests if LDAP directory is correctly backed-up. """ with host.sudo(): # Remove restore directory in order to make sure restore has worked # correctly. host.run("rm -rf /root/restore") backup_run = host.run('duply main backup') assert backup_run.rc == 0 database_dump = host.file('/srv/backup/slapd.bak') assert database_dump.is_file assert 'dn: dc=local' in database_dump.content_string restore_run = host.run('duply main restore /root/restore') assert restore_run.rc == 0 restored_database_dump = host.file('/root/restore/srv/backup/slapd.bak') assert restored_database_dump.is_file assert restored_database_dump.content_string == database_dump.content_string