diff --git a/roles/mail_server/tests/test_backup.py b/roles/mail_server/tests/test_backup.py new file mode 100644 index 0000000000000000000000000000000000000000..9b27b649c348b7887d267f4fa2562593b9bb9037 --- /dev/null +++ b/roles/mail_server/tests/test_backup.py @@ -0,0 +1,43 @@ +import testinfra.utils.ansible_runner + +testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( + '.molecule/ansible_inventory').get_hosts('parameters-optional') + + +def test_backup(Command, File, Sudo): + """ + Tests if mail directory is correctly backed-up. + """ + + # Deliver two mails in order to make sure the directory structure is + # created. + send = Command('swaks --suppress-data --to john.doe@domain1 --server localhost') + assert send.rc == 0 + send = Command('swaks --suppress-data --to jane.doe@domain2 --server localhost') + assert send.rc == 0 + + with Sudo(): + + # Remove restore directory in order to make sure restore has worked + # correctly. + Command("rm -rf /root/restore") + + backup_run = Command('duply main backup') + assert backup_run.rc == 0 + + restore_run = Command('duply main restore /root/restore') + assert restore_run.rc == 0 + + for directory_path in ["/root/restore/var/virtmail/domain1", + "/root/restore/var/virtmail/domain1/john.doe", + "/root/restore/var/virtmail/domain1/john.doe/Maildir", + "/root/restore/var/virtmail/domain2", + "/root/restore/var/virtmail/domain2/jane.doe", + "/root/restore/var/virtmail/domain2/jane.doe/Maildir"]: + + directory = File(directory_path) + + assert directory.is_directory + assert directory.user == "virtmail" + assert directory.group == "virtmail" + assert directory.mode == 0o700